繁体   English   中英

C指针的声明混乱

[英]C pointer's declaration confusion

这两个在C中的声明有什么区别?

  1. int (*p)(char (*a)[]);

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM