其实,这是C中的基础,但是若不是对C有透彻的理解,绝对回答不清楚!
推荐的参考资料:C Primer Plus ,其中有一章专门讲解这个;
在理解C的存储类说明符之前,首先要搞懂的概念有:作用域、生存周期、链接属性
C中存在如下的作用域:代码块作用域、文件作用域
C中变量的生存周期:自动生存周期(自动变量)、静态生存周期(静态变量,在程序运行期间始终存在)
C中变量(函数)的链接属性分为:静态连接属性、自动链接属性,由static关键字标志
C中的存储类说明符实际上是上述属性的不同组合(此处只针对变量而言):
auto 具有代码块作用域,自动生存周期,外部或者内部链接属性
register 具有代码块作用域,自动生存周期,外部或者内部链接属性
static 具有代码块或者文件作用域、静态生存周期、内部链接
extern 具有文件作用域(该关键字用于全局变量)、静态生存周期、外部链接
以上措辞或有不严谨之处,详情请参考参考资料()!