毋献仪 发表于 2025-6-4 17:00:48

局部变量和全局变量

局部变量和全局变量

局部变量

定义变量可能有3种情况:

[*]在函数的开头定义
[*]在函数内的复合语句内定义
[*]在函数的外部定义
在一个函数内部定义的变量只在本函数范围内有效,也就是说只有在本函数内才能引用它们,在此函数以外是不能使用这些变量的
在复合语句内定义的变量只在本复合语句范围内有效,只有在本复合语句内才能引用它们,在该复合语句以外是不能使用这些变量的
以上称为“局部变量”
主函数中定义的变量也只在主函数中有效,并不因为在主函数中定义而在整个文件中或程序中有效。主函数也不能使用其他函数中定义的变量
不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰
形参也是局部变量
在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合语句也称为“分程序”或“程序块”
全局变量

程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数,在函数内定义的变量是局部变量,而在函数外定义的变量称为外部变量,外部变量是全局变量(也称全程变量)
全局变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的开始到本源文件结束
在一个函数中既可以使用本函数中的局部变量,也可以使用有效的全局变量
设置全局变量的作用是增加了函数间数据联系的渠道,由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其他函数中全局变量的值,相当于各个函数间有直接的传递通道,由于函数的调用只能带回一个函数返回值,因此有时可以利用全局变量来对增加函数间的联系渠道,通过函数调用能得到一个以上的值
建议不在必要时不要使用全局变量,原因如下:

[*]全局变量在程序的全部执行过程中都占用存储单元,而不是仅在需要时才开辟
[*]它使函数的通用性降低了,因为如果在函数中引用了全局变量,那么执行情况会受到有关的外部变量的影响,如果将一个函数移到另一个文件中,还要考虑把有关的外部变量及其值一起移过去。但是若该外部变量与其他文件的变量同名时,就会出现问题。这就降低了程序的可靠性和通用性。在程序设计中,在划分模块时要求模块的“内聚性”强、与其他模块的“耦合性”弱。即模块的功能要单一(不要把许多互不相干的功能放到一个模块中)与其他模块的相互影响要尽量少,而用全局变量是不符合这个原则的。一般要求C程序中的函数做成一个相对的封闭体,除了可以通过“实参---形参”的渠道与外界发生联系外,没有其他渠道。这样的程序移植性好,可读性强
[*]使用全局变量过多,会降低程序的清晰性,人们往往难以清楚的判断出每个瞬时各个外部变量的值。由于在各个函数执行时都可能改变外部变量的值,程序容易出错。因此,要限制使用全局变量
如果在同一个源文件中,全局变量和局部变量同名时,在局部变量的作用范围内,局部变量有效,全局变量被“屏蔽”,即全局变量不起作用

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

卿搞笔 发表于 2025-11-26 19:07:53

不错,里面软件多更新就更好了

列蜜瘘 发表于 2025-11-27 16:51:27

用心讨论,共获提升!

固拆棚 发表于 2025-11-28 13:24:32

感谢分享,学习下。

谲脾 发表于 2025-12-7 00:40:59

前排留名,哈哈哈

靛尊 发表于 2025-12-26 03:42:53

这个好,看起来很实用

恙髡 发表于 2026-1-2 21:31:30

感谢分享,学习下。

韦逸思 发表于 2026-1-13 01:53:58

懂技术并乐意极积无私分享的人越来越少。珍惜

簧横 发表于 2026-1-14 15:04:04

感谢,下载保存了

史华乐 发表于 2026-1-14 20:01:11

谢谢分享,辛苦了

亢安芙 发表于 2026-1-18 01:23:04

收藏一下   不知道什么时候能用到

麓吆 发表于 2026-1-19 03:54:55

前排留名,哈哈哈

倡遍竽 发表于 2026-1-20 10:43:00

这个好,看起来很实用

尚腱埂 发表于 2026-1-20 19:09:57

谢谢楼主提供!

匡菲 发表于 2026-1-21 08:43:27

鼓励转贴优秀软件安全工具和文档!

任静柔 发表于 2026-1-22 05:40:54

感谢分享,下载保存了,貌似很强大

岭猿 发表于 2026-1-22 09:12:42

分享、互助 让互联网精神温暖你我

何玲 发表于 2026-1-22 09:49:11

感谢分享,学习下。

诞楮 发表于 2026-1-23 05:01:34

感谢分享

缢闸 发表于 2026-1-23 08:32:29

过来提前占个楼
页: [1] 2
查看完整版本: 局部变量和全局变量