Chinaunix首页 | 论坛 | 博客
  • 博客访问: 106482
  • 博文数量: 40
  • 博客积分: 1650
  • 博客等级: 上尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-20 13:05
文章分类
文章存档

2011年(1)

2009年(1)

2008年(1)

2007年(37)

我的朋友

分类: C/C++

2007-07-20 21:31:18

  1. C/C++中static关键字主要有三种使用方式, 其中第三种只在C++中使用:
    (1)局部静态变量
    (2)全局静态变量/函数
    (3)静态数据成员/成员函数
  2. 下面就这三种使用方式分别说明
    (1)局部静态变量
    在C/C++中, 局部变量按照存储形式可分为三种auto(普通), static(静态), register(寄存器)
    static局部变量与auto类型(普通)局部变量相比 有以下差别:
  • 存储空间分配不同
    auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放,
    而static分配在静态存储区, 在程序整个运行期间都不释放.
  • static局部变量在所处函数初次运行时完成初始化工作, 且只操作一次,auto类型(普通)局部变量在所处函数每次运行时动态存储区空间
  •  对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符,而auto类型的初值如果不赋初值,是不确定的. (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型)
    (2)全局静态变量/函数
    为了限制全局变量/函数不能被其它文件访问,全局变量/函数前加static使得函数成为 全局静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于所处文件。
    使用全局静态变量/函数的好处是:不同的人编写不同的全局变量/函数时,不用担心自己定义的全局变量/函数,是否会与其它文件中的函数同名。
    (3)静态数据成员/成员函数(C++特有)
    C++重用了这个关键字,并赋予它与前面不同的第三种含义:表示属于一个类而不是属于此类的任何特定对象的变量/函数。这是与普通成员变量/成员函数的最大区别。在这里面, static既不是限定作用域的, 也不是扩展生存期的作用, 而是指示变量/函数在此类中的唯一性.
阅读(1174) | 评论(2) | 转发(0) |
0

上一篇:linux下pthread函数汇总

下一篇:extern “C”

给主人留下些什么吧!~~

chinaunix网友2009-09-16 19:00:49

希望你把Linux弄透,本人张泽伟很想向你请教,本人QQ是:254584290,希望你加为好友,我对linux没入门,想多向你请教。

chinaunix网友2008-04-06 11:14:12

cvb