声明

存储期限

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

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

作用域

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

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

链接

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

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

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


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

void f(void)

{

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

}


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

void f(void)

{

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

}

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

void f(void)

{

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

}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述:声明是将一个名称引入一个程序.定义提供了一个实体在程序中的唯一描述.声明在单个作用域内可以重复多次(类成员除...
    抓兔子的猫阅读 657评论 0 3
  • 版权声明:本文为 gfson 原创文章,转载请注明出处。注:作者水平有限,文中如有不恰当之处,请予以指正,万分感谢...
    gfson阅读 3,347评论 0 6
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399