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

    2018-05-12 13:59:27
    通常情况下,静态全局变量的声明和定义放在源文件中,并且不能使用extern关键字将静态全局变量导出,因此静态全局变量的作用域仅限于定义静态全局变量所在的文件内部。 普通全局变量的作用域是整个工程,在头文件...

           在全局变量前加上static关键字,就定义了一个静态全局变量。通常情况下,静态全局变量的声明和定义放在源文件中,并且不能使用extern关键字将静态全局变量导出,因此静态全局变量的作用域仅限于定义静态全局变量所在的文件内部。

           普通全局变量的作用域是整个工程,在头文件中使用extern关键字声明普通全局变量,并在源文件中定义,其他文件中只要使用#include包含声明普通全局变量的头文件,就可以在当前文件中使用普通全局变量。

           如果在头文件中声明静态全局变量,静态全局变量在声明的同时会被初始化,如果静态全局变量没有显示地初始化为默认值,相当于在头文件中同时完成声明和定义,而普通全局变量不能直接定义在头文件中。

    展开全文
  • 静态全局变量和非静态全局变量的区别 在全局变量的说明之前再加以static 就构成了静态的全局变量。 全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。 这两者的区别:...

    静态全局变量和非静态全局变量的区别

    在全局变量的说明之前再加以static 就构成了静态的全局变量。
    全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。
    这两者的区别:非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避免在其它源文件中引起错误。
    从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

    展开全文
  • 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。 按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态 存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个...
    变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。  
      按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态 
    存储区域,局部变量存放在内存的栈区。  
     按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的 
    文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存, 
    函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回 
    后失效。  
    全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局 
    变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在 
    存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程 
    序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都 
    是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内 
    有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域 
    局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源 
    文件中引起错误。  
        从以上分析可以看出, 把局部变量改变为静态变量后是改变了它的存储方 
    式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限 

    制了它的使用范围。  


      static函数与普通函数作用域不同。仅在本文件。只在当前源文件中使用 
    的函数应该说明为内部函数(static),内部函数应该在当前源文件中说明和定 
    义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这 
    些函数的源文件要包含这个头文件  


      static全局变量与普通的全局变量有什么区别:static全局变量只初使化一 
    次,防止在其他文件单元中被引用;  
      static局部变量和普通局部变量有什么区别:static局部变量只被初始化一 
    次,下一次依据上一次结果值;  
      static函数与普通函数有什么区别:static函数在内存中只有一份,普通函 
    数在每个被调用中维持一份拷贝  
      全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量 
    的值不可知。  

    展开全文
  • 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都有效; 2、静态全局变量只在定义它的文件内有效; 3、...

    按存储区域分全局变量静态全局变量静态局部变量都存放在内存的全局数据区局部变量存放在内存的栈区


    作用域:  

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

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

    3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
    4、全局变量静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知

    5、静态局部变量全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。

    实例:

    #include <stdio.h>
    
    void func();//函数声明,主要是因为被调用的函数定义写在了main函数后面了
    
    int n = 1; //全局变量
    
    int  main(void)
    {
        static int a; // 静态局部变量,但静态局部变量只在定义它的函数中可见,并且只初始化一次
        int b = -10; // 局部变量
    
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
    
        b += 4;
    
        func();
    
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
        n += 10;
    
        func();
        printf("main:   a=%d,   b=%d,   n=%d\n",a,b,n);
    
    }
    void func()
    {
        static int a = 2; // 静态局部变量
        int b = 5; // 局部变量
        a += 2;
        n += 12;
        b += 5;
       printf("func:   a=%d,   b=%d,   n=%d\n",a,b,n);
    }
    

    运行结果: 

     结果分析:

     首先明确main函数和func函数里面都有静态局部变量a和局部变量b,由于它们的固有性质,它们都只在定义它的函数里有效,所以它们互不干扰,所以只要在本函数里分析即可,而全局变量n,在main和func函数里都有效,所以分析它的值应该考虑n在这两个函数里的变化

     

     

    展开全文
  • 全局变量和静态全局变量

    千次阅读 2019-04-15 00:01:34
    这两者在存储方式上并无不同,区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的...
  • 全局变量作用范围:从全局变量定义的位置到本文件结束,如果想在别的文件中访问可以...静态全局变量就是用来解决重名问题的,使用静态全局变量就是告诉编译器这个变量只在当前文件使用,在别的文件中就不可以使用。 ...
  • 全局变量、静态局部变量、局部变量、静态全局变量 全局变量 全局作用域 全局变量只需在一个源文件中定义,就可以作用于所有的源文件。其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局...
  • 全局变量 全局变量默认初始化为0,字符型变量为空字符’’ 定义在函数外,可被本文件及其他文件的函数使用(外部链接),其他文件使用时序用extern声明 生命周期和程序运行周期一样 ...静态全局变量 静态...
  • 全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。 全局变量、静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。 ...
  • 全局变量、静态全局变量和静态局部变量都是静态持续变量,编译器分配固定的内存来存储它们。 全局变量是定义在代码块或函数外部的变量,它的作用域是全局;静态全局变量是用static修饰的全局变量,它的作用域是全局...
  • 变量的分类 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。 按存储区域:全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。 按 作用域:全局...
  • 1. 全局变量 全局变量存储在静态存储区,其作用域...静态全局变量存储在静态存储区,其作用域只能是定义该变量的文件,生命周期是整个程序的生命周期。 3. 静态局部变量 静态局部变量存储在静态存储区,作用域...
  • C++ 全局变量、静态全局变量、局部变量、静态局部变量的使用,整理表格如下:分类 全局变量 静态全局变量(static) 局部变量(auto) 静态局部变量(static) 作用域 全局作用域(extern) 文件作用域(当前文件) 局部作用域...
  • 全局变量局部变量静态全局变量、静态局部变量的区别   转自:http://hi.baidu.com/sindana/blog/item/06fe68171e364401c93d6ded.html 标签:全局变量 局部变量 静态全局变量 静态局部变量 ...
  • 静态全局变量静态全局变量 存储方式 静态存储 静态存储 作用域 定义该变量的源文件内 所有源文件 解释: 共同点:全局变量(外部变量)的说明之前再冠以static 就构 成了静态的全局变量。...
  • Java静态全局变量与全局变量的区别

    千次阅读 2019-01-16 09:58:55
    全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个原文件组成时,非静态的全局变量在各个...
  • C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别 C++ 变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为 6 种:全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和...
  • 一.全局变量:  作用域:全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局... 静态全局变量即在全
  • Tables 作用域 存储方式 生命周期 初始化 java C/C++ 全局变量(外部变量) 整个工程文件内 内存的静态存储区域 ... 静态全局变量 定义它的文件内 内存的静态存储区域 整个源程序 0 类里声
  • 普通全局变量与静态全局变量 在全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。 全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。 这两者的...
  • 静态全局变量 - 全局作用域+文件作用域,所以无法在其他文件中使用。如果俩个文件定义了相同名字的静态局部变量,那他们是俩个不同的变量,而非一个。 局部变量 - 局部作用域,比如函数的参数,函数内的局部变量...
  • static静态全局变量静态全局变量就是将全局变量变成静态的。如何变?——全局变量加个static。 static就是一个存储类说明符,a这个全局变量就成了一个静态全局变量了。 静态全局变量的特点: 1.生命周期是...
  • 变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分:全局变量在整个工程文件内都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,792
精华内容 10,316
关键字:

静态全局变量