首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组的引用的意义,该如何处理

2012-03-11 
数组的引用的意义int a[100]printf(sizeof(a)%d,sizeof(a))printf(sizeof(&a)%d,sizeof(&a))请问

数组的引用的意义
int a[100];
printf("sizeof(a)=%d",sizeof(a));
printf("sizeof(&a)=%d",sizeof(&a));

请问一下以上代码的打印结果是什么?
&a的实际意义是什么?在什么情况下会用到?

[解决办法]
c里面没有引用
[解决办法]
sizeof(a)=400
sizeof(&a)=400
[解决办法]

sizeof(&a)=400是错误的!
楼主在用VC6吧!

探讨

6楼和8楼的结果是正确的。
只是现在尚不明白sizeof(&a)=400的原因。

[解决办法]
探讨

6楼和8楼的结果是正确的。
只是现在尚不明白sizeof(&a)=400的原因。

[解决办法]
探讨

引用:

6楼和8楼的结果是正确的。
只是现在尚不明白sizeof(&a)=400的原因。

这个应该是跟编译器有关。
在linux下 gcc 编译后,sizeof(&a) 是 4,取的地址,此时,数组退化为地址。
在vc6.0下,sizeof(&a) 是400,数组没有退化。

[解决办法]
你可以看一下这个帖子。http://hi.chinaunix.net/?328728/viewspace-31459
[解决办法]
pascal 
400/4
CBC 400/400
TC2.0 200/200
[解决办法]
codeblock中的结果,是400和4,和编译器有关,再说了,第2个探讨感觉上没多大的意义,研究的过于狭窄了
[解决办法]
main()
{
int a[100];

printf('a=%d\n',a);
printf('&a=%d\n',&a);
printf('sizeof(a)=%d\n',sizeof(a));
printf('sizeof(&a)=%d\n',sizeof(&a));
}

vc 6.0 output:
a=1244656
&a=1244656
sizeof(a)=400
sizeof(&a)=400

所以在VC里面&a也是指向数组a的首地址,也就是&a也是指向数组a的指针,而不是指向数组a首地址的指针!
[解决办法]
不是和编译器有关!
sizeof(&a)=400是VC6的BUG了
VC6 BUG很多,当然不可否认VC6非常成功,现在也还有很多公司在使用
探讨

codeblock中的结果,是400和4,和编译器有关,再说了,第2个探讨感觉上没多大的意义,研究的过于狭窄了

热点排行