打印
[技术问答]

全局变量与全局结构体变量的优缺点是什么

[复制链接]
1128|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sparrow054|  楼主 | 2022-9-13 20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


有些小功能的程序还好,几个小功能的程序还好写,

但是涉及到功能多的时候,可能得需要比较多的代码去实现,


在这样的情况下,我看好多人在编程的时候对于各个函数之间参数的传递,大部分是使用全局结构体进行传递,有人说使用全局变量不太好,我想知道为什么?全局变量和全局结构体的作用域都一样,但是为什么大部分是使用结构体。

使用特权

评论回复
沙发
Stahan| | 2022-9-13 21:31 | 只看该作者
结构体方便

使用特权

评论回复
板凳
tpgf| | 2022-10-9 12:05 | 只看该作者
全局变量缺点:降低程序的内聚性。名字冲突。生存期长,一直占用内存。任何函数都可能改变值,易发生意料之外的错误,调试困难。.全局变量是在程序开始时进行初始化的,这样会造成你的程序启动变慢。 优点:全局可视。减少传递实参带来的开销。 如果确实有大量数据需要共享的话,建议还是用单独的类封装一下。

使用特权

评论回复
地板
磨砂| | 2022-10-9 12:20 | 只看该作者
结构体变量:
优点:方便。
缺点:使用范围受限,如果几个返回值正好是某个已有结构体变量的内容,那才是不二的选择。如果单独为了返回几个值而定义一个结构体变量,则得不偿失,增加编程的工作量。所以这个方法用的少。
传值参数(指针):
优点:用传值参数(指针)回传返回值是最常用的方法,需要哪一个值回传,就定义哪一个变量的指针,用完就把内存收回来了,执行速度快,程序直观,函数的移植性好。
缺点:要熟悉指针的使用,别搞乱套。定义指针,增加了一些工作量。

使用特权

评论回复
5
晓伍| | 2022-10-9 12:54 | 只看该作者
全局变量保存在静态存贮区,程序开始运行时为其分配内存,程序结束释放该内存。与局部变量的动态分配、动态释放相比,生存期比较长,因此过多的全局变量会占用较多的内存单元。

使用特权

评论回复
6
八层楼| | 2022-10-9 13:08 | 只看该作者
全局变量破坏了函数的封装性能,使函数的代码可读性降低

使用特权

评论回复
7
观海| | 2022-10-9 13:17 | 只看该作者
如果不是万不得已,最好不要使用全局变量,因为它的缺点远远多于优点

使用特权

评论回复
8
guanjiaer| | 2022-10-9 13:27 | 只看该作者
即便代码多 在没有必要的情况下也不要考虑全局变量

使用特权

评论回复
9
nongshengjiang| | 2022-10-23 22:03 | 只看该作者
那有的数据很多函数都用到,亲们都怎么定义?还有可以不是全局变量的吗?

使用特权

评论回复
10
nongshengjiang| | 2022-10-23 22:08 | 只看该作者
观海 发表于 2022-10-9 13:17
如果不是万不得已,最好不要使用全局变量,因为它的缺点远远多于优点

我一大堆全局变量那不完了,真想不出一些数据在很多函数里用到,那又怎么定义?

使用特权

评论回复
11
AloneKaven| | 2022-11-2 22:15 | 只看该作者
全局变量破坏了函数的封装性

使用特权

评论回复
12
Stahan| | 2022-11-5 20:47 | 只看该作者
过多的全局变量会占用较多的内存单元

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

128

主题

725

帖子

2

粉丝