浅论C++数组传入方法后不能用sizeof计算到正确的数组大小

C++中我们经常会用到sizeof()来计算数组的大小

例如:

1 #include<iostream>
 2 using namespace std;
 3 
 4 void Length(int *p)
 5 {
 6     cout<<sizeof(p)<<"  "<<sizeof(int)<<endl;
 7 }
 8 
 9 int main()
10 {
11     int n;
12     int pirce[] = {0,1,5,8,9,10,17,17,20,24,30};
13 
14     for(int i=0; i< sizeof(pirce)/sizeof(int); i++)
15     {
16         cout<<pirce[i]<<" ";
17     }
18     cout<<endl;
19 
20     Length(pirce);
21 
22     return 0;
23 }

运行这段代码结果如下:

0 1 5 8 9 10 17 17 20 24 30

8 4

可以看出在main方法中sizeof(pirce)/sizeof(int)是正确的它打印出来数组中所以的元素

在Length()方法中传入数组就发现sizeof(p)/sizeof(int)的结果是2

为什么???

这是因为数组传入方法中的是数组的首地址,所以它会变成一个指针,因此就不能用sizeof计算出数组的大小。

Ps:这里的数组是静态数组,不是用new出来的数组;

原文链接: https://www.cnblogs.com/M-werewolf/p/4870127.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/222925

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:54
下一篇 2023年2月13日 上午11:54

相关推荐