在C中,变量的作用域和生命周期,以及存储位置有下面的规律:

<li>全局变量:

作用域是从定义开始到文件结束;

生命周期是程序执行期间;

存储位置在全局栈帧即代码段中。

<li>局部变量:

作用域是从定义其至函数(代码块) 结束;

生命周期在函数(代码块) 执行期间;

存储位置位于函数的局部栈帧。

那么C中extern关键字作用于全局变量有什么效果呢?从生命周期、存储位置上来看,没什么改变。但是extern关键字可以将全局变量的作用域由变量定义所在的文件,扩展到所有的文件。

继续看看 C中static关键字对局部变量有什么效果呢?他可以将局部变量的存储位置从函数局部栈中改到数据段中。从而使得局部变量的生命周期扩展到整个程序执行期间。这样以后每次进入函数中都可以读写该函数了。