标签:
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