C 编程中的这些代码行是否相同

Pis*_*ers 4 c

这两行代码相同吗?

第 1 行:

void (**foo)(int)
Run Code Online (Sandbox Code Playgroud)

2号线

void *(*foo)(int)
Run Code Online (Sandbox Code Playgroud)

请帮助我了解正在发生的事情。

Joh*_*ode 5

他们不一样。

void (**foo)(int);
Run Code Online (Sandbox Code Playgroud)

foo是一个指向带有int参数并返回的函数的指针void

void *(*foo)(int):
Run Code Online (Sandbox Code Playgroud)

foo是一个指向函数的指针,该函数接受一个int参数并返回一个指向 的指针void

后缀运算符如()[]具有比一元更高的优先级*,因此

T *a[N];    // a is an array of pointer to T
T (*a)[N];  // a is a pointer to an array of T

T *f();     // f is a function returning pointer to T
T (*f)();   // f is a pointer to a function returning T
Run Code Online (Sandbox Code Playgroud)