关键字
一、static关键字
1.static的声明
static关键字可以用于改变变量、函数或成员的作用范围或生命周期。
- 局部变量:当在函数内部使用static关键字声明一个变量时,该变量将成为静态局部变量。静态局部变量在函数调用结束后仍然存在,并且在下次调用函数时保持其值不变。
- 全局变量:当在全局作用域(函数外部)使用static关键字声明一个全局变量时,该变量将成为静态全局变量。静态全局变量的作用范围仅限于声明它的源文件,在其他文件中无法访问。
- 函数声明和函数定义:当在函数声明和函数定义中使用static关键字修饰函数时,该函数将成为静态函数。静态函数只能在声明它的源文件中调用,无法被其他源文件调用。
- 结构体成员:当在结构体或联合的成员前面使用static关键字时,该成员将成为静态成员。静态成员只有一个实例,所有的结构体实例都共享这一个静态成员,也就是说对静态成员的修改将对所有实例产生影响。可以通过结构体类型访问静态成员,而不需要实例化结构体。
2.static变量存储的位置
static存放在进程内存中的Data segment中,如图
二、const关键字
1.const的声明
static关键提供了一种约束和保护变量的机制,提高了代码的安全性和可维护性
- 常量:const 关键字可以用于声明一个常量,将变量的值设置为不可修改。
- 结构体:对于 const 声明的结构体实例,无法通过该实例修改结构体的成员变量的值,只能用于只读操作。任何试图修改成员变量的操作都将导致编译错误。
2.编译优化
使用 const 关键字可以帮助编译器进行优化。编译器可以在编译时将 const 变量的值直接替换到代码中,避免了运行时的计算。