static关键字详解

来源:互联网 发布:淘宝旧版本5.1.0下载 编辑:程序博客网 时间:2024/06/05 03:32

static

可以用它来定义变量或者函数,保存在静态数据区。

作用:

1.隐藏:解除多文件时函数名字冲突的问题

同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。其他源文件也可以访问(extern)。如果加了static,就会对其它源文件隐藏。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,但是对于变量还有下面的作用。

2.提升变量的生命周期

存储在静态数据区的变量会在程序刚开始运行时就完成初始化(如果没有为其赋值会默认初始化为0),也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全居变量比起来,static可以控制变量的可见范围。

3.默认初始化为0

全局变量也具有这一特性,因为全局变量也存储在静态数据区。

全局变量、静态全局变量、静态局部变量和局部变量的区别:

变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。
(1) 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。
(2) 按作用域分, 全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝。

0 0
原创粉丝点击