目录
一 static关键字
static是C/C++中的修饰符,用来修饰变量或函数
二 static关键字的使用
- 修饰局部变量 -- 静态局部变量
- 修饰全局变量 -- 静态全局变量
- 修饰函数 -- 静态函数
三 static关键字的具体使用
1、修饰局部变量
(1)不使用 static 修饰局部变量,结果如下:
(2)使用 static 修饰局部变量,结果如下:
输出不同结果的原因:
- static 修饰局部变量,改变了局部变量的存储属性(变为静态局部变量)
- 局部变量原本存储在内存的栈区,被static 修饰之后的局部变量存储在内存的静态区
- 在局部作用域结束时,被static 修饰的变量并没有销毁,等下一次进入局部作用域时就会延用上一次的结果值
注:被static 修饰的局部变量的作用域不会被改变
引入内存:
内存包括三个区(栈区,堆区,静态区)
- 栈区(局部变量,函数的形式参数--临时的变量)
- 堆区(动态内存分配,malloc,calloc,realloc,free)
- 静态区(静态变量,全局变量)
2、修饰全局变量
(1)未被static修饰
(2)被static 修饰的全局变量
输出结果失败的原因:
- 全局变量具有外部性链接属性;被static 修饰的全局变量转变为内部性链接属性,被私有化(被static 修饰的全局变量,只能在自己所在的源文件.c内部才可以被使用)
3、修饰函数
(1)未被static 修饰的函数
(2)被static 修饰的函数
输出结果失败的原因:
- 函数具有外部性链接属性;被static 修饰的函数转变为内部性链接属性,被私有化(被static 修饰的函数,只能在自己所在的源文件.c内部才可以被使用)