中易网

int a[100];sizeof(&a)

答案:3  悬赏:70  
解决时间 2021-04-07 22:05
int a[100];
printf(“%d %d %d %d\n”,sizeof(a),sizeof(&a),sizeof(a[0]),sizeof(&a[0]);
在VC6.0下运行,上面的结果是400,400,4,4。sizeof(a),sizeof(a[0]),sizeof(&a[0])我都明白是怎么一回事,这里只是拿出来做一个对比,让我不明白的就是为什么sizeof(&a)也是400,&a是整个数组的地址,它难道不应该是一个整型值,大小为4吗?

谢谢大家了,主要是到目前为止一直用的windows XP(win7很多地方不兼容以前的软件),目前很多教材也是用它,并且VS2008听说是付费的,在网上找不到免费版。
最佳答案
你好。VS2008下测试以下程序。
int a[100];
int i = sizeof(&a);
得到i等于4.请问是不是你那里弄错了。
全部回答
int a[100]:声明了一个有100个int类型元素的数组, 数组下标从0~99, 所以a是数组名, 代表数组的首地址, 也就是&a[0], sizeof(a)返回数组a在内存中所占的空间大小,以字节为单位, 也就是sizeof(a) = sizeof(int) * 100 = 4 * 100 = 400bytes a[100],这种写法是不对的, 数组的最大下标是99, a[100]已经超过了数组的最大长度, 最大是a[99], 所以说下sizeof(a[100]), 姑且假设a[100]是可以的, 则sizeof(a[100])表示求数组的第100个元素在内存中所占的字节数, 由于a是个int类型的数组, 它其中的每个元素都是int类型的, sizeof(a[100]) = sizeof(int), int类型在32位机器中的大小是4个字节, 所以sizeof(a[100]) = 4...
VC6.0是一个很老的编译器了,与标准C都有不少不兼容的地方,&a的类型是一个指向指针的指针,但还是属于一个指针,在32位机上指针是32位的,所以sizeof(&a)应该是4。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
大家有购买香芬洗护产品的吗?哪个品牌的好点
甲醇与什么反应能变成蓝色
新明锐1.6L 与 新明锐2.0MPI 的发动机 哪个好
整张牛皮20英尺有多少平方米
申请QQ号是不是必须和手机号码绑定
那可以找到关于马克思的视频
宁波5月份有什么看花的好地方
1970年,11月23日生日是几月几日,农历
地球自转引起的自然现象有?
from的同类词是什么?急求!!
记事本打不开 桌面上显示不出来 任务栏和桌面
鲜果园精品水果干果糖果超市怎么去啊,有知道
劳动法规定餐饮行业试用期七天算违法吗
工资上涨多少才能与CPI上涨速度持恒
小学班会主题有哪些
推荐资讯
梁家棚怎么去啊,有知道地址的么
谁有妖精的尾巴zero百度云资源
克莉丝汀021-245怎么去啊,有知道地址的么
现在真的可以零元注册公司吗
求一部男人肚子里有鬼的电影,不要鬼附身之类
百度为什么会收录测试网站?
青岛的车牌二手车在滨?州市邹平县能过户吗
小草青青赵喜鹊的母亲还有三婶是谁演的
生姜大葱熟汤能治感昌
飞利浦shb5250 支持iphone7吗? 为什么手机一
家常饸饹面地址在哪,我要去那里办事
是不是高职院校就可以报考统招专升本啊,我在
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?