当前位置:  开发笔记 > 编程语言 > 正文

什么是变量的链接和存储说明符?

如何解决《什么是变量的链接和存储说明符?》经验,为你挑选了1个好方法。

当有人谈论变量存储类说明符时,他们在谈论什么?
他们还经常谈论同一环境中的变量链接,那是什么?



1> Benoit..:

存储类说明符控制变量的存储链接.这是两个不同的概念.C为变量指定以下说明符:auto,extern,register,static.

存储
存储持续时间决定变量在RAM中的存储时间.
存储持续时间有三种类型:静态,自动和动态.

static
如果您的变量在文件范围内声明,或者使用extern或static说明符,则它将具有静态存储.只要程序正在执行,变量就会存在.没有花费执行时间来创建这些变量.

自动
如果变量在函数中声明,但没有 extern或静态说明符,则它具有自动存储.只有在执行函数时,该变量才会存在.返回后,变量不再存在.自动存储通常在堆栈上完成.创建这些变量是一个非常快速的操作(只需按大小递增堆栈指针).

dynamic
如果使用malloc(或C++中的new),则使用动态存储.此存储将一直存在,直到您调用free(或delete).这是创建存储的最昂贵方式,因为系统必须动态管理分配和释放.

链接
链接指定谁可以查看和引用变量.连锁有三种类型:内部连接,外部连接和无连接.

无链接
此变量仅在声明它的位置可见.通常适用于函数中声明的变量.

内部链接
此变量对文件中的所有函数(称为转换单元)都是可见的,但其他文件不会知道它存在.

外部链接
该变量对其他翻译单元可见.这些通常被认为是"全局变量".

下面是一个描述基于说明符的存储和链接特征的表

  Storage Class   Function            File 
  Specifier        Scope              Scope  
-----------------------------------------------------
  none           automatic         static      
                 no linkage        external linkage

 extern          static            static
                 external linkage  external linkage

 static          static            static
                 no linkage        internal linkage

  auto           automatic         invalid
                 no linkage

register         automatic         invalid
                 no linkage

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有