A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zuoxiaorui 中级黑马   /  2015-3-7 22:52  /  1451 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

通过学习,我们知道了c语言里面的全局变量和本地变量。
讨论一下:如果一个程序所有的变量都写在任何函数的外面,会造成什么问题?劣势是什么。

11 个回复

正序浏览
所有变量都定义在函数外面的,那么从系统运行开始就会给这些变量分配存储空间,加大了系统运行负担,并且以后都不能重复定义这些变量,不利于以后再次定义。。
回复 使用道具 举报
劣势:1. 占用内存过大,降低程序性能;2. 多个文件分别定义的全局变量如果不小心出现重名,会使程序出现难以预料的情况;3. 文件a的全局变量如果不小心被文件b修改掉,也会使程序出现异常。
回复 使用道具 举报
也不利于变量的使用,一旦某处改变也许会使整个程序都出问题  。尽量不要用太多。。
回复 使用道具 举报
那样会一直占用着内存,不利于内存的优化。优秀的程序员应该让自己的程序占用的内存尽可能的小。
回复 使用道具 举报
所有的变量都写在了任何函数的外面,即是所有的变量都是全局变量了。这样其他函数可能会随意改变变量值。一般不会这样写
回复 使用道具 举报
太占内存了吧
回复 使用道具 举报
那整个程序全部变量定义为全局变量,所有函数都可以调用。但是这样的话 需要分配更多的内存给这些变量,有些变量调用完成后可以释放掉,但设置成全局变量就不行了,这样占用内存大  运行速度慢。
回复 使用道具 举报
全局变量在一个函数执行完之后还是存在的,局部变量在当前的额函数执行完之后就会释放内存,消失
回复 使用道具 举报
arethusa 发表于 2015-3-8 09:37
性能优化啊,不好好看视频,变量都是占用内存的,函数执行完了就得释放内存 ...

有道理啊。
回复 使用道具 举报 1 0
性能优化啊,不好好看视频,变量都是占用内存的,函数执行完了就得释放内存
回复 使用道具 举报
本帖最后由 waterfoxjie 于 2015-3-8 00:28 编辑

我认为:所有的变量都写在了任何函数的外面,即是所有的变量都是全局变量了,这样一来的话,
好处是:若所有变量是定义在所有函数的前面的话,那么所有的函数均可以调用这些变量,进行操作,满足了多个函数调用变量的需求;
坏处是:变量占据了大量的内存空间,假使你定义的变量只在一个函数中被使用到,其他函数均没有使用,而根据变量的作用域来看的话,全局变量是只到程序结束才会被释放空间的,那么那个变量就一直占据着内存了,这样会增加程序运行的负担的;并且这些变量一旦定义成为全局变量,那么它们就不能重复定义使用了,这样也不利于你后面代码的编写。
我个人是建议需要用到什么变量,再在函数中定义局部变量,这样用完了存储空间也会被收回,也可以重复使用变量名。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马