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

int (*d)(int *) = foo, what does this part of the code do?

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

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

这条记录

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

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

注意函数 foo 应该声明为

int foo (int *x) {

或者指针应该声明为

int (*d)(int ) = foo; 

否则在此声明中

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

使用了不兼容的指针类型。

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