我的理解,欢迎纠正:
对于变量(包括局部变量和全局变量):
static:
局部变量:表示将本来“运行时存放在栈中的数据”在“编译时存放至静态数据存储空间”,生命周期长达
整个执行过程,并且只会在第一次执行语句时初始化一次(作用域不变,仅限于定义变量的语句快)
全局变量:表示将数据存放值静态数据存储空间,在程序运行结束之前都生效(作用域仅限定义全局变量的
文件)
extern:
表示这个变量在其他地方定义,在此处引用(局部变量出了作用域就over,所以基本不针对局部变量使用
extern,大都针对其他文件的全局变量)
对于函数:
static:
表示函数在本文件可见,不能被其他文件的函数调用
extern:
表示函数定义在别处,在此处引用(现在都是默认extern的好像,头文件的函数不加extern貌似也可以)
总体来说static有限定的意思,extern有开放的意思 |