一道C语言题(不简单)

chenyufei1013 2007-10-16 07:54:01
程序如下:
#include <iostream.h>

int a=0;
int b=1;

void main()
{
}

问:变量a,b的地址连续吗?为什么?
C编译器是如何分配a,b地址的?
...全文
367 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_zyb 2007-10-17
  • 打赏
  • 举报
回复
这是因为有的编译器把初始化为0的全局变量放在.bss段,而不是.data段,所以地址不连续。

如果a初始化为非0的数字,比如int a = 2;那么a,b的地址一般就是连续的了。
_石头_ 2007-10-17
  • 打赏
  • 举报
回复
#include <iostream.h >

int a=0; //全局变量 内存地址由编译器分配
int b=1;

void main()
{
int aa=0; //局部变量 分配在栈内的连续空间里
int bb=1;

}
hjzwl1018 2007-10-16
  • 打赏
  • 举报
回复
的确不连续...为什么呢?
fengdream 2007-10-16
  • 打赏
  • 举报
回复
经测试
内存分别为
0x00422d8c和0x004237a4
可见内存不是连续的。
xb_crazyman 2007-10-16
  • 打赏
  • 举报
回复
是连续的吗?
随机分配的吧
zhaoyue12365 2007-10-16
  • 打赏
  • 举报
回复
这个不好说,看编译器
zhouhong0801 2007-10-16
  • 打赏
  • 举报
回复
一半都是连续的吧
ochinchina 2007-10-16
  • 打赏
  • 举报
回复
你的问题依赖于编译器,不过一般都是连续的

70,032

社区成员

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

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