static的作用和理解
2016-08-09 10:45
127 查看
作用域是理解static变量和函数的关键,被static修饰的变量和函数他只能被它所在作用域访问(如果获得变量指针也可以操作),不能被它作用域之外被访问,全局静态变量和函数,不能被其他文件使用,本质还是因为 它的作用域只在本文件
全局静态变量位于静态存储区,在整个程序运行期间都一直存在,所以只初始化一次
全局静态变量位于内存中bss区,系统会默认为其初始化为0
static声明的全局变量作用域为本文件,不能被当前文件之外的其他文件引用
系统会默认初始化为0
没有初始化的局部静态变量系统会默认初始化为0
局部的静态变量作用域为局部作用域,但生命周期是全局的
只能被他作用域内使用(函数和全局变量的话不能被其他文件使用)
如果是一个变量如果没有初始化,系统会默认为其初始化为0
static和普通的auto变量具有相同的作用域,不同的生存周期
全局静态变量
全局静态变量属性全局静态变量位于静态存储区,在整个程序运行期间都一直存在,所以只初始化一次
全局静态变量位于内存中bss区,系统会默认为其初始化为0
static声明的全局变量作用域为本文件,不能被当前文件之外的其他文件引用
全局静态变量的好处
只能被当前文件使用,防止在当前文件之外被修改系统会默认初始化为0
局部静态变量
局部静态变量位于静态存储区没有初始化的局部静态变量系统会默认初始化为0
局部的静态变量作用域为局部作用域,但生命周期是全局的
静态函数
静态函数的只在声明的文件中可见,其他文件中不能被使用static的常用方法
根据static只初始化一次的特点可以实现计数功能static修饰的变量或者函数名有以下几个特点:
生命周期是全局没在整个进程结束之前一直都存在(所以当static修饰的是一个局部变量时,只初始化一次)只能被他作用域内使用(函数和全局变量的话不能被其他文件使用)
如果是一个变量如果没有初始化,系统会默认为其初始化为0
static和普通的auto变量具有相同的作用域,不同的生存周期
相关文章推荐
- static关键字理解整理:静态变量、静态函数的作用及使用规则
- java 理解static代码块的作用
- 理解java static 的作用
- 理解static的作用
- 总结下java中abstract,interface,final,static,加深理解
- 深入理解javascript原型和闭包(13)--作用域和上下文环境
- 深入理解java的static关键字
- 理解交叉熵作为损失函数在神经网络中的作用
- static作用(修饰函数、局部变量、全局变量)
- static作用
- 理解CAS算法在JAVA中的作用
- Effective Objective-C 2.0 第11条:理解objc_msgSend的作用
- 深入理解javascript原型和闭包(12)——简介【作用域】(闭包)
- 很通俗的C#接口 作用理解。
- public static void main(String[] args)的理解!
- static关键字的理解
- 对Java中this static object 的理解
- 理解String的不同创建方式及intern()方法的作用
- python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域
- static和const关键字的作用