赞
踩
Author:快来啾啾我
ps:废了废了
在我开发的初期,我经常使用全局变量来实现功能逻辑,然而这样会对工程的耦合性等都产生很大的影响。因此这篇文章将记录对全局变量的讲解和如何减少它的使用。
定义在函数内部的变量就是局部变量,只能在其被声明的函数内部被访问。这样的变量只在函数运行时存在,一旦退出函数,这些局部变量就都被销毁。所有在函数内部声明的变量名称都将被加入作用域中。
局部变量存在于 堆栈中,
概念:在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序。一旦变量被定义为全局变量后,在程序任何地方都可以访问,也可以修改。
全局变量存在静态存储区,作用域是全局作用域,整个程序的生命周期内都可以使用。在程序开始时分配存储区,程序执行完毕释放。
程序由多个源文件构成,则全局变量可以在其中一个源文件定义,然后在其他文件用extern关键字去声明。
静态变量和动态变量的划分:变量的内存分配
全局变量本身都是静态存储方式。
静态全局变量的不同在于它限制了*作用域 *。
静态全局变量的作用域限于它定义的源文件内,可以避免其他源文件调用出错。
非静态全局变量作用域时整个程序源文件。
静态和非静态全局变量的不同在于它的访问方式。
静态:可以通过类直接访问
非静态:需要实例化一个对象来访问
static全局变量只初始化一次,防止在其他文件单元中引用
static函数在内存中只有一份,普通函数在每一个被调用中维持一份拷贝。
注意事项
声明放到头文件里面.h
可以在不同文件里声明,需要加extern关键字,但是定义只有一次
声明是没有真正的给分配物理内存空间的,但是它在编译的时候是可以通过的。如果你只有声明引用一个变量,但是没有定义的化,就会在编译链接时候出错,因为找不到相应内存。
注意事项
在C、C++中最好不在头文件里定义,而是在.c、.cpp文件里定义,因为如果在.h定义,多层包含可能会引起重复定义的错误。
声明放到头文件里面
定义给分配了实际的物理内存空间。
全局变量定义的位置,初始化的话只能用常量初始化。不能用另外一个变量来进行赋值。
同理对全局的指针也是,也无法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
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。