c语言 - int (*d)(int *) = foo,这部分代码是做什么的?


int foo (int x) {
int (*d)(int *) = foo;  //what is the meaning of this line?
...
}

这是我学校的一个老练习题,但我找不到解决方案。 它是否将变量初始化为函数?

此记录

int (*d)(int *) = foo; 

是函数指针的声明,d到返回类型为int和一个类型为int *的参数的函数。此指针由函数foo的地址初始化(函数指示符隐式转换为指向它的指针)。

请注意,函数foo应该声明为

int foo (int *x) {

或者指针应该声明为类似

int (*d)(int ) = foo; 

本声明中另有规定

int (*d)(int *) = foo; 

存在使用的不兼容的指针类型。

据我所知,a声明与您的问题无关。int (*d)(int *)定义一个指针d指向一个函数,该函数接受int *并返回一个int= foo设置d等于foo的地址。

相关内容

最新更新