免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sagasw
打印 上一主题 下一主题

[C] C语言中本地变量local variable的作用域与生存期 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2010-12-20 23:15 |显示全部楼层
谢谢几位网友发表见解
事实上
auto类别的局部变量的含义是在用到这个局部变量时,“自动”地为它找个存储空间,离开它的作用范围后,它所占据的空间自动地还给计算机。这里所谓的不再用到是指,这个局部变量所在的代码模块已经被执行完了。当程序再次开始执行auto类别的局部变量所在的代码模块中的代码时,会再次为这个变量寻找一个存储空间,基本上这个空间和上一次它所占据的空间是不一样的,即使一样也毫无意义,因为原来所占据的内存空间既然还给了操作系统,那么里面的内容——原来的值,可能早就面目全非了。

的文字和表达上确实有问题
我考虑换种表达方法

希望几位网友给些建议

论坛徽章:
0
2 [报告]
发表于 2010-12-20 23:23 |显示全部楼层
我刚刚想到了这样一个有点极端的例子

  1. {
  2. auto type v;
  3. ……
  4. goto L1 ;
  5. ……
  6. L2 :……
  7. ……
  8. }
  9. L1 :……
  10. ……
  11. goto L2 ;
  12. ……
复制代码


我那段文字似乎很难解释这个

论坛徽章:
0
3 [报告]
发表于 2010-12-21 10:00 |显示全部楼层
回复  OwnWaterloo
《狂人C》中对++前后缀方式的说明就是如此,尽管键盘农夫试图把++解释的更为通俗易懂深入浅出,但是我看了还是一头雾水。
sagasw 发表于 2010-12-21 09:00


sagasw网友提到的++部分
http://bbs.chinaunix.net/thread-1830222-17-1.html
敬请各位方家指正

论坛徽章:
0
4 [报告]
发表于 2010-12-21 11:54 |显示全部楼层
在这里copy一下,原帖也做了回复:

    我在今年五月份还试图写博客来解释这个问题,http://sunxiunan.com/?p=1628 除了堆砌一些专家的提法,感觉解释的很不成功。
sagasw 发表于 2010-12-21 10:23

那个帖子我仔细看过
(怯怯地表示)
许多专家的提法
我感到也很难苟同

论坛徽章:
0
5 [报告]
发表于 2010-12-21 12:23 |显示全部楼层
本帖最后由 KBTiller 于 2010-12-21 12:33 编辑

回复 18# OwnWaterloo


    我懊悔的是用了“离开”这个词
    下面的东西无法自圆其说


{
  ……
  function();
  ……
}

论坛徽章:
0
6 [报告]
发表于 2010-12-21 12:34 |显示全部楼层
回复  KBTiller
而在C++中, 这种跳过初始化的局部跳转语句就非法了。
OwnWaterloo 发表于 2010-12-21 12:16

C++有不少东西都比较好
函数原型我觉得也很好

论坛徽章:
0
7 [报告]
发表于 2010-12-21 12:58 |显示全部楼层
回复  KBTiller

同理, 这个也要看"离开"是怎么定义了。

{
      ...
      f(); // 进入f后, 程 ...
OwnWaterloo 发表于 2010-12-21 12:47


   是的。但容易让别人尤其是初学者误解总是不够好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP