C 语言中 extern 变量和 global 变量有什么区别

区别是:在C语言中 extern 是关键字,global 不是。一个变量是不是 global 变量是由作用域决定的,当变量在全局作用域中声明时,这个变量就是全局变量。当 extern 修饰一个变量时,就表明这个变量并不是在这里声明的。

C 语言中 extern 变量和 global 变量有什么区别-Worktile社区

在C语言中 extern 是关键字,global 不是。一个变量是不是 global 变量是由作用域决定的,当变量在全局作用域中声明时,这个变量就是全局变量。

当 extern 修饰一个变量时,就表明这个变量并不是在这里声明的。比如,你在头文件里声明了一个变量,那么为了在源程序中显得清楚明白,在源程序中应该加上一个 extern 修饰的该变量的声明。extern 也可以用于前向声明(Forward Declaration)。

除了变量以外,extern 也可以修饰函数。C 语言中常见的一个错误是 unresolved externals,这常常会由没有引用库文件导致,由此可推知库文件中的函数是用 extern 修饰的。

extern在这种情形中代表需要预留一个全局可见的符号。

全局的意思是在链接阶段可以找到这个符号,因为在链接中是没有非全局的符号的(静态局部变量是不需要留符号的,只需要标明所需空间既可)。

所以extern一个符号的含义与全局变量的含义的区别就如同符号和变量的区别,它们是不同层次的,也没有间接的关系。

延伸阅读:

什么是变量?

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。

变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。

在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。

变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储Script运行时可更改的程序信息。例如,可以创建一个名为Click Count的变量来存储用户单击Web页面上某个对象的次数。使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。

文章标题:C 语言中 extern 变量和 global 变量有什么区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/38570

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月17日 上午2:17
下一篇 2023年2月17日 上午2:20

相关推荐

  • 软件项目管理工具的选择有哪些功能

    软件项目管理工具的选择要有以下功能:一、任务管理;二、任务自动化;三、时间追踪;四、图表和报告;五、问题跟踪和工作流程;六、社交项目管理。任务管理是一项基础功能,它会涉及到项目中的方方面面。你可以使用蓝图功能绘制出整个工作流程,通过看板查看任务,将目标设置为里程碑 一、任务管理 任务管理是一项基础功…

    2023年3月31日
    32100
  • devops项目经理需要做什么

    在现代软件开发周期内,DevOps项目经理负责确保产品从概念化到交付期间的效率和质量。该角色结合了开发、运维和项目管理的职责,关键是促进团队之间的协作、优化流程和工具的使用。1.构建高效的跨职能团队、2.优化产品交付流程、3.促进持续的沟通和反馈、4.监控项目状况并迅速解决问题。在其中,尤以优化产品…

    2024年3月26日
    8000
  • 哪些比较好用的java接口文档API工具

    好用的java接口文档API工具有:1、 Swagger;2、SpringDoc。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。 一、Swagger Swagger是一个规范和完整的…

    2023年2月9日
    1.5K00
  • 为什么vscode老是弹窗

    Visual Studio Code(VSCode)老是弹窗的原因主要包括 软件更新提示、扩展建议或错误、源代码问题警告、以及系统权限请求 等。扩展建议或错误 是最常见的原因之一,VSCode 借助于其庞大的扩展库提供了强大的功能,但与此同时,这些扩展也可能带来问题。每当你打开或编辑特定类型的文件时…

    2024年4月3日
    14500
  • oa待办设计

    标题:OA待办设计的实用原则与方法 摘要 OA系统中的待办事项清单是提高工作效率的关键组成部分。在设计此功能时,*关注用户体验、兼顾功能丰富性和界面清晰性、注重待办项的动态跟踪* 是主要考量。包括1、易用性的优化、2、信息分类机制、3、流程动态提醒功能 在内的多元素,共同构筑起高效OA待办体系。其中…

    2024年1月16日
    27600
  • 能源托管项目如何管理

    能源托管项目管理涉及一系列精心设计的策略、流程和实施步骤,以确保资源的最优化使用和能源成本的有效降低。综合评估能源需求、选择合适的能源托管合作伙伴、制定和执行节能方案、持续监测和优化操作是成功管理的关键环节。例如,综合评估能源需求不仅包括量化现有的能源消耗,还需要分析影响能耗的因素和潜在的节能区域。…

    2024年4月10日
    6100
  • 嵌入式开发做什么

    嵌入式开发主要包括以下环节:1、硬件选择;2、嵌入式操作系统选择;3、编写嵌入式程序;4、测试和优化。嵌入式开发的名列前茅步是硬件选择,包括选择合适的微处理器、存储器、接口和其他硬件组件。这需要根据项目的需求和约束,选择性能和价格适中的础件。 一、硬件选择 嵌入式开发的名列前茅步是硬件选择,包括选择…

    2023年7月29日
    44500
  • TNC系统和TNS系统的区别有哪些

    TNC系统和TNS系统是两种不同的电气连接系统,区别在于:1.连接结构方面;2.应用领域方面;3.性能特点方面。其中,TNC系统主要采用螺纹连接,适用于中频应用,常用于无线通信和数据传输等领域。而TNS系统则采用三线制,常用于低频电力传输,适用于家庭和工业用电场合。 1.连接结构方面 TNC系统(螺…

    2023年8月9日
    3.9K00
  • 免费好用的crm客户管理系统有哪些

    免费的CRM(客户关系管理)系统为企业提供了成本效益高且便捷的客户管理解决方案。1、HubSpot CRM、2、Zoho CRM、3、Bitrix24、4、Insightly、5、Agile CRM 是在市场上广泛推荐的免费CRM系统。HubSpot CRM以其用户友好的界面和强大的集成能力受到欢迎…

    2023年11月27日
    48300
  • 什么是技术研发中的快速原型制作

    技术研发中的快速原型制作是创新过程中的关键步骤,它允许设计师和工程师迅速创建产品的工作模型以便于测试和验证。快速制作的核心观点包括:1、加速产品设计周期;2、实时反馈和迭代;3、成本效益分析;4、用户体验增强;5、技术验证和风险降低。使用快速原型可以加速产品从概念到市场的时间,它提供实时反馈,使团队…

    2023年11月30日
    30900

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部