C语言中以下类型的指针声明有什么区别?
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
如果添加一些示例以进行正确解释,将会非常有用。
最佳答案
int *p(int a);
我强烈怀疑这是一个指针声明。如果写得更好,您可能能够理解它是一个函数,它接受一个int
并返回一个指向int
的指针。
int (*p)(int a);
基本函数指针。 p
指向一个接受 int
并返回 int
的函数。例如:
int foo(int x) { return x+1; }
p = &foo;
<小时/>
最后一个有点复杂,因为它无效。括号内应该有一个数字。我认为它已更正(包括拼写错误)如下。
int *(*p)(int(*a)[3]);
它是一个函数指针,该函数接收一个指向 3 个 int
数组的指针,并返回一个指向 int
的指针。例如:
int *extract_first(int (*a)[3]) {
return (*a);
}
p = &extract_first;
关于c - 需要帮助理解c语言中的指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48032784/