static in c
静态全局变量 & 静态局部变量
相同点就是, 静态的话, 就是放在数据段(bss or data)了, 不放在栈上边, 所以生存周期就是很长对吧
静态全局变量
全局变量就算是不静态, 也放在数据段, 对不对, 所以, 静态的全局变量这个静态要达到的效果是, 该变量只在本文件中可见, 不能extern到其他文件里
静态局部变量
既然是局部变量, 这个静态其实就像js里函数闭包一样, 想要维持一种状态, 利用了, 静态变量只初始化一次, 其实想一想, 我们通常说的静态就是编译时, 动态是运行时, 这里的只初始化一次, 大概就是这样子???一次性语句….
void count() {
static int num = 0;
num++;
printf("%d\n", num);
}
静态成员方法 & 静态成员变量 (OOP)
静态方法可以认为是, 类方法…
静态方法不能访问不静态的成员变量, 因为传参的时候不会把this指针传给他
同理, 静态成员变量可以认为是类变量, 用来存储类级别的一些内容, 比如实例个数
这些, 类级的变量可以直接通过类名而无需通过实例来访问
一个要注意的地方是, 静态成员在类内只是申明的样子,
- 静态方法也要在类外定义
- 静态成员变量要在类外写一个定义(当然可以顺手初始化)
当然例外是const + static 可以在类内…忽略这个特例
静态函数(全局)
这个其实就和全局静态变量是一个道理, 是为了隐藏作用域, 该函数只能在本文件中使用, 这样子其他文件中就可以使用同名的函数了
因为函数里不能定义函数, 所以说到函数, 肯定是全局的了哦