前言
static
,静态的,在C/C++中经常喜欢问它的作用,那么,应该简简单单的把它记录一下
一 正文
1.1 C语言中
在C语言中,static有下3个作用:
- static修饰全局变量:被修饰的全局变量的作用域范围限定为本源文件,另外的源文件不能通过extern关键词来使用这个全局变量。(该变量存放在静态变量区)
- static修饰局部变量:a)被修饰的局部变量只能被初始化一次。b)被修饰的局部变量的存储空间发生了改变,不再存储在栈中,而是存储在数据段中。
- static修饰函数:被修饰的函数作用域范围限定为本源文件,另外的源文件不能使用被修饰的函数
1.2 C++语言中
在C++语言中,在C的基础上,还多了一个
- 对一个类中成员变量和成员函数来说,加了static关键字,则此变量/函数就没有了this指针了,必须通过类名才能访问。它们是属于类的,而不是某个对象,所有对象共享一个静态成员
二 其他
static
会修改变量的存储类型,从自动变量变成静态变量。- 在嵌入式系统中,要时刻懂得移植的重要性,程序可能是很多程序员共同协作同时完成,在定义变量及函数的过程,可能会重名,这给系统的集成带来麻烦,因此保证不冲突的办法是显示的表示此变量或者函数是本地的,static即可。在Linux的模块编程中,这一条很明显,所有的函数和全局变量都要用static关键字声明,将其作用域限制在本模块内部,与其他模块共享的函数或者变量要EXPORT到内核中。