Chinaunix首页 | 论坛 | 博客
  • 博客访问: 162176
  • 博文数量: 29
  • 博客积分: 1015
  • 博客等级: 上士
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-22 12:30
个人简介

喜读书,尤好史。

文章分类

全部博文(29)

文章存档

2012年(10)

2011年(19)

分类: C/C++

2012-09-17 11:49:02

场景是这样的:
     我需要一个长度,通过某个函数计算返回,为了链式运算,采用返回值方式,
     因此会有个相关的局部变量,很明显不可以,于是我自作聪明的定义了一个
     static局部变量,并初始化为0,结果出错了,调试了一下,发现长度阶段性的
     递增,导致后面紧接的转换函数因得不到正确的长度而失败。
分析:
     static是静态,全局状态下只维护一个实例,虽然初始化为0,但注意,这是
     初始化只在第一次建立对象的时候初始化,这就导致后续操作的初始值
     不是0,错误产生。
     无奈之下只能用临时变量返回或者初始化和赋值分开了。

总结:
     大意,想当然了。
     不过也加深了对c++下static的认识。
     static局部变量生存周期虽是全局,但其名字的作用域有限,依然为局部对象。
     因为是全局的,所以只能有一个实例。
     只初始化一次。
阅读(1942) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~