码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-10-11 23:03:09      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

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出来的数组;

 

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

标签:

原文地址:http://www.cnblogs.com/M-werewolf/p/4870127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!