总结一下static关键字用法:
类别 | 使用方式 | 区别与联系 |
局部变量 (static改变生命周期) |
int A; | 初始值:编译器一般不会对普通变量进行初始化; 生命周期:普通局部变量存储于进程栈空间,使用完毕会立即释放。 作用域:局部作用域,作用在{ }之间 |
static int A; | 初始值:当没有赋值的时候,编译器会把它初始化为0 生命周期:变量在全局数据区分配内存空间 作用域: 为局部作用域,当定义它的函数结束时,其作用域随之结束 |
|
全局变量 (static改变作用域)
扫描二维码关注公众号,回复:
12418938 查看本文章
![]() |
int A; | 初始值:全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化 生命周期:整个程序存在周期 作用域: 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用 |
static int A; | 初始值:全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化 生命周期:整个程序存在周期 作用域: 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。 |
|
函数 (static改变作用域) |
void fuction() | 作用域:非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明 |
static void fuction() | 作用域:1.静态函数只能在声明它的文件中可见,其他文件不能引用该函数 2.不同的文件可以使用相同名字的静态函数,互不影响 |
参考: