玛卡巴卡的卡巴卡玛 发表于 2024-11-13 22:23:15

局部变量和全局变量

局部变量和全局变量

局部变量

界说变量可能有3种情况:

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

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 局部变量和全局变量