存储期限
自动存储期限的变量在所属块被执行时获得内存单元,并在块终止时释放内存单元,从而会导致变量失去值。
静态存储期限的变量在程序运行期间占有同一个存储单元,也就允许变量无限期地保留它的值。
作用域
块作用域:变量从声明的地方一直到所在块的末尾都是可见的。
文件作用域:变量从声明的地方一直到所在文件的末尾都是可见的。
链接
外部链接的变量可以被程序中的几个(或全部)文件共享。
内部链接的变量只能属于单独的一个文件,但是此文件中的函数可以共享这个变量。
无链接的变量属于单独一个函数,而且根本不能被共享。
int i;(静态存储期限、文件作用域、外部链接)
void f(void)
{
int ;(自动存储期限、块作用域、无链接)
}
static int i;(静态存储期限、文件作用域、内部链接)
void f(void)
{
static int ;(静态存储期限、块作用域、无链接)
}
extern int i;(静态存储期限、文件作用域、什么链接)
void f(void)
{
extern int ;(静态存储期限、块作用域、什么链接)
}
确定extern型变量的链接有一定难度,如果变量在文件中较早的位置(任何函数定义的外部)声明为static,那么它具有内部链接;否则(通常情况下),变量具有外部链接。
网友评论