精华内容
下载资源
问答
  • 全局变量、全局静态变量、局部变量、局部静态变量区别

    存放位置不同

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

    栈区

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

    堆区

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

    全局区(静态区)

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

    文字常量区

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

    程序代码区

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

    作用域

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

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

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

    4. 当static用来修饰局部变量的时候,它就改变了局部变量的存储位置,从原来的栈中存放改为静态存储区。但是局部静态变量在离开作用域之后,并没有被销毁,而是仍然驻留在内存当中,直到程序结束,只不过我们不能再对他进行访问。作用域还是局部作用域。
    展开全文
  • 1.全局静态变量只能被当前源文件引用,不能被工程里其它源文件引用。 除了这点特殊,其它与普通的全局...2.局部静态变量,只执行一次初始化,只能被所在函数引用,函数执行 完毕,变量仍存在,生存周期贯穿整个程序

    1.全局静态变量只能被当前源文件引用,不能被工程里其它源文件引用。

    除了这点特殊,其它与普通的全局变量一样。

    2.局部静态变量,只执行一次初始化,只能被所在函数引用,函数执行

    完毕,变量仍存在,生存周期贯穿整个程序。

    展开全文
  • 关于局部变量、局部静态变量的定义 局部变量:形参和函数体内部定义的...2.局部变量的生命周期由其定义方式决定,定义函数体外的变量作用于整个程序的执行过程,定义函数体内的作用于此函数执行的过程。 3.静态

    关于局部变量、局部静态变量的定义

    局部变量:形参和函数体内部定义的变量。

    局部静态变量:将局部变量定义为static类型。

    三者区别

    1.形参是一种自动对象,是由传递函数的实参进行初始化,作用域仅仅是在所在函数体内有用,函数终止,则形参也被销毁。

    2.局部变量的生命周期由其定义方式决定,定义在函数体外的变量作用于整个程序的执行过程,定义在函数体内的作用于此函数执行的过程中。

    3.静态局部变量在第一次被初始化之后直到程序结束才被销毁。

    展开全文
  • 比如有全局静态变量、局部变量、局部静态变量等,那么他们之间又有什么区别呢!强烈的求知欲促使我去网上找了很多的资料。也对他们做了一个区分。  C#变量分为:全局变量、静态全局变量、局部变量和静态局部变量...

           最近在学习设计模式中的单例模式时,里面用到了一个全局变量,虽然早在学习VB的时候就明白什么是全局变量,但从来没有区分过。比如有全局静态变量、局部变量、局部静态变量等,那么他们之间又有什么区别呢!强烈的求知欲促使我去网上找了很多的资料。也对他们做了一个区分。

           C#中变量分为:全局变量、静态全局变量、局部变量和静态局部变量

           1、按存储区域分

           (1)全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域;

           (2)局部变量存放在内存的栈区。

           2、按作用域分

           (1)全局变量在整个工程文件内都有效;

           (2)静态全局变量只在定义它的文件内有效;

           (3)静态局部变量只在定义它的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失;

           (4)局部变量在定义它的函数内有效,但是函数返回后失效。


           以上是对于他们宏观上的区分,接下来具体的区分他们之间的关系:


           1、全局变量和静态全局变量的区别——作用域


           这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误。可以说静态全局变量比全局变量的限制更大一点。


           2、局部变量和静态局部变量的区别——生存期


           静态局部变量只在它定义的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失。虽然离开定义它的函数后不能使用,但如再次调用该函数,静态局部变量还可以继续使用,而且保存了前次调用后保留下来的值。
           局部变量也仅仅在它定义的函数内部有效,但是调用函数结束后,返回时失效。


           3、静态局部变量和全局变量的区别


           上面对于静态局部变量已经介绍过了,它的作用域定义在函数内,离开了函数就不能用了。而全局变量定义后所有的函数都可以使用。前者是只能用于一个函数,而后者却可以应用于所有的函数。

           总结:

           这只算是学习中的一个小插曲,其实这也是我学习中一个不太好的习惯。当遇到一个不太明白的时候就会去疯狂的找资料。有时候会比较过头,浪费了不少的时间,耽误了学习效率。说到这一点,我看了一篇聚哥的博客,感触很深。题目是:读米老师博客有感。  感觉里面说的:“遇到问题,学到不到黄河不死心”形容的就是自己,我承认确实太爱钻牛角尖了。现在自己醒悟了过来,也在逐步的改进当中,爱查资料确实是好的,但是一定要有度。这样才能不耽误学习进度和效率!
    展开全文
  • 概念首先得明白局部变量静态局部变量,全局变量静态全局变量这几个概念,以下面程序举例://main.cpp int a = 0; //全局变量 static int b=0;//静态全局变量 main() { int c; //局部变量 static int d;//静态...
  • 局部静态变量:静态区 全局变量: 静态区的常量区 全局静态变量:静态区 进行C/C++编程时,需要程序员对内存的了解比较精准。经常需要操作的内存可分为以下几个类别:   1、栈区(stack)— 由编译器自动分配...
  • 局部静态变量Static详解

    万次阅读 多人点赞 2017-03-10 18:01:40
    在局部变量前加上“static”关键字,就成了静态局部变量静态局部变量存放内存的全局数据区。...静态局部变量与全局变量共享全局数据区,但静态局部变量定义它的函数可见。静态局部变量与局
  • Tables 作用域 ... 整个程序 0 没有全局变量的概念 main()函数前(类外)定义,用extern int g_int ;声明,才可以使用 静态全局变量 定义它的文件内 内存的静态存储区域 整个程序 0 类里声
  • 局部静态变量static详解

    万次阅读 多人点赞 2018-05-22 08:03:20
    静态局部变量存放内存的全局数据区。函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。它始终驻留全局数据区,直到程序运行结束。静态局部变量的初始化与全局变量类似.如果不为...
  • 1、static关键字作用 1.1 隐藏   ...//a.c文件 char a = 'A'; void msg() {  printf("Hello\n"); } //main.c文件 extern char a; printf("%c",a); 输出结...
  •  今天论坛上看到有朋友发帖问道:既然静态全局变量与全局变量都存储全局数据区,为什么作用域却不一样呢?也许答案非常简单:C++就是这么规定的,静态全局变量与全局变量的唯一区别就是作用域不同。  对一个...
  • 静态局部变量保存全局数据区,而不是保存,每次的值保持到下一次调用,直到下次赋新值。该变量在全局数据区内分配内存;静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行...
  • 变量可以分为全局变量静态全局变量静态局部变量局部变量 按存储区域分:全局变量静态全局变量静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分:全局变量在整个工程文件内都...
  • C和C++全局变量,局部变量,静态变量和常量

    千次阅读 多人点赞 2016-08-14 22:54:15
    C/C++常量,静态变量,全局变量和局部变量的区别和作用。把局部变量改变为静态局部变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态全局变量是改变了它的作用域, 限制了它的使用范围。因此...
  •  按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的 文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存, 函数返回后,该变量不会消失;局部变量在定义它的函数内...
  • 成员变量是 定义一个类的变量:类方法外 局部变量是定义一个方法内的变量:方法 成员变量分为: 静态属性:随类的存在而存在,是类加载的初始化 非静态属性:随实例的属性存在而存在。 局部变量: ...
  •   基本概念: 作用域:起作用的区域,也就是可以工作的范围。...C语言中局部变量就分配。   局部变量  普通的局部变量定义的时候直接定义或者前面加上auto void func1(void){&nbs...
  • 静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...
  • 今天被问到了一个问题:如何让请求的类延迟释放如果要延迟释放或者在程序整个生命周期都存在可以考虑两种方式,一是定义一个静态变量,二是用单例。用单例本质上用的是静态变量。单例的写法如下:+ (instancetype)...
  • 1、全局变量在整个工程文件内都有效; 2、静态全局变量只在定义它的文件内有效; 3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,...
  • 1、bss是英文block started by symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,程序载入时由内核清0。bss段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户...
  • 下面有几种网上的理解,我整理一下:一: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员...
  • 静态变量在并发程序中的问题

    千次阅读 2009-09-17 10:04:00
    好长时间没有写博客了,最近犯了一个很低级的错误,本来做一个并发访问程序中,使用了静态数据库连接变量,导致部分用户不能使用, 希望下次不要再犯这样的低级错误。
  • 一、程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构的栈。 2、堆区(heap) — ...
  • 全局变量局部变量静态全局变量静态局部变量的区别   转自:http://hi.baidu.com/sindana/blog/item/06fe68171e364401c93d6ded.html 标签:全局变量 局部变量 静态全局变量 静态局部变量 ...
  • static有两种用法:面向...全局变量局部变量静态全局变量静态局部变量的区别  C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,
  • 静态局部变量和动态局部变量区别

    千次阅读 2020-05-13 10:03:05
    1.静态局部变量属于静态存储类别,在静态存储区分配存储单元,在整个运行期间都不释放。 而自动变量(动态局部变量)属于动态存储类别,动态存储空间,函数调用后释放 2.静态局部变量在编译时赋初值,程序运次时已经...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 261,154
精华内容 104,461
关键字:

局部静态变量在整个程序中占