在主函数连续定义两个变量,它们在内存中分配的地址是连续的么

lantianhanerqiang 2012-03-24 10:15:59
在主函数连续定义两个变量,它们在内存中分配的地址是连续的么
...全文
467 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiyoulaoyuanjia 2012-03-24
  • 打赏
  • 举报
回复
没有规定!但是有些编译器就是这样子处理的,有些人还利用这种行为写了一些怪异的程序!但这些肯定都是未定义的行为!
qixing1115 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qixing1115 的回复:]
引用 1 楼 mingliang1212 的回复:
没规定.但是编译器可以连续.

试试就知道了
int a = 5;
int b = 6;
int *p = &a;
cout << &a << endl;
cout << &b << endl;
cout << "*p: " << *p << endl;
cout << "*p+1: " << *(p+……
[/Quote]

间隔两个,刚错了,不过红色部分为地址,两者之差为十进制:12;即12个字节,就像1和4中间间隔两个(2,3),差却是3
Kaile 2012-03-24
  • 打赏
  • 举报
回复
没有规定连续或不连续,属于未定义行为
qixing1115 2012-03-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mingliang1212 的回复:]
没规定.但是编译器可以连续.
[/Quote]
试试就知道了
int a = 5;
int b = 6;
int *p = &a;
cout << &a << endl;
cout << &b << endl;
cout << "*p: " << *p << endl;
cout << "*p+1: " << *(p+1) << endl;
cout << "*p-1: " << *(p-1) << endl;
cout << "*p-2: " << *(p-2) << endl;
cout << "*p-3: " << *(p-3) << endl;
输出结果为:
0012FF60
0012FF54

*p: 5
*p+1: -858993460
*p-1: -858993460
*p-2: -858993460
*p-3: 6
从结果看,中间间隔三个sizeof(int)

红色部分为地址,两者之差为十进制:12;即12个字节
iamnobody 2012-03-24
  • 打赏
  • 举报
回复
没规定.但是编译器可以连续.
Lactoferrin 2012-03-24
  • 打赏
  • 举报
回复
如果你不是写病毒之类的就不需要管这些
Lactoferrin 2012-03-24
  • 打赏
  • 举报
回复
没有规定!但是有些编译器就是这样子处理的,有些人还利用这种行为写了一些怪异的程序!但这些肯定都是未定义的行为!
wenhong609 2012-03-24
  • 打赏
  • 举报
回复
不重要吧,变量是否定义没什么影响!连不连续都是一样!!!

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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