这两行代码相同吗?
第 1 行:
void (**foo)(int)
Run Code Online (Sandbox Code Playgroud)
2号线
void *(*foo)(int)
Run Code Online (Sandbox Code Playgroud)
请帮助我了解正在发生的事情。
他们不一样。
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)