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听说是付费的,在网上找不到免费版。
int a[100];sizeof(&a)
答案:3 悬赏:70
解决时间 2021-04-07 22:05
- 提问者网友:挣扎重来
- 2021-04-07 01:12
最佳答案
- 二级知识专家网友:一场云烟
- 2021-04-07 02:09
你好。VS2008下测试以下程序。
int a[100];
int i = sizeof(&a);
得到i等于4.请问是不是你那里弄错了。
int a[100];
int i = sizeof(&a);
得到i等于4.请问是不是你那里弄错了。
全部回答
- 1楼网友:冷态度
- 2021-04-07 03:13
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...
- 2楼网友:你好陌生人
- 2021-04-07 03:03
VC6.0是一个很老的编译器了,与标准C都有不少不兼容的地方,&a的类型是一个指向指针的指针,但还是属于一个指针,在32位机上指针是32位的,所以sizeof(&a)应该是4。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯