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

时间:2014-11-17 09:01:25

标签: c function-pointers typedef

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

typedef int const * (* const DataOne)(const int *);

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

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

1 个答案:

答案 0 :(得分:8)

typedef int const * (* const DataOne)(const int *);
  

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

正确。

  

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

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

int const * myFunction(const int*);
DataOne myPointer = myFunction;  // &myFunction would also work

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

int const * myFunction(const int*);
int const * (* const functionPointer)(const int *) = myFunction;