C 中使用函数指针的正确语法

问题描述 投票:0回答:1

我已经阅读了有关函数指针语法的内容,但无法在我的代码中工作。 这个视频解释了语法是:

type func0(type0 arg0, ..., typen argn){

// do something

return a_thing;

那么在另一个函数中传递函数指针是:

type func1((*func0)(type0 arg0, ..., typen argn), another args){

//do something
func0(type0 arg0, ..., typen argn);

return a_thing;

但是后来,我读到了关于C 中的函数指针如何工作?的第一个答案,语法是:

type func1((*func0)(type0 arg0, ..., typen argn), another args){

//do something
(*func0)(type0 arg0, ..., typen argn);

return a_thing;

这是有道理的,因为您取消引用您正在传递的指针。最后,C 函数指针调用语法中的第一个答案解释了语法可以是:

&func
func
*func
**func

我不明白哪些信息是正确的。我有代码:

double *func1((*func0)(double), double *var){

double *temp = malloc(some_size);

for(int i = 0; i < some_cycles; ++i){
temp[i] = (*func)(var[i]);

return temp;

并抛出错误

a value of type "double *" cannot be assigned to an entity of type "double"

c function-pointers
1个回答
0
投票

但是后来,我读到了第一个关于 C 中函数指针如何做的答案 工作吗?,语法是:

type func1((*func0)(type0 arg0, ..., typen argn), another args){

//do something
(*func0)(type0 arg0, ..., typen argn);

return a_thing;
}

不,通过函数指针调用函数的语法无效。你想传递一些东西给它,而不是再次声明函数指针。

 func0(par1, ..., parn);

您也可以使用此表格

 (*func0)(par1, ..., parn);

因为它们是等价的。

© www.soinside.com 2019 - 2024. All rights reserved.