鱼C论坛

 找回密码
 立即注册
查看: 2487|回复: 3

[已解决]全局作用域,文件作用域,多文件作用域,有什么区别?

[复制链接]
发表于 2020-10-1 00:51:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
全局变量具有全局作用域指的是在整个工程里都有效。文件作用域又叫单文件作用域,定义在所有函数之外的标识符都具有文件作用域。作用域为定义开始,到整个源文件结束。他说的这个整个是指的整个工程里的所有源文件吗?还是指自己定义声明所在的那个源文件?为什么还说全局变量和函数都具有文件作用域!多程序作用域也称为多文件作用域。属于程序作用的通过extern关键字进行说明的外部变量以及外部函数说的到底是什么意思?
最佳答案
2020-10-1 03:01:49
本帖最后由 风过无痕1989 于 2020-10-1 03:12 编辑

我作了一张图:

        p,q,c1,c2都是全局变量,但它们的作用范围不同,在main函数和f2函数中可以使用全局变量p,q,cl,c2,但在函数f1中只能使用全局变量p,q,而不能使用cl和c2.

       在一个函数中既可以使用本函数中的局部变量,也可以使用有效的全局变量。打个通俗的比方:国家有统一的法律和法规,各省还可以根据需要制定地方的法律和法规。在甲省,国家统一的法律法规和甲省的法律法规都是有效的,而在乙省,则国家统一的法律法规和乙省的法律法规有效。显然,甲省的法律法规在乙省无效。

       设置全局变量的作用是增加了函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值。相当于各个函数间有直接的传递通道。由于函数的调用只能带回一个函数返回值,因此有时可以利用全局变量来增加函数间的联系渠道,通过函数调用能得到一个以上的值。

如果还是没弄明白,请去读这篇博文:extern 使用方法总结 https://www.cnblogs.com/renyuan/archive/2012/11/30/2796801.html

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-1 03:01:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-10-1 03:12 编辑

我作了一张图:

        p,q,c1,c2都是全局变量,但它们的作用范围不同,在main函数和f2函数中可以使用全局变量p,q,cl,c2,但在函数f1中只能使用全局变量p,q,而不能使用cl和c2.

       在一个函数中既可以使用本函数中的局部变量,也可以使用有效的全局变量。打个通俗的比方:国家有统一的法律和法规,各省还可以根据需要制定地方的法律和法规。在甲省,国家统一的法律法规和甲省的法律法规都是有效的,而在乙省,则国家统一的法律法规和乙省的法律法规有效。显然,甲省的法律法规在乙省无效。

       设置全局变量的作用是增加了函数间数据联系的渠道。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值。相当于各个函数间有直接的传递通道。由于函数的调用只能带回一个函数返回值,因此有时可以利用全局变量来增加函数间的联系渠道,通过函数调用能得到一个以上的值。

如果还是没弄明白,请去读这篇博文:extern 使用方法总结 https://www.cnblogs.com/renyuan/archive/2012/11/30/2796801.html
变量的作用域.jpg

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
乐乐学编程 + 1 + 1 这张图我收藏了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-1 16:43:54 | 显示全部楼层
兄弟,这张图说得很明白了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-1 17:26:51 | 显示全部楼层
乐乐学编程 发表于 2020-10-1 16:43
兄弟,这张图说得很明白了呀

嗯。我知道了!刚学基础不好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 22:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表