精华内容
下载资源
问答
  • 本文主要介绍了C++中的局部变量、全局变量、局部静态变量、全局静态变量的区别。具有很好的参考价值,下面跟着小编一起来看下吧
  • 全局变量、全局静态变量、局部变量、局部静态变量区别

    存放位置不同

    局部变量:栈区
    静态局部变量:静态区
    全局变量:静态区的常量区
    全局静态变量:静态区

    栈区

    由编译器自动分配释放,存放函数的参数值,局部变量的值。其操作方式类似于数据结构中的栈。

    堆区

    一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。它与数据结构中的堆不同,它的分配方式类似于链表。

    全局区(静态区)

    全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和未初始化的静态变量放在相邻的另一块区域。程序结束后由系统释放。

    文字常量区

    常量字符串存放。程序结束后由系统释放。

    程序代码区

    存放函数体的二进制代码。

    作用域

    1. 全局变量有全局作用域。全局变量只需要在一个源文件中定义,就可以作用于所有的源文件。不过,在其他不包括全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

    2. 静态全局变量也有全局作用域,但是与全局变量的区别在于全局变量对于所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。即被static关键字修饰过的变量具有文件作用域,它作用于定义它的文件里,不能作用到其他文件里。即使两个不同的源文件都定义了相同的静态局部变量,他们也是不同的变量。不会报错。

    3. 局部变量只有局部作用域,这是自动对象,只在函数执行期存在,函数的一次调用结束后,变量就被撤销,其占用的内存也就被回收了。

    4. 当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。作用域还是局部作用域。
    展开全文
  • 全局变量与全局静态变量的区别

    千次阅读 2018-12-31 13:05:15
    2、若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。 3、具有外部链接的静态;可以在所有源文件...

    全局变量与全局静态变量的区别:
    1、若程序由一个源文件构成时,全局变量与全局静态变量没有区别。
    2、若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。
    3、具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;
    静态全局变量的作用:
    1、不必担心其它源文件使用相同变量名,彼此相互独立。
    2、在某源文件中定义的静态全局变量不能被其他源文件使用或修改。
    3、只能在本文件中使用!具有内部链接的静态;不允许在其他文件里调用;

     

    展开全文
  • 全局变量、局部变量、全局静态变量、局部静态变量的区别。要从分配内存的位置和作用域入手来解释。 全局变量,分配的内存在静态存储区内存上面,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用,...

    全局变量、局部变量、全局静态变量、局部静态变量的区别。要从分配内存的位置和作用域入手来解释。

    全局变量,分配的内存在静态存储区内存上面,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用,同时,有些程序并不是由一个源文件构成的,可能有许多个源文件构成,全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,当然,必须在其他文件使用extern关键字声明该变量。

    局部变量,分配内存是分配在栈存储区上的,其作用域也只是在局部函数内,在定义该变量的函数内,只要出了该函数,该局部变量就不再起作用,该变量的生命周期也只是和该函数同在。

    全局静态变量,分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开始到结束一直起作用,但是与全局变量不同的是,全局静态变量作用域只在定义它的一个源文件内,其他源文件不能使用它。

    局部静态变量,分配的内存也是在静态存储内存上的,其第一次初始化后就一直存在直到程序结束,该变量的特点是其作用域只在定义它的函数内可见,出了该函数就不可见了。

    展开全文
  • 静态变量的一个很重要的特征...2、若程序由多个源文件构成时,全局静态变量可以在整个程序文件中使用(加上extern),全局静态变量会被隐藏,即对组成该程序的其它源文件是无效的。 还有其他的区别,但这个最重要!

    静态变量的一个很重要的特征就是隐藏 ,即外部不可见。

    1、若程序由一个源文件构成时,全局变量与全局静态变量没有区别;

    2、若程序由多个源文件构成时,全局静态变量可以在整个程序文件中使用(加上extern),全局静态变量会被隐藏,即对组成该程序的其它源文件是无效的。

    还有其他的区别,但这个最重要!

    展开全文
  • 1.全局静态变量只能被当前源文件引用,不能被工程里其它源文件引用。 除了这点特殊,其它与普通的全局变量一样。 2.局部静态变量,只执行一次初始化,只能被所在函数引用,函数执行 完毕,变量仍存在,生存周期...
  • 静态局部变量的特点: 1.不会随着函数的调用和退出而发生变化,不过,尽管该变量还...虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。复制代码 代码如下:functio
  • 比如有全局静态变量、局部变量、局部静态变量等,那么他们之间又有什么区别呢!强烈的求知欲促使我去网上找了很多的资料。也对他们做了一个区分。  C#中变量分为:全局变量、静态全局变量、局部变量和静态局部变量...
  • 全局静态变量:静态区 在进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别:   1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作...
  • 静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量)就属于静态存储方式,但不是静态变量。必须有static加以定义才是静态变量,或静态全局变量...
  • 全局变量与全局静态变量的区别: (a)若程序由一个源文件构成时,全局变量与全局静态变量没有区别。 (b)若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独...
  • 全局变量和全局静态变量的区别

    千次阅读 2015-06-30 22:24:49
    1)全局变量是不显式用static修饰的全局变量,全局变量...2)全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。// Book.h NSString *const bookName =
  • 全局变量,全局静态变量,局部变量,静态局部变量  术语static有着不寻常的历史.起初,在C中引入关键字static是为了表示退出一个块后仍然存在的局部变量。随后,static在C中有了第二种含义:用来表示不能被其它...
  • 局部、局部静态、全局、全局静态变量联系区别: 首先明白6大作用域:全局作用域、局部作用域、文件作用域、命名空间作用域、语句作用域、类作用域 1.从作用域区别: 局部与局部静态变量作用与局部作用域; 全局...
  • C++全局变量与全局静态变量: <em><strong><span style="color:#ff0000">C++ 全局变量和全局静态变量的根本区别还是作用域的区别</span></strong></em> 1.全局变量是不显示...
  • 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。...
  • 2、C++全局静态变量的析构销毁顺序是未定义的,特别是在多线程环境,多dll环境下,特别复杂,但是在某个编译器下,析构顺序是一定,按着构造的反顺序析构,其他都是随机,不确定的。 3、堆、栈、静态存储区 1...
  • 创建全局可变变量的例子二、创建全局静态变量的三种方式2.1 match2.2 lazy_static!宏2.2.1 lazy_static!的作用接下去使用 lazy_static! 消除上面的所有问题。2.2.2回到颜色的例子2.3phf2.4Benchmarks Rust中的全局...
  • 局部变量: 创建在栈区(向下生长),生命周期存在于当前作用域中。 创建时若未初始化,则为随机值。...全局变量和静态变量的存储是放在一块的,初始化了的全局变量和静态变量在一块区域,  未初始化的全局变量
  •  今天在论坛上看到有朋友发帖问道:既然静态全局变量全局变量都存储在全局数据区,为什么作用域却不一样呢?也许答案非常简单:C++就是这么规定的,静态全局变量全局变量的唯一区别就是作用域不同。  对一个...
  • [Unity&对象]怎么使用全局静态变量

    千次阅读 2017-05-27 12:02:18
    在实际应用中,为了避免代码冗余,有的时候会用到 全局 静态 变量 本文 已 全局 静态数组为例 ,做出说明 ---------------------------------------------------------------------- 定义一个全局 静态 类 using ...
  • java类全局静态变量在多线程中数据混乱问题 解决方法: 可以使用ThreadLocal实现线程内的数据共享,而在另外线程中运行时又共享另外一份数据。 用法:http://www.yayihouse.com/yayishuwu/chapter/1174
  • 总所周知:static 变量全局有效地,程序结束的时候才会析构   依赖于这一点: 我们可以用于定义全局变量,并且比较优雅的实现全局变量的使用:   1. 类本身作为全局变量使用 依赖另一点:当类的构造函数为私有时...
  • Thymeleaf添加全局静态变量

    千次阅读 2018-02-28 18:25:25
    问题:在使用Thymeleaf模板时,某些地方需要使用全局变量,即在Java中一处赋值,在任何页面均可获取。 解决方法: @Resource private void configureThymeleafStaticVars(ThymeleafViewResolver viewResolver)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 353,233
精华内容 141,293
关键字:

全局静态变量