鱼C论坛

 找回密码
 立即注册
查看: 2389|回复: 6

关于指针的问题

[复制链接]
发表于 2013-12-16 20:58:00 | 显示全部楼层 |阅读模式
5鱼币
    int a[] = {1,2,3,4};
    cout << sizeof( *a) << endl;
    cout << sizeof( a) << endl;
    cout << sizeof( &a) << endl;

使用g++编译
会输出
4
16
8
不知道有没有人可以解答一下
为什么sizeof( &a) 是 8 呢
谢谢

最佳答案

查看完整内容

专业解释:32位系统下,应该是4、16、4;最后一个&a 肯定是个指针,指针在32位系统里也肯定是占4个字节; 你的输出8,应该是64系统,你试试 int i = 0; int * p = &i; cout
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-16 20:58:01 | 显示全部楼层
专业解释:32位系统下,应该是4、16、4;最后一个&a 肯定是个指针,指针在32位系统里也肯定是占4个字节;
你的输出8,应该是64系统,你试试  int i = 0;  int * p = &i; cout << sizeof(p);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-16 21:04:40 | 显示全部楼层
可能跟你的编译器有关吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-16 21:05:32 | 显示全部楼层
应该不会是这样才对啊~!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-16 21:10:32 | 显示全部楼层
我的输出时4,16,16   第一个是类型的大小,第二个是数组的大小,第三个呢?是地址的大小么?第三个会随着数组元素的个数变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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了
综上所述。。。后两个大小是一样的。。。。。楼主你又在调戏我们了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-31 15:26:12 | 显示全部楼层
本帖最后由 向往青莲 于 2013-12-31 15:42 编辑

刚才发现。。。。。在不同编译器下第三个值不一样。。。。我勒个去。。我也被骗了。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 07:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表