关于指针的问题
int a[] = {1,2,3,4}; cout << sizeof( *a) << endl; cout << sizeof( a) << endl; cout << sizeof( &a) << endl;使用g++编译会输出4168不知道有没有人可以解答一下为什么sizeof( &a) 是 8 呢?谢谢
专业解释:32位系统下,应该是4、16、4;最后一个&a 肯定是个指针,指针在32位系统里也肯定是占4个字节;
你的输出8,应该是64系统,你试试int i = 0;int * p = &i; cout << sizeof(p); 可能跟你的编译器有关吧 应该不会是这样才对啊~! 我的输出时4,16,16 第一个是类型的大小,第二个是数组的大小,第三个呢?是地址的大小么?第三个会随着数组元素的个数变化 int a[] = {1,2,3,4};
cout << sizeof( *a) << endl;
cout << sizeof( a) << endl;
cout << sizeof( &a) << endl;
sizeof(*a)是1这个整数代表的字节数->X86是4字节。。
sizeof(a)是a这个数组代表的字节数->4个整数。。一个4字节。。。16字节
sizeof(&a)->&a是取数组a的首地址。。。和sizeof(a)是一个意思。。。也就是16了
综上所述。。。后两个大小是一样的。。。。。楼主你又在调戏我们了 本帖最后由 向往青莲 于 2013-12-31 15:42 编辑
向往青莲 发表于 2013-12-19 17:43 static/image/common/back.gif
int a[] = {1,2,3,4};
cout
刚才发现。。。。。在不同编译器下第三个值不一样。。。。我勒个去。。我也被骗了。。。。。。
页:
[1]