精华内容
下载资源
问答
  • 普通局部变量分配在栈上,作用域为代码块作用域,生命周期是临时的,链接属性是无连接(编译时是一个函数形成一个单元,链接时是函数与函数之间的层次在交换,函数内部的局部变量与其他函数没有直接的联系,所以是无...

           普通局部变量分配在栈上,作用域为代码块作用域,生命周期是临时的,链接属性是无连接(编译时是一个函数形成一个单元,链接时是函数与函数之间的层次在交换,函数内部的局部变量与其他函数没有直接的联系,所以是无连接的)。  定义时未显式初始化其值是随机的(因为其分配在栈上,在栈上的内存其他变量用完时是不会清理内存的,所以通常说栈内存是脏的),变量地址由运行时在栈上分配得到的,多次执行时地址不一定相同(局部变量在分配空间时是哪里有位置就分配到哪里的,在函数结束时就会释放掉这块空间),函数不能返回局部变量的地址(指针)作为返回值(因为局部变量的地址时随机的,如果返回了该地址,其他函数访问该地址时,就不是该变量了)。

           静态局部变量分配在数据段/bss段(显式初始化为非0则在数据段,显式初始化为0或未显式初始化则在bss段),作用域为代码块作用域,生命周期为永久,链接属性为无连接,定义时如果未显式初始化默认为0,变量的地址由运行时环境在加载程序时确定,整个程序运行过程中唯一不变。数据段和bss段在本质上明显区别,是为了对内存进行优化。在对程序进行编译运行时,加载器会在全局变量里分配空间,只需要对数据段的变量和他的值挨个的拷贝,在bss段只要对其清零就可以。

           静态局部变量其实就是作用域为代码块作用域(链接属性为无连接)的全局变量。静态局部变量可以改为使用全局变量来实现,但是在程序中要尽量避免使用全局变量,太多全局变量的话会破坏程序的结构性。

           静态全局变量/静态函数和普通全局变量/普通变量的唯一差别时:static使全局变量/函数的链接属性由外部链接(整个程序所有文件范围)转为内部链接(仅当前c文件内)。这是为了解决全局变量/函数的重名问题(c语言没有命名空间namespace的概念,因此在程序中文件变多之后全局变量/函数的重名问题非常严重,将不必要被其他文件引用的全局变量/函数声明为static可以很大程度上改善重名问题,但是仍未彻底解决)。所以写程序要尽量避免使用全局变量。

           在编程时要注意区分全局变量的定义和声明。一般规律如下:如果定义的同时有初始化则一定会被认为时定义;如果只是定义而没有进行初始化则又可能被编译器认为时定义,也有可能被认为时声明,(如果在a.c和b.c出现了两个重名的全局变量但是都没有初始化,编译器不会报错,会默认为一个时定义一个时声明)要进行具体的分析。如果使用extern则肯定会被认为时声明(实际上extern也可以有定义,加上extern可以明确的告诉我们把这个变量变为外部链接的)。

           全局变量在定义应该在c文件中并且在头文件中声明,而不是定义在头文件中(如果定义在头文件中,则该头文件被多个c文件包含时该全局变量会重复定义),头文件中应该放一些类型定义、宏、函数声明这样的。 

           在b.c中引用a.c中定义的全局变量/函数有两种方法:一种是在a.h中声明该函数/全局变量,然后再b.c中#include “a.h”。二是再b.c中使用extern显式声明要引用的函数/全局变量

           根据上面的描述可以看出:存储类决定了变量的声明周期,作用域决定了链接属性。宏和inline函数的链接属性为无连接。

    展开全文
  • 1、局部变量能否和全局变量重名?  答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器...

    1、局部变量能否和全局变量重名?   

      答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " 

        局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 

    2、如何引用一个已经定义过的全局变量?   

      答:可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变量,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 


    3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?  

      答:可以,在不同的C文件中以static形式来声明同名全局变量。前提是只能有一个C文件中对此变量赋初值,连接才不会出错 

     

    4、语句for( ;1 ;)有什么问题?它是什么意思?  

      答:和while(1)相同。 


    5、do……while和while……do有什么区别?   

      答:前一个循环一遍再判断,后一个判断以后再循环   

    6、请写出下列代码的输出内容   

    #include <stdio.h>     
    main()     
    {      
    int a,b,c,d;      
    a=10;   
    b=a++;    
    c=++a;    
    d=10*a++;   
    printf( "b,c,d:%d,%d,%d",b,c,d);   
    return 0;   
    } 

     

     答:10,12,120 


    7、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 

    答:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;

           static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

           static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

     

    (1)用static定义的全局变量,构成静态的全局变量,若是一个源程序由多个源文件组成,一般的全局变量在各个源文件中都是有效的,而用static修饰的全局变量只在定义该变量的源文件中是有效的,因此static限制了全局变量的作用范围。
    (2)普通局部变量在所在的函数每次调用的时候都会被重新分配存储空间,函数结束后,就会回收该存储空间。而用static修饰的局部变量不会,它的值始终保持着。
    (3)static函数与普通函数作用域不同,它仅作用于定义它的源文件中。

    (4)储存方式:程序的局部变量存在于(堆栈)中,全局变量存在于(静态区/全局区)中,动态申请(new)数据存在于(堆)中。

      

    8.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?


    c用宏定义,  #define S(a,b) a*b

    c++用inline  

    引入内联函数的目的是为了解决程序中函数调用的效率问题。内联函数是指用inline关键字修饰的函数。任何在类的说明部分定义的

    函数都会被自动的认为是内联函数。

    它与一般函数所不同之处只在于函数调用的处理。

    内联函数必须是和函数体声明在一起才有效。像这样的申明Inline Tablefunction(int I)是没有效果的,编译器只是把函数作为普通的函数声明,

    我们必须定义函数体。

    Inline tablefunction(int I) {return I*I};  这样我们才算定义了一个内联函数。我们可以把它作为一般的函数一样调用。

    但是执行速度确比一般函数的执行速度要快。

    (C#有无内联函数:C#就没有头文件,哪来的内联外联?要说内联,应该全都是内联,因为所有函数什么的都定义在一个文件里。存在内联函数,但要注意,在何处内联代码的决定完全由CLR做出,我们无法使用像C++中inline这样的关键字来控制那些方法是内联的。)

     

     

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

    C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

    从作用域看:

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

    静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。

    局部变量也只有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

    静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

    从分配内存空间看:
    全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间

     

     

    全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

        1)、静态变量会被放在程序的静态数据存储区(数据段)(全局可见)中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。
      2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。

    从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。应予以注意。

    Tips:
      A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
      B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
      C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;
        D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)
        E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    -----------------------------------------------------------------------------------------------------------

    static 全局变量:改变作用范围,不改变存储位置

    static 局部变量:改变存储位置,不改变作用范围

    静态函数 :在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。

                    如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数也称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可。

     

     

    参考:

    https://www.cnblogs.com/burandanxin/archive/2009/10/16/1584735.html

    https://blog.csdn.net/Zhanganliu/article/details/79185251

    展开全文
  • 局部变量 定义:局部变量指在程序中只在特定过程或函数中可以访问的变量。换言之,在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外时不能使用这些...

    局部变量

    定义:局部变量指在程序中只在特定过程或函数中可以访问的变量。换言之,在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外时不能使用这些变量的,它们称为局部变量。

    全局变量

    定义:在函数外定义的变量是外部变量,外部变量就是全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围从定义变量的位置开始到本源文件结束。

    局部变量与全局变量的区别

    局部变量可以与全局变量重名,但是局部变量会屏蔽全局变量。在函数体内引用变量会用到同名的局部变量而不是全局变量,对于一些编译器来说,在同一个函数体内可以定义多个同名的局部变量。例如我们可以在一个函数内部,在两个循环中都定义同名的局部变量i,而局部变量i的作用域在那个循环体内。
    1.作用域不同:全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等;

    2.内存存储方式不同:全局变量存储在全局数据区中,局部变量存储在栈区;

    3.生命期不同:全局变量的生命期和主程序一样,随程序的销毁而销毁,局部变量在函数内部或循环内部,随函数的退出或循环退出就不存在了;

    4.使用方式不同:全局变量在声明后程序的各个部分都可以用到,但是局部变量只能在局部使用。函数内部会优先使用局部变量再使用全局变量

    特别注意:局部变量不能赋值为与全局变量同名的值

    静态变量:

    定义:在程序运行期间分配固定的存储空间的变量,叫做静态变量 。
    关键字:static
    特别说明:静态变量自然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量;对于自动变量,它属于动态存储方式, 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。

    特点:

    (1)静态局部变量在函数内定义,但不像自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。

    (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

    (3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符

    (4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

    三者区别:

    一、从作用域看:

    C++变量根据定义的位置的不同的生命周期,具有不同的作用域,可分为:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。

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

    2.局部变量具有局部作用域,它是自动对象(auto),它在程序运行期间不是一直存在,而是只在函数执行期间存在,函数的一次调用执行结束后,变量被撤销,其所占用的内存也被收回。

    3.静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见

    4.静态全局变量也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。

    二、从分配内存空间看:

    1.全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在里分配空间

    2.全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,**当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。**而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。

    Tips:

    A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;

    B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;

    C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态数据存储区,全局可见;

    D.如果我们需要一个可重入的函数,那么,我们一定要避免函数中使用static变量(这样的函数被称为:带“内部存储器”功能的的函数)

    E.函数中必须要使用static变量情况:比如当某函数的返回值为指针类型时,则必须是static的局部变量的地址作为返回值,若为auto类型,则返回为错指针。

    展开全文
  • 不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,全局变量也是存放于程序的全局变量区域,所以它们的生命周期是从程序开始到程序结束。 它们的作用域决定于它被存放和定义的位置。

    全局变量、静态变量、局部变量的生存周期与作用域

    1、生存周期和作用域的定义1

    生存周期: 变量从定义到销毁的时间范围。存放在全局数据区的变量的生存周期存在于整个程序运行期间,而存放在栈中的数据则随着函数等的作用域结束导致出栈而销毁,除了静态变量之外的局部变量都存放于栈中。取决于变量存放位置
    作用域: 变量的可见代码域(块作用域,函数作用域,类作用域,程序全局作用域)。取决于变量定义位置

    2、不同类型变量的生存周期和作用域2

    1)全局变量:

    生命周期:程序运行期一直存在,从程序开始到程序结束;
    作用域:全局作用域(只需要在一个源文件中定义,就可以作用于所有的源文件);
    引用方法:其他文件如果要使用,必须用extern 等关键字声明要引用的全局变量;
    内存分布:全局(静态存储区)。
    注意:如果再两个文件中都定义了相同名字的全局变量,则连接错误:变量重定义。

    2)静态变量

    static变量是指静态的变量,不管是在全局还是局部声明的static变量都存放于程序的全局变量区域,所以它的生命周期是从程序开始到程序结束。但是static变量的作用域并不等同于它的生存周期,它的作用域决定于它被定义的位置。可以认为static变量的作用域<=生存周期。 静态全局变量与静态局部变量的区别仅是作用域不同。

    (1)全局声明 静态全局变量:

    生命周期:程序运行期一直存在,从程序开始到程序结束;
    作用域:文件作用域(只在被定义的文件中可见:static的一个作用就是隐藏)
    内存分布:全局(静态存储区)。
    定义方法:static关键字,const关键字(注意C/C++意义不同)
    注意:只要文件不相互包含,两个不同的文件中是可以定义完全相同的两个全局静态变量的。
    举个例子:
    在文件A 中定义静态变量j:

    int n=3; //默认为extern
    static int j=5; //声明为static
    

    全局变量和静态变量j都存放于程序的全局数据区域,它们的生存周期都是程序的整个运行期,但是n的作用域为全局作用域,可以通过extern在其他文件中使用,而j只能在文件A中使用,例如在文件B中:

    extern int n; //ok
    extern int j; //error: j在文件B中不可见
    int a=n;//ok:但这里有个初始化先后的问题,具体参见参考一
    int b=j;//error
    

    也就是说,在声明全局的static变量时,static没有改变它的生存周期,也即存储位置(因为全局变量本来就存储在全局数据域),而是将变量的作用域限制在当前文件中。1

    (2)局部声明 静态局部变量:

    生命周期:程序运行期一直存在;
    作用域:局部作用域(只在局部作用域可见,超过其作用域便无法被引用)
    内存分布:全局(静态存储区)。
    定义方法:局部作用域中用static定义。
    注意:只被初始化一次,多线程中需要加锁保护。

    举一个局部声明的例子。在函数test中声明静态变量i:

    void test()
    {
    int m=3;
    static int i=5;
    }
    

    局部变量m存放在栈中,当test函数结束,m将被销毁;静态变量i不存放在栈中,而是存放于程序的全局变量区域,因此随着函数test的结束,它并不随着出栈操作而被销毁,它的生存周期存在于程序的整个运行期;然而m和i的作用域都仅存在于test函数中它们的定义之后,即test调用结束之后,m和i就不再可用,但是i仍存在于内存之中。1

    3)局部变量:

    生命周期:随着函数的结束,即被销毁。
    作用域:局部作用域(只在局部作用于可见)
    内存分布:栈区
    定义方法:在局部作用域中用auto指示符定义,可省略auto

    总结3

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

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

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

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

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


    1. 参考 博客园 bigclould:static作用:静态变量的生存周期和作用域 ↩︎ ↩︎ ↩︎

    2. 参考 博客园Stephen_Hsu:生命周期,作用域的定义;说明全局变量、静态变量、局部变量、const变量的生命周期、作用域 ↩︎

    3. 浅谈内存分配方式以及堆和栈的区别(很清楚)
      ↩︎

    展开全文
  • 变量的作用域和生命周期3.1 作用域3.1.1 局部变量的作用域3.1.2 全局变量的作用域3.2 生命周期3.2.1 局部变量生命周期3.2.2 全局变量生命周期 1.变量的分类 1.1 局部变量 也称临时变量,在函数、代码块内定义,...
  • 全局变量局部变量静态...的区别从作用域看:从分配内存空间看:Tips 原文链接:Runoob, C++变量作用域_author: %fs. C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域...
  • 原文链接:c语言局部变量 静态局部变量 全局变量静态全局变量 - L的存在 - 博客园 https://www.cnblogs.com/lanjianhappy/p/6035433.html 基本概念: 作用域:起作用的区域,也就是可以工作的范围。 代码块:...
  • 局部变量在函数的开头定义在函数内的符合语句内定义作用范围在包含该局部变量的函数内有效一个函数内部,可以在复合函数语句中定义变量,这些变量只在本复合语句中有效,这种符合语句称为分程序或程序块 #include<...
  • 局部变量:创建在栈区(向下生长),生命周期存在于当前作用域中。创建时若未初始化,则为随机值。全局变量:创建在static区,生命周期一直存在。创建时若未初始化,则为0。静态局部变量:切断了外部链接属性。创建在...
  • 今天被问到了一个问题:如何让请求的类延迟释放如果要延迟释放或者在程序整个生命周期都存在可以考虑两种方式,一是定义一个静态变量,二是用单例。用单例本质上用的是静态变量。单例的写法如下:+ (instancetype)...
  • 局部变量和全局变量全局变量和全局静态变量的区别静态全局变量有以下特点:静态局部变量有以下特点: 全局变量和全局静态变量的区别 (1)全局变量是不显式用 static 修饰的全局变量,全局变量默认是有外部链接性的...
  • 道阻且长,行则将至。埋头苦干,不鸣则已,一鸣惊人!加油,骚年! 前言   我是看到一篇介绍 C 语言全局变量的文章时,深有感触,细细一想,我貌似对于这些...『静态局部变量』:定义在函数内部,只有在函数内部才.
  • 变量可以分为:全局变量静态全局变量静态局部变量局部变量。 按存储区域分,全局变量静态全局变量静态局部变量都存放在内存的静态 存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个...
  • 全局变量 全局变量默认初始化为0,字符型变量为空字符’’ 定义在函数外,可被本文件及其他文件的函数使用...同一文件中全局变量局部变量可以同名,在局部变量作用域内,全局变量不起作用 静态全局变量 静态...
  • 全局变量(成员变量),局部变量静态变量的区别 全局变量(成员变量),局部变量静态变量全局变量(成员变量): 1.全局变量定义在类中,在整个类中都可以被访问 2.全局变量有默认的初始化值 3.全局变量...
  • 在C语言中,根据变量的存储方式,可以分为静态存储与动态变量。静态存储区的静态变量在程序整个运行期间内都...1.使用auto声明的自动变量自动变量属于局部变量,它的生命周期在函数被调用时产生,当一个函数被调用...
  • (1)static 作用域 : 当前“源”文件中,其他文件无法访问 生命周期:整个程序运行过程测试1(静态变量放在cpp文件中): .h文件代码如下:#ifndef __FUNCTION_H__ #define __FUNCTION_H__ void print_var_1()...
  • 1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 从作用域看: 1>全局变量具有全局作用域。全局...
  • 生命周期 默认值 普通全局变量 整个工程 程序运行到程序结束 0 静态全局变量 当前文件 程序运行到运行结束 0 普通局部变量 函数内 函数运行到运行结束 随机值 静态局部...
  • 3、全局区(静态区)(static)— 全局变量静态变量的存储是放在一块的,初始化的全局变量静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放  4、文字...
  • 比较全局变量、全局静态变量局部变量、局部静态变量的区别,他们在编译完后存储位置在什么地方、初始化值在什么地方、内存什么时候分配、赋初值对这些变量有哪些影响等。要弄清楚这些问题,首先要弄清楚下面几个...
  •  今天在论坛上看到有朋友发帖问道:既然静态全局变量全局变量都存储在全局数据区,为什么作用域却不一样呢?也许答案非常简单:C++就是这么规定的,静态全局变量全局变量的唯一区别就是作用域不同。  对一个...
  • 静态变量随着类的加载而存在,随着类的消失而消失。作用在类中,方法外; 成员变量随着对象的创建而存在,随着对象被回收而释放。作用在类中,方法外; 局部变量随着方法的创建而存在,随着方法被回收而释放。作用方法中...
  • 全局变量局部变量静态全局变量静态局部变量的区别  C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用...
  • 变量与常量 ...局部变量:定义在函数中的变量。 全局变量 全局变量:定义在函数外面的变量。 #include<stdio.h> int g_a; //定义在函数外面叫全局变量 int main(void) { int a; ...
  • 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。...
  • 根据定义变量位置的不同,可以将变量分为成员变量和局部变量。 成员变量是 定义在一个类的变量:类中方法外 局部变量是定义在一个方法内的变量:方法中 成员变量分为: 静态属性:随类的存在而存在,是在类加载的...
  • 变量又分为局部变量全局变量,但他们都在内存的静态区,静态变量只能被初始化一次。 静态全局变量,作用域仅限于被定义的文件中,其他文件即使用extern声明也没法使用它。准确地说作用域是从定义之处开始,到文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,906
精华内容 17,162
关键字:

局部变量全局变量静态变量生命周期