声明

存储期限

自动存储期限的变量在所属块被执行时获得内存单元,并在块终止时释放内存单元,从而会导致变量失去值。

静态存储期限的变量在程序运行期间占有同一个存储单元,也就允许变量无限期地保留它的值。

作用域

块作用域:变量从声明的地方一直到所在块的末尾都是可见的。

文件作用域:变量从声明的地方一直到所在文件的末尾都是可见的。

链接

外部链接的变量可以被程序中的几个(或全部)文件共享。

内部链接的变量只能属于单独的一个文件,但是此文件中的函数可以共享这个变量。

无链接的变量属于单独一个函数,而且根本不能被共享。


int i;(静态存储期限、文件作用域、外部链接)

void f(void)

{

    int ;(自动存储期限、块作用域、无链接)

}


static int i;(静态存储期限、文件作用域、内部链接

void f(void)

{

static int ;(静态存储期限、块作用域、无链接)

}

extern int i;(静态存储期限、文件作用域、什么链接

void f(void)

{

extern int ;(静态存储期限、块作用域、什么链接

}

确定extern型变量的链接有一定难度,如果变量在文件中较早的位置(任何函数定义的外部)声明为static,那么它具有内部链接;否则(通常情况下),变量具有外部链接。

你可能感兴趣的:(声明)