局部变量和全局变量,如何减少全局变量的频繁使用

Author:快来啾啾我
ps:废了废了



前言

在我开发的初期,我经常使用全局变量来实现功能逻辑,然而这样会对工程的耦合性等都产生很大的影响。因此这篇文章将记录对全局变量的讲解和如何减少它的使用。


一、局部变量(Local Variable)

1、局部变量是什么?

定义在函数内部的变量就是局部变量,只能在其被声明的函数内部被访问。这样的变量只在函数运行时存在,一旦退出函数,这些局部变量就都被销毁。所有在函数内部声明的变量名称都将被加入作用域中。

1.1局部变量存储位置

局部变量存在于 堆栈中,

2、局部变量是什么?


二、全局变量(Global Variable)

1、全局变量是什么?

概念:在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序。一旦变量被定义为全局变量后,在程序任何地方都可以访问,也可以修改。

1.1全局变量存储位置

全局变量存在静态存储区,作用域是全局作用域,整个程序的生命周期内都可以使用。在程序开始时分配存储区,程序执行完毕释放。
程序由多个源文件构成,则全局变量可以在其中一个源文件定义,然后在其他文件用extern关键字去声明。


2、静态全局变量和非静态全局变量

静态变量和动态变量的划分:变量的内存分配

全局变量本身都是静态存储方式。
静态全局变量的不同在于它限制了*作用域 *。

静态全局变量的作用域限于它定义的源文件内,可以避免其他源文件调用出错。
非静态全局变量作用域时整个程序源文件。

静态和非静态全局变量的不同在于它的访问方式。

静态:可以通过类直接访问
非静态:需要实例化一个对象来访问

static全局变量只初始化一次,防止在其他文件单元中引用
static函数在内存中只有一份,普通函数在每一个被调用中维持一份拷贝。


3、全局变量的声明、定义和使用

3.1声明

注意事项

声明放到头文件里面.h
可以在不同文件里声明,需要加extern关键字,但是定义只有一次

声明是没有真正的给分配物理内存空间的,但是它在编译的时候是可以通过的。如果你只有声明引用一个变量,但是没有定义的化,就会在编译链接时候出错,因为找不到相应内存。

3.2定义

注意事项

在C、C++中最好不在头文件里定义,而是在.c、.cpp文件里定义,因为如果在.h定义,多层包含可能会引起重复定义的错误。
声明放到头文件里面

定义给分配了实际的物理内存空间。

3.3使用

全局变量定义的位置,初始化的话只能用常量初始化。不能用另外一个变量来进行赋值。
同理对全局的指针也是,也无法malloc,因为malloc是个函数。

在全局的位置除了包含头文件的预处理指令外,就是全局变量,而且只能用常量初始化,并且也无法执行语句,只能声明和变量定义。所以全局变量的声明在头文件,定义在源文件里。

https://blog.csdn.net/laibunizi123/article/details/111597466
https://blog.csdn.net/fanxueya1322/article/details/86566685
https://www.cnblogs.com/gaigaichen/p/6860961.html
https://www.pinlue.com/article/2020/12/1520/3811417907029.html

在这里插入图片描述

4、全局变量的优缺点

三、局部变量和全局变量的区别

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

https://www.cnblogs.com/gaigaichen/p/6860961.html

https://www.pinlue.com/article/2020/12/1520/3811417907029.html

四、如何减少使用

一旦变量被定义为全局变量后,在程序任何地方都可以访问,也可以修改。所以我们不建议过多的使用全局变量(非必要不使用),因为这样可能会导致全局变量的不可预知性,并且全局变量也降低了函数或模块之间的通用性,同时也降低了代码的可读性,别人有可能不知道这个调用的是哪的变量。

https://www.renrendoc.com/paper/103602778.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值