c/c++语言开发共享char指针作为函数参数

我有一个具有char *参数的函数A. 在A() ,我使用sizeof来计算buf的大小,但我在i686机器中得到8,在armel机器上得到4。 为什么不是128? 摘录如下:

 void A(char *p) { printf("sizeof p is %dn", sizeof(p)); } int main(void) { char buf[128]; printf("sizeof buf is %dn", sizeof(buf)); A(buf); return 0; } 

结果是这样的(在i686中):

 sizeof buf is 128 sizeof p is 8 

请告诉我原因。

    因为您打印指针的大小,而不是它指向的大小。 数组衰减到指针,一旦你将它传递给一个函数,你就会有一个指针,并且会丢失原始数组的所有大小信息。

    sizeof(buf)128*sizeof(buf[0]) ,sizeof(p)只是sizeof(char*)

    当传入函数时,它会衰减到具有原始大小(4或8)大小的普通指针。

    使用strlen()因为它在末尾检查“null”并且如果数组已经初始化则给出正确的大小。

      以上就是c/c++开发分享char指针作为函数参数相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/523322.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐