那我也来问个,局部变量作用域~~~

paidfighting 2008-03-16 03:10:20

int main()
{
for (int i = 0; i < 10; i ++)
{
int x = i;
}

int m = 5;

return 0;
}



for循环中申请的变量作用域到for循环结束,这没有问题

不过,若在int m = 5处设断点调试,在此处仍能看到i(值为10),这是vs调试器的原因?ide:vs2005

更进一步
int main()
{
for (int i = 0; i < 10; i ++)
{
int x = i;
}

int m = i;

return 0;
}


上面的代码在vc6.0下居然可以。。。

汗。。。这不是蒙人么?。。

散分。。。
...全文
68 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
paidfighting 2008-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]
2005没用过,但是尽管超过了生命期,当时为i在堆栈上分配的内存,如果没人去改写它,那么只是不会变的。哪怕你定义个函数,里面的局部变量赋值后返回,再查看刚才那个函数里的局部变量的内存地址,里面的值也还在!只是这块内存的所有者发生了变化而已。

vc6因为是98年前出的,在c++标准发布之前,所以做法上跟标准不合。for内定义的int i,实际上在定义以后一直有效,直到main函数结束。
[/Quote]

赞~~~~~
野男孩 2008-03-16
  • 打赏
  • 举报
回复
2005没用过,但是尽管超过了生命期,当时为i在堆栈上分配的内存,如果没人去改写它,那么只是不会变的。哪怕你定义个函数,里面的局部变量赋值后返回,再查看刚才那个函数里的局部变量的内存地址,里面的值也还在!只是这块内存的所有者发生了变化而已。

vc6因为是98年前出的,在c++标准发布之前,所以做法上跟标准不合。for内定义的int i,实际上在定义以后一直有效,直到main函数结束。

64,688

社区成员

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

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