[英]C pointer's declaration confusion
这两个在C中的声明有什么区别?
int (*p)(char (*a)[]);
int *p(char (*a)[]);
对于int (*p)(char (*a)[]);
:
(*p)(char (*a)[])
是一个int
。 (*p)
是一个函数,它返回一个int
并采用char (*a)[]
类型的参数。 (有关后面的更多信息。) *p
是相同的函数。 p
是该函数的指针。 char (*a)[]
, (*a)[]
是char
。 (*a)
是char
数组,其大小未知。 *a
是相同的数组。 a
是指向大小未知的char
数组的指针。 p
是指向返回int
的函数的指针,该函数采用一个参数,该参数是指向大小未知的char
数组的指针。 对于int *p(char (*a)[]);
:
*p(char (*a)[])
是一个int
。 p(char (*a)[])
是一个指向int
的指针。 p
是一个函数,它返回一个指向int
的指针,并采用char (*a)[]
类型的参数。 char
数组的指针。 p
是一个函数,它返回一个指向int
的指针,并接受一个参数,该参数是一个指向大小未知的char
数组的指针。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.