【发布时间】:2022-01-08 21:42:12
【问题描述】:
int foo (int x) {
int (*d)(int *) = foo; //what is the meaning of this line?
...
}
这是我学校的一个老练习题,但我找不到解决方案。 是把变量初始化为函数吗?
【问题讨论】:
-
d 是一个指向函数的指针,该函数接受一个 int * 参数并返回 int。它被分配了 foo 的地址。这应该会发出警告。
-
表示函数指针类型的语法有点令人困惑。最令人困惑的部分是变量的名称(
d)不跟类型,而是嵌入其中。 -
如果是您学校的问题,您或他们都错过了课程中的某些内容。
-
cdecl 非常适合。
-
认为
foo的函数指针类型为int (*)(int)。int (*d)(int)只是将其命名为d。
标签: c initialization function-pointers declaration implicit-conversion