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

相关推荐

发表回复

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

400-800-1024

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

分享本页
返回顶部