static有什么用?

原创 2007年09月16日 20:57:00

(1)局部静态变量

在C/C++中, 局部变量按照存储形式可分为三种auto, static, register
(<C语言程序设计(第二版)>谭浩强, 第174-175页)
与auto类型(普通)局部变量相比, static局部变量有三点不同
1. 存储空间分配不同
auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域相同, 但生存期不同.
2. static局部变量在所处模块在初次运行时进行初始化工作, 且只操作一次
3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符, 而auto类型的初值是不确定的. (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型)


(2)外部静态变量/函数

用来表示不能被其它文件访问的全局变量和函数。为了限制全局变量/函数的作用域, 函数或变量前加static使得函数成为静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函 数)。注意此时, 对于外部(全局)变量, 不论是否有static限制, 它的存储区域都是在静态存储区, 生存期都是全局的. 此时的static只是起作用域限制作用, 限定作用域在本模块(文件)内部.

(3)静态数据成员/成员函数

表示属于一个类而不是属于此类的任何特定对象的变量和函数.


此功能只在C++中有,原因?很简单 ,在C里压根就没有成员、成员函数的概念啊,因为没有类(除非你跟我说还有struct)。

参考:http://blog.csdn.net/xiaocai0001/archive/2006/04/14/662921.aspx。

Java千百问_03基础语法(017)_static有什么用

点击进入_更多_Java千百问1、static有什么用static是java的关键字,用static声明达到静态的目的。所谓静态,就是在程序编译后就能被使用,不需要创建任何实例。static能够修饰类...

unity3d问题集 <4> 在inspector检测面板中的static选项有什么用?

unity3d问题集 在inspector检测面板中的static选项有什么用? ... 热度 2248 2015-3-2 20:09 |个人分类:unity3D问题集| inspector, 游...

类名与关键字之间的宏定义是做什么用的?

有一些类的定义如下:   class   DLLEXPORT   className   {   .......   };    问:   DLLEXPORT   可以是什么关键词,请列出他们并说明...

一个没有什么用的截图

  • 2008年05月27日 10:29
  • 21KB
  • 下载

Maven到底是什么,Maven到底有什么用

为什么要使用Maven来管理项目 因为一开始没有用过maven,当进入新公司后听到他们以后开发用maven和ssm框架是挺好奇的,那这个maven 到底是用来干什么的呢?我就不停的百度mav...

V1.0 S7-200 Explorer 是什么用的

  • 2015年05月17日 12:33
  • 655KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:static有什么用?
举报原因:
原因补充:

(最多只允许输入30个字)