在C语言中,static关键字的引入最先是为了表示 退出一个块后(即退出某个函数之后)仍然存在的局部变量。随后,C中的static 有了第二种含义:用来表示不能被其他文件访问的全局变量和函数。
static 对三个东西进行修饰:局部变量、全局变量、函数。
1、修饰局部变量
static 修饰局部变量时,表示这个变量在这个函数退出之后并不消失,当再次进入这个函数时,这个变量中存放的值还是和退出时候的值一样。当由于它只是一个局部变量,所以它不能被其它函数使用。
2、修饰全局变量
static 修饰全局变量时,使用的是static 关键字的第二种含义,即这个全局变量不能在其他文件中被使用,即使使用extern 关键字也不行。
3、修饰函数
修饰函数的时候也是表示这个函数不能被这个文件之外的文件使用,即使使用extern 关键字也不行。
参考文献:
[1] 陈正冲, 石虎. C语言深度剖析.pdf,第1.3节.