存储类(storage class)
- auto 执行到所在花括号结束时被释放
- static 存储在静待存储区,生命周期从申请到程序退出
(有external或internal链接) - extern 引入其他文件中的变量,不会再次开辟内存
- register 存储在CPU的寄存器中,速度快,但内存有限
链接和作用域
凡是有名字的东西必然属于三者之一:
- 外链接(external)
- 内链接(internal)
- 无连接(none) 如局部变量
外链接
file1.cpp
int i = 1;
file2.cpp
extern int i;
int k = i;
作用域:外部文件可引用
内链接
file.cpp
static int d = 8;
作用域:只能在file.cpp中使用,其他文件无法链接
无连接
作用域:函数内的变量只存在于该函数内
注意
头文件中不要定义变量,否则在其他地方定义时会报:重复定义
如果一定要定义,那么可以在头文件中用以下的方法:
static const int i = 5;