精华内容
下载资源
问答
  • 静态局部变量定义时赋初值问题和定义后赋初值问题 如 1 . static int a=1; 2 . static int a; a=1; 函数中静态局部变量a赋初值,采用上述两种方式时不一样,采用方式1时a是上次结束时的值,采用2方式时a=1还是...

    静态局部变量定义时赋初值问题和定义后赋初值问题


    1 . static int a=1;
    2 . static int a; a=1;

    函数中静态局部变量a赋初值,采用上述两种方式时不一样,采用方式1时a是上次结束时的值,采用2方式时a=1还是每次都运行,为什么?

    初始化和赋值是不同的概念。

    只初始化一次,不是只赋值一次。

    展开全文
  • 建立三个文件,文件名分别为main.c \ head1.c \ head2.c main.c #include #include #include int A;...//静态局部变量(static) 静态局部变量定义时前面加static关键字。 a++; f1(a); f2(a);

    建立三个文件,文件名分别为main.c \ head1.c \  head2.c

    main.c

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    
    int A;
    
    void show(){
        volatile static int a ;//静态局部变量(static) 静态局部变量定义时前面加static关键字。
        a++;
        f1(a);
        f2(a);
        //printf("show: B = %d\n",B);
    }
    
    void main(int *argv, char *args[]){
    
        show();
        show();
        show();
        show();
        int c;
        static int b = 10;
    }

    head1.c

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    static int B ;
    int A;
    void f1(int a){
    
        A++,B++;
        printf("head1.h:f1(%d), A = %d, B = %d\n",a,A,B);
    
    }

    head2.c

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    static int B;
    int A;
    void f2(int a){
    
        A += 2, B += 2;
        printf("head2.h:f2(%d), A = %d, B = %d\n",a,A,B);
    
    }

    编译与运行结果:

    -bash-4.1$ gcc -o a Demo.c head*.c
    -bash-4.1$ ./a
    head1.h:f1(1), A = 1, B = 1
    head2.h:f2(1), A = 3, B = 2
    head1.h:f1(2), A = 4, B = 2
    head2.h:f2(2), A = 6, B = 4
    head1.h:f1(3), A = 7, B = 3
    head2.h:f2(3), A = 9, B = 6
    head1.h:f1(4), A = 10, B = 4
    head2.h:f2(4), A = 12, B = 8
    -bash-4.1$ 
    






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

    制了它的使用范围。  


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


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

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


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

    按作用域分:

    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在这两个函数里的变化

    展开全文
  • 变量的分类 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返
  • C语言--静态局部变量

    2020-10-05 09:14:29
    静态局部变量定义时前面加static关键字。 总结: 1、静态局部变量和普通局部变量不同。静态局部变量也是定义在函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数在多调用多次时,...
  • 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 ...5、静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部
  • 静态局部变量

    2021-01-07 09:59:47
     静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。 对静态局部变量
  • 变量可以分为全局变量、静态全局变量、静态局部变量...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 全局变量和静
  • 整理表格如下:分类 全局变量 静态全局变量(static) 局部变量(auto) 静态局部变量(static) 作用域 全局作用域(extern) 文件作用域(当前文件) 局部作用域(定义的位置到函数结束) 局部作用域(定义的位置到函数结束) ...
  • 全局变量局部变量静态全局变量、静态局部变量的区别   转自:http://hi.baidu.com/sindana/blog/item/06fe68171e364401c93d6ded.html 标签:全局变量 局部变量 静态全局变量 静态局部变量 ...
  • 全局变量、静态局部变量、局部变量、静态全局变量 全局变量 全局作用域 全局变量只需在一个源文件中定义,就可以作用于所有的源文件。其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局...
  • 若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度; C.设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题,因为他们都放在静态...
  • 首先从作用域考虑: C++里作用域可分为6种:全局...如果俩个文件定义了相同名字的静态局部变量,那他们是俩个不同的变量,而非一个。 局部变量 - 局部作用域,比如函数的参数,函数内的局部变量等等。 静态局部变量
  • 全局变量、静态全局变量、静态局部变量都是在静态存储区(全局数据区)中分配空间的,而局部变量是在栈上分配空间的。 全局变量、静态变量的生命期和程序生命期是一样的,在程序结束之后操作系统会回收空间。 ...
  • 定义在函数内的变量时局部变量,分配的是内存堆栈,只有特定的函数内可以访问到,退出函数后自动释放内存堆栈。优先级高 1.C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用...
  •   基本概念: 作用域:起作用的区域,也就是可以工作的范围。 代码块:所谓代码块,就是用{}括起来的一段代码。... 普通的局部变量定义的时候直接定义或者在前面加上auto void func1(void){&nbs...
  • 文章转载至全局变量、局部变量、静态全局变量、静态局部变量的区别  C++变量根据定义位置的不同,具有不同的作用域,作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。 ...
  • 静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义自己的函数体始终可见。...
  • C++static声明静态局部变量 在C++中,有时会希望函数中局部变量的值在函数调用结束后不消失,而保留原来的值。 也就是其占用的存储单元不释放,在下一次调用该函数时,这个变量还保留上一次函数调用结束时的值,这是...
  • C++ 变量根据定义的位置的不同的...静态局部变量具有局部作用域,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量的区别在于全局变量对所有的函数都是可见的,而静态局部变量只对定义
  • 变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按...静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,403
精华内容 2,561
关键字:

静态局部变量定义