c语言中 全局变量与局部变量在内存中的区别
2个回答
展开全部
看了楼上的回答,虽然能完全解释这个问题.
但是我不能完全同意其说法.
CPU 内存 等硬件高度发展的今天,这些已经不是我们所必需要考虑的因素.
注明: 如下内容,并非针对本题(内存区别),只是根据我的经验说几句.
其实,除了连接数据库的相关配置等以外的东西的,我不太推荐使用全局变量.因为,在一个大程序运行时,别说一个变量,就算是子程序与子程序不停地切换也是非常正确的事.如果使用太多的全局变量,对安全非常不利.
所以应该尽可能使用局部变量,不但要使用,还要细分成多个层次,比如,函数内部的,为最低层,那么,函数外面的,为第二层,再往上走,....(略去一些),程序与程序之间的通信,为处三层,...(略去一些),再往上走,出了整个程序的,为最高层,也就是全局变量.
仅为个人看法和经验之谈,有兴趣的朋友,可以跟我交流.
不感兴趣的朋友请飘过,别骂我.因为骂我也没用.呵呵....
但是我不能完全同意其说法.
CPU 内存 等硬件高度发展的今天,这些已经不是我们所必需要考虑的因素.
注明: 如下内容,并非针对本题(内存区别),只是根据我的经验说几句.
其实,除了连接数据库的相关配置等以外的东西的,我不太推荐使用全局变量.因为,在一个大程序运行时,别说一个变量,就算是子程序与子程序不停地切换也是非常正确的事.如果使用太多的全局变量,对安全非常不利.
所以应该尽可能使用局部变量,不但要使用,还要细分成多个层次,比如,函数内部的,为最低层,那么,函数外面的,为第二层,再往上走,....(略去一些),程序与程序之间的通信,为处三层,...(略去一些),再往上走,出了整个程序的,为最高层,也就是全局变量.
仅为个人看法和经验之谈,有兴趣的朋友,可以跟我交流.
不感兴趣的朋友请飘过,别骂我.因为骂我也没用.呵呵....
展开全部
全局变量是使用相同的内存块在整个类中存储一个值.
全局变量的存在主要有以下一些原因:
1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少。
3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。
总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。
局部变量:在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
全局变量的存在主要有以下一些原因:
1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2,使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样现在也快不了多少。
3,对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。
总之,全局变量可以使用,但是全局变量使用时应注意的是尽可能使期名字易于理解,而且不能太短,避免名字空间的污染;避免使用巨大对象的全局变量。
局部变量:在程序中,只在特定的过程或函数中可以访问的变量,是相对与全局变量而言的。
全局变量也称为外部变量,是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。全局变量全部存放在静态存储区,在程序开始执行时给全局变量分配存储区,程序行完毕就释放。
局部变量可以和全局变量重名,但是局部变量会屏蔽全局变量。在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询