maca 发表于 2013-12-16 20:58:00

关于指针的问题

    int a[] = {1,2,3,4};    cout << sizeof( *a) << endl;    cout << sizeof( a) << endl;    cout << sizeof( &a) << endl;
使用g++编译会输出4168不知道有没有人可以解答一下为什么sizeof( &a) 是 8 呢?谢谢

scottly 发表于 2013-12-16 20:58:01

专业解释:32位系统下,应该是4、16、4;最后一个&a 肯定是个指针,指针在32位系统里也肯定是占4个字节;
你的输出8,应该是64系统,你试试int i = 0;int * p = &i; cout << sizeof(p);

猪猪BBUn咕咕 发表于 2013-12-16 21:04:40

可能跟你的编译器有关吧

猪猪BBUn咕咕 发表于 2013-12-16 21:05:32

应该不会是这样才对啊~!

maomingkun 发表于 2013-12-16 21:10:32

我的输出时4,16,16   第一个是类型的大小,第二个是数组的大小,第三个呢?是地址的大小么?第三个会随着数组元素的个数变化

向往青莲 发表于 2013-12-19 17:43:11

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:26:12

本帖最后由 向往青莲 于 2013-12-31 15:42 编辑

向往青莲 发表于 2013-12-19 17:43 static/image/common/back.gif
int a[] = {1,2,3,4};
    cout
刚才发现。。。。。在不同编译器下第三个值不一样。。。。我勒个去。。我也被骗了。。。。。。
页: [1]
查看完整版本: 关于指针的问题