sizeof(数组名)和sizeof(指针)

在作这道题时:ios

32位环境下,int *p=new int[10];请问sizeof(p)的值为()
A、4              B、10              C、40               D、8数组

我觉得正确答案为C,int类型为32位,占四个字节,10个天然就是40了,结果正确答案为A,只是指针p占的空间。函数

所以写段代码测试一下:测试

 1 #include<iostream>
 2 using namespace std;
 3 void fun(int P[])//P这里做为指针使用
 4 {
 5 cout<<"在函数中"<<sizeof(P)<<endl;
 6 }
 7 int main()
 8 {
 9 int A[10];
10 int* B=new int[10];
11 cout<<"数组名"<<sizeof(A)<<endl;
12 cout<<"指针"<<sizeof(B)<<endl;
13 fun(A);
14 }

或者spa

 1 #include<iostream>
 2 using namespace std;
 3 void fun(int *P)  4 {
 5     cout<<"在函数中"<<sizeof(P)<<endl;
 6 }
 7 int main()
 8 {
 9     int A[10];
10     int* B=new int[10];
11     cout<<"数组名"<<sizeof(A)<<endl;
12     cout<<"指针"<<sizeof(B)<<endl;
13     fun(A);
14 }

结果输出: .net

数组名40
指针4
在函数中4指针

 

因而可知,数组名并非彻底等同于指针。虽然它们均可以经过指针方式访问数组。code

可是数组在做为函数参数传递过程当中,会退化成指针。这也是为何指针做为参数传递时,常常要一个长度。(wsj注:指针做为形参时,一般再加上一个形参——这个指针的长度)blog

转自:http://blog.csdn.net/kangroger/article/details/20653255io

相关文章
相关标签/搜索