VC和gcc下sizeof(&a)得出的结果不一样

lihaicg 2010-09-02 08:38:16
int a[100];
在VC下面sizeof(&a);得出的结果是400;
而在gcc下得出的结果是4,这是为什么呢??
...全文
317 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sizeof用于测试类型,VC6.0不支持标准.谢谢..
sewinten 2010-09-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mymtom 的回复:]
珍惜生命远离VC6
不信的话你用VC6编译下面的程序试验一下!
一个字符都不要打错哦!

C/C++ code

#include <stdio.h>

int main(void)
{
/**打印*/
printf("Hello, world!\n");

/*返回**/
return 0;
}





引用 1 楼 l……
[/Quote]

试了下一跳
Rain208 2010-09-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 forevercoder 的回复:]
sizeof(类型) is right.
sizeof(变量)is not all right.
[/Quote]

whut_lcy 2010-09-04
  • 打赏
  • 举报
回复
按理说,一个数组传递给sizeof,自动降级为指针,在32位下sizeof永远是4才对
Jesusgospelnj 2010-09-04
  • 打赏
  • 举报
回复
同意6楼
ccnyou 2010-09-04
  • 打赏
  • 举报
回复
有什么编译器可以替换VC6的?VC7如何?我不要体积大得吓人的
luoqi 2010-09-03
  • 打赏
  • 举报
回复
楼上请说说,有什么不一样的?学习下
kostion 2010-09-03
  • 打赏
  • 举报
回复
没问题, vc建立cpp工程,就应该是400,c和c++的 ‘&’ 意义不一样
luoqi 2010-09-03
  • 打赏
  • 举报
回复
4是正确的,而400是因为VC对C++标准支持不够
Stone19840429 2010-09-03
  • 打赏
  • 举报
回复
看编译器怎么处理,VC按组处理了,GCC是按指针处理的...
cobra_chen 2010-09-03
  • 打赏
  • 举报
回复
该死的VC6.0
不要用了啦。
Joe_Yang 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 mymtom 的回复:]

珍惜生命远离VC6
不信的话你用VC6编译下面的程序试验一下!
一个字符都不要打错哦!
C/C++ code

#include <stdio.h>

int main(void)
{
/**打印*/
printf("Hello, world!\n");

/*返回**/
return 0;
}




引用 1 楼 lthyxy 的回复:

因为……
[/Quote]
所以不要用/**/这样的注释。
如果是块注释就用
#if 0
#endif
如果是行注释 就用//
hastings 2010-09-02
  • 打赏
  • 举报
回复
mymtom 2010-09-02
  • 打赏
  • 举报
回复
珍惜生命远离VC6
不信的话你用VC6编译下面的程序试验一下!
一个字符都不要打错哦!

#include <stdio.h>

int main(void)
{
/**打印*/
printf("Hello, world!\n");

/*返回**/
return 0;
}



[Quote=引用 1 楼 lthyxy 的回复:]

因为你该远离VC6.0
[/Quote]
十八道胡同 2010-09-02
  • 打赏
  • 举报
回复
编译器处理方式不一样
指针是4个字节
某某9 2010-09-02
  • 打赏
  • 举报
回复
都是4 啊
mymtom 2010-09-02
  • 打赏
  • 举报
回复
VC6错了!
&操作符返回的类型是指针。32位环境指针的大小就是4.
forevercoder 2010-09-02
  • 打赏
  • 举报
回复
sizeof(类型) is right.
sizeof(变量)is not all right.
feitianliuyun 2010-09-02
  • 打赏
  • 举报
回复
一个当数组处理了,一个当地址处理了(指针)

看实际用途吧。。。
昵称很不好取 2010-09-02
  • 打赏
  • 举报
回复
编译器对他们的处理不一样,以下代码在vs2010和codeblocks里测试下,结果如下:
	int a[100];
cout<<sizeof(&a)<<endl;
cout<<typeid(&a).name()<<endl;
/*
vs2010结果:
4
int (*)[100]

Codeblocks结果:
400
PA100_i

可见两者处理对待&a的方式有点不同

*/
加载更多回复(2)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧