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
的地址。