c语言中以下类型的指针声明之间的区别是什么?
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
如果添加一些例子以便正确解释,那将非常有用。
答案 0 :(得分:1)
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
s数组的指针,并返回指向int
的指针。例如:
int *extract_first(int (*a)[3]) {
return (*a);
}
p = &extract_first;
答案 1 :(得分:1)
第一个是fa函数声明,它接受一个int并返回一个指向int的指针, 第二个是指向函数的指针,它接受一个int并返回一个int 如果第三个应该是:
int * (*p) (int(*a)[]);
它是一个指向函数的指针,它指向一个指向数组的int并返回一个指向int的指针。