auto
函数内定义的变量(即局部变量)为auto类型,进入函数或者语句块自动申请内存,退出语句块或函数时被自动释放。
函数外定义的变量(即全局变量)为extern类型。
static
static变量
静态局部变量 作用域为函数,生存期和整个程序生存期一样
静态全局变量 作用域为本文件,禁止其他文件访问
static函数
作用作用域为本文件
extern
extern变量
在file1中定义,在file2中想要引用此变量可以
1) extern int a; 进行申明
2) 在#include “xxx.h”中引入.h文件中变量的申明,如int a,这个申明即使没有extern,也是默认extern的。
#include “xxx.h”其实编译的时候用file.h文件内容取代
extern函数
函数定义,在别的地方extern这个函数,函数的名称会导出到链接器
函数定义的存储类别只有extern和static,若函数中没有指定存储类别,默认为extern,外部想引用别的文件的函数,可以
1) extern func_name 进行申明
2) 在#include “xxx.h”中引入.h文件中函数的申明,这个申明即使没有extern,也是默认extern的。
register
很少被使用