当组成一个程序的各个源文件分别被编译之后,所有的目标文件以及那些从一个或多个函数库中引用的函数链接在一起,形成可执行程序。如果相同的标识符出现在几个不同的源文件中时,它们是表示同一个变量还是不同的变量呢?这个就取决于标识符的链接属性(linkage)。要注意的是,标识符的作用域与链接属性有关,但这两个属性不相同。 链接属性一共有3种:

none

没有链接属性的标识符(none)总是被当作单独的个体,也就是说该标识符的多个声明被当作独立不同的实体。

internal

属于internal链接属性的标识符在同一个源文件内的所有声明中指同一个实体,但位于不同源文件的多个声明则属于不同的实体。使用static关键字来声明一个internal类型的标识符。static只对缺省链接属性为external的声明才有改变链接属性的效果。static用于声明局部变量时,是使这个变量成为静态变量,就是这个变量在程序的整个运行过程中总是存在的,直到程序结束。

external

属于external链接属性的标识符无论声明多少次、位于几个源文件都表示同一个实体。当extern关键字用于源文件中一个标识符的第1次声明时,它指定该标识符具有external链接属性。但是,如果它用于该标识符的第2次或以后的声明时,它并不会更改由第1次声明所指定的链接属性。

转载于:https://my.oschina.net/liangzhenghui/blog/112636

C语言中变量的链接属性相关推荐

  1. 【C语言进阶深度学习记录】五 C语言中变量的属性

    上一篇文章学习了C语言中的类型转换,点击链接查看:[C语言进阶深度学习记录]四 C语言中的类型转换. 文章目录 1 C语言的变量属性 1.1 auto关键字 1.2 register关键字 1.3 s ...

  2. 在c语言中函数的定义变量的值为,变量定义(C语言中变量的声明和定义)

    变量定义(C语言中变量的声明和定义),哪吒游戏网给大家带来详细的变量定义(C语言中变量的声明和定义)介绍,大家可以阅读一下,希望这篇变量定义(C语言中变量的声明和定义)可以给你带来参考价值. 3.函数 ...

  3. C语言中变量的储存类别

    C语言中变量的储存类别 C语言中变量的储存类别 1.动态存储方式与静态动态存储方式: 从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式. 静态存储方式:是指在程序运行期间分 ...

  4. C语言中变量的静态分配(Static)和动态分配(StackHeap)

    目录 C语言中变量的静态分配(Static)和动态分配(Stack&Heap) 变量的静态分配 包含了哪些变量? 全局变量和局部变量(staic关键字) 通过一个例子进行诠释 变量的动态分配 ...

  5. 如何理解c语言的变量,C语言中变量的理解.PDF

    C语言中变量的理解 年第 期 建建 电电 脑脑 2011 3 59 C 语言中变量的理解 潘 莉 河南经贸职业学院 东校区 河南郑州 ( 冤 450009 ) 摘 要 在很多 级语言的基础语法中都有变 ...

  6. c语言中变量的大小,C语言变量定义

    C语言变量定义 程序设计就是让计算机按照一定的指令来进行工作,可以说数据的处理是程序设计的主要任务.那么数据是怎么加入到计算机的内存中呢?下面是小编分享的C语言变量定义,欢迎大家阅读!更多相关信息请关 ...

  7. 单片机c语言字符,单片机C语言中变量的定义方法解析

    描述 1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_ ...

  8. 在c语言中 使用变量的要求,关于C语言中变量的探讨

    摘 要: 在所有的计算机高级语言中,都存在着变量这样一个重要的概念.变量是计算机高级语言程序的重要成分之一.与其他语言中的变量相比,C语言中的变量所包含的内容更为丰富,包括变量的定义.数据类型.变量数 ...

  9. java语言变量分为_在Java语言中变量分为四种,分别是___________________________________________。_学小易找答案...

    [填空题]One day, at the registrar's office of a college, I noticed how parents are behaving with their ...

最新文章

  1. 解决CSV文件中长数字以科学记数格式保存问题
  2. gin.context 怎么在其他包中获取 只能传递吗_跨进程传递大图,你能想到哪些方案呢?...
  3. Oracle使用触发器和mysql中使用触发器的比较
  4. LOJ.2587.[APIO2018]铁人两项Duathlon(圆方树)
  5. Fedora中允许mysql远程访问的几种方式
  6. 大额存款到期,银行不能给兑付怎么办?
  7. 现代优化计算方法_【公开课】供应链库存优化与需求预测管理
  8. Android基站定位——单基站定位(二)
  9. 第十天学习@javascript
  10. c语言外部中断服务程序设计,手把手教你学单片机的C语言程序设计十二中断服务函数.pdf...
  11. vs2008激活、序列号
  12. K8s部署Nexus3管理Docker镜像
  13. Java多线程系列--“JUC集合”10之 ConcurrentLinkedQueue
  14. PDF文件解密安全口令
  15. C#串口通信——协议格式
  16. 从实战中学前端:打造自己的 html5 文件上传插件
  17. 推荐5款edge浏览器插件
  18. eclipse设置pom.xml打开方式
  19. 程序员代码面试指南刷题--第五章.字符串的调整II
  20. 百人计划 美术 1.1 美术理论基础

热门文章

  1. Linux16.04LTS 安装Intel RealSense D435驱动
  2. hdu 4556 Stern-Brocot Tree
  3. hdu 2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (背包问题)
  4. (转)怎么实时查看mysql当前连接数
  5. Codeforces Round #315 (Div. 2)
  6. 七月算法--12月机器学习在线班-第七次课笔记—最大熵
  7. 解决xtraFinder在EI下不能使用问题
  8. Rust初步(三):使用atom搭配racer进行rust编程
  9. ORACLE创建用户,建表空间,授予权限
  10. [译]怎样用HTML5 Canvas制作一个简单的游戏