在C编程中定义并初始化此数据类型

Iam*_*ent 3 c typedef function-pointers

有人能告诉我这是否是这个数据类型的正确定义,以及我初始化它的方式是否正确?

typedef int const * (* const DataOne)(const int *);
Run Code Online (Sandbox Code Playgroud)

=>上面的数据类型显示了一个指向函数的常量指针,该函数将指向常量的指针int作为参数并返回指向常量的指针int.

=>初始化和声明: DataOne = &myFunction(7);

Kla*_*äck 8

typedef int const * (* const DataOne)(const int *);
Run Code Online (Sandbox Code Playgroud)

=>上面的数据类型显示了一个指向函数的常量指针,该函数将指向常量int的指针作为参数并返回指向常量int的指针.

正确.

=>初始化和声明:DataOne =&myFunction(7);

不正确.函数指针赋值不能在函数调用上进行(即,您不能为参数提供任何实际参数).此外,DataOne是一种类型,而不是变量.所以,它应该看起来像这样:

int const * myFunction(const int*);
DataOne myPointer = myFunction;  // &myFunction would also work
Run Code Online (Sandbox Code Playgroud)

声明没有类型的等效函数指针:

int const * myFunction(const int*);
int const * (* const functionPointer)(const int *) = myFunction;
Run Code Online (Sandbox Code Playgroud)

  • @IamTrent使用`&myFunction`,你明确地想要函数的地址,但是单独使用函数会使它成为函数的指针.所以两者都是等价的. (2认同)