[C语言] 全局变量

[复制链接]
2618|17
 楼主| langgao183 发表于 2014-6-12 08:37 | 显示全部楼层 |阅读模式
请问二姨家的大牛们:有人说尽量少用全局变量,而使用局部变量。但是我的程序里基本都是全局变量,局部用的很少。不知道大牛们怎么看看待全局与局部的使用问题
ayb_ice 发表于 2014-6-12 09:08 | 显示全部楼层
基本观念肯定是对的

如果全局变量较多,最好保证仅在某个函数,或某个模块可改变其值,其它地方只读
zhaoyu2005 发表于 2014-6-12 10:57 | 显示全部楼层
在一定环境下,尽量少用;不是说一定不能多用,有的情况必须很多全局变量。尽量少用是针对有的人:函数内基本不用局部变量(当然是有用到的情况),全部用用全局变量;必须用的情况当然要用
原野之狼 发表于 2014-6-12 11:40 | 显示全部楼层
局部变量能干的事就不要麻烦全局变量了。
另外能静态的就尽量在模块内静态吧,比如:
static int g_foo;
ZG11211 发表于 2014-6-12 13:50 | 显示全部楼层
这个东西要自己编程中慢慢总结了。
江枫渔火 发表于 2014-6-12 22:59 | 显示全部楼层
基本不用全局变量,全局的只是函数
ballack_linux 发表于 2014-6-12 23:14 | 显示全部楼层
用全局变量是会导致可重入的问题的,这种情况在操作系统中比较常见。
miaozhendaoren 发表于 2014-6-12 23:33 | 显示全部楼层
局部变量用太多了,也会爆栈!
hfuter 发表于 2014-6-13 00:37 | 显示全部楼层
全局变量、局部变量,各有好处吧。
全局变量可以在各个函数里修改,一旦出了问题,不是很容易查出问题所在。
利用全局变量设置信号量,倒是很容易在函数间传送信息。
南北lpc 发表于 2014-6-13 01:10 | 显示全部楼层
作为一个后辈,前辈们能不能讲一下什么叫做爆栈
popeye021 发表于 2014-6-13 09:30 | 显示全部楼层
南北lpc 发表于 2014-6-13 01:10
作为一个后辈,前辈们能不能讲一下什么叫做爆栈

堆栈区溢出
 楼主| langgao183 发表于 2014-6-13 10:48 | 显示全部楼层
谢谢大牛们的支教啊
 楼主| langgao183 发表于 2014-6-13 13:46 | 显示全部楼层
江枫渔火 发表于 2014-6-12 22:59
基本不用全局变量,全局的只是函数

这句不是很理解,能详细讲讲吗?
游子 发表于 2014-6-13 15:46 | 显示全部楼层
用全局变量,编译器不知道啥时你不用,它给分配一个内存一直不释放也不给别人用。局部变量,编译器知道函数结束或者函数内不使用后,它就分配给别人用。全局变量用得多你内存一定用得多,本来只用一片SRAM 1K能搞定的芯片,你可能要换有4K的才能搞定。
用全局变量,你编程得时时刻刻注意它是全局的,你不好分析在使用时它的初值是多少,任意修改可能无法预知后果,调试时也难于发现是代码段相互影响引起的问题。局部的作用域在函数之内,第一次使用之前可放心初始化。
所以尽量用局部变量,少用全局变量
 楼主| langgao183 发表于 2014-6-13 16:57 | 显示全部楼层
游子 发表于 2014-6-13 15:46
用全局变量,编译器不知道啥时你不用,它给分配一个内存一直不释放也不给别人用。局部变量,编译器知道函数 ...

一个5K的程序,用了130byte的全局变量,算正常吗?
xyz549040622 发表于 2014-6-13 17:01 | 显示全部楼层
能运行的程序才是好程序,只要你看得懂,写出来无BUG
roykin 发表于 2014-6-13 17:19 | 显示全部楼层
游子 发表于 2014-6-13 15:46
用全局变量,编译器不知道啥时你不用,它给分配一个内存一直不释放也不给别人用。局部变量,编译器知道函数 ...

学习了。。感谢!
江枫渔火 发表于 2014-6-13 20:38 | 显示全部楼层
langgao183 发表于 2014-6-13 13:46
这句不是很理解,能详细讲讲吗?

就是,全局变量只限制在模块内访问,模块外需要通过接口函数来访问模块内的变量。我目前偏向这样做。全局变量要经量少。但如果你需要大容量缓存,你还用局部变量,那是要爆炸的~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

112

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部