精华内容
下载资源
问答
  • 局部变量和全局变量是从作用域...为什么很多地方就默认为内部变量和外部变量就是局部变量和全局变量 这样子的话那么这句话怎么理解呢?![图片说明](https://img-ask.csdn.net/upload/201603/07/1457318749_145328.png)
  • 区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)变量的分类来看 静态变量、动态变量、内部变量(局部变量)、外部变量(全局...

    区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)

    静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)

    文章参考:https://blog.csdn.net/21aspnet/article/details/2560072
    文章参考:https://blog.csdn.net/u013921430/article/details/79279114

    变量的分类来看

    变量分类

    1. 作用域分类
      局部变量(默认是自动局部变量)
      1. 定义:在一个函数内部定义的变量(包括函数形参)
      2. 有效范围:一直在本函数有效
      3. 变量存储:栈内存,函数结束之后自动销毁
      4. 静态局部变量:存储在静态存储区,作用域依旧在函数体内部。每次对其修改都会被保存下来。
      ** 全局变量 **
      1. 定义:在函数外部定义的变量,可为本源文件中其他函数使用
      2. 有效范围:从定义变量的位置开始到本源文件的结束
      3. 变量存储:存储在静态存储区域(静态内存)
      4. 可被工程项目其他文件的 extern 声明之后调用,对其每次修改都会进行保存
      5. 静态全局变量:不能被其他源文件使用,只能本源文件使用,并且每次修改会被保存
    2. 生存周期分类
      静态存储方式——程序运行期间分配固定的存储空间的方式
      动态存储方式——程序运行期间根据需要进行的动态分配空间的方式
      又可分为
      1. auto(自动)——默认,数据存储在动态存储
      2. static(静态)——函数在调用结束之后会保存本次调用的数值
      3. register(寄存器)——在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
      4. extern (外部)——扩展全局变量的作用域
    展开全文
  • C语言的局部变量外部变量

    千次阅读 2015-08-14 06:03:04
    在函数体或复合语句中声明的变量为局部变量。函数中的形式变量也是局部变量。在所有函数体外定义的变量称为外部变量(或全局变量)。

    在函数体或复合语句中声明的变量为局部变量。函数中的形式变量也是局部变量。在所有函数体外定义的变量称为外部变量(或全局变量)。

    局部变量

    局部变量具有以下性质:

    • 自动存储期限。变量的存储期限是指从变量开始占用存储单元到存储单元被回收之间的程序。程序执行时,在函数体或复合语句中变量定义处,为变量自动分配存储单元,到函数返回(或复合语句结束)时,收回分配的存储单元。
    • 程序块作用域。变量的作用域是可以访问或引用变量的代码段。局部变量的作用域是从函数或复合语句的变量声明部分开始,到函数返回或复合语句结束时止。由于局部变量对于函数(或复合语句)外的代码不可见,因此可以在那里使用相同的变量名。当同名的两个变量位于内外层且外层变量处于内层变量声明前时,进入内层变量声明时,“暂时”隐藏外层变量的声明,使得变量名称标识符表示内层变量,在内层程序块结束时恢复变量名称标识符表示外层变量。
    /***************************************
     * local_variable.c                    *
     *                                     *
     * C语言中的局部变量                   *
     ***************************************/
    #include <stdio.h>
    
    int hisLog2(int n)
    {
      /*局部变量*/
      int log = 0;
    
      /*形式变量n也是函数内的局部变量*/
      while (n > 1)
      {
        n /= 2;
        log++;
      }
    
      return log;
    }
    
    int main()
    {
      /*局部变量*/
      unsigned int n = 1;
    
      printf("输入一个正整数: ");
      scanf("%u", &n);
    
      printf("log2(%u) = %d", n, hisLog2(n));
    
      return 0;
    }

    局部变量

    带有static定义的变量具有静态存储期限,在程序执行期间永久地占用存储单元,在函数返回或复合语句结束时不丢失原有的值。然而它还是只有程序块作用域,对函数或复合语句外代码具有不可见性。

    /**************************************
     * static_local_variable.c            *
     *                                    *
     * C语言中的静态局部变量              *
     **************************************/
    
    #include <stdio.h>
    
    void addA()
    {
      static int a = 0;
    
      a++;
    
      printf("a = %d\n", a);
    
    }
    
    int main()
    {
      int i = 0;
      for(i = 0; i < 10; i++)
      {
        static int b = 0;
        printf("b = %d,", ++b);
    
        addA();
      }
    
      return 0;
    }

    静态局部变量

    外部变量

    外部变量具有以下性质:

    • 静态存储期限。
    • 文件作用域。从变量声明的点开始,一直到闭合文件的结尾。当使用#include包含一个外部变量的文件时,外部变量的作用域扩展到该文件末尾。

    外部变量使得程序的耦合性增强,修改外部变量会影响程序的其他部分,难以维护和重用。

    /**************************************
     * another_file.c                     *
     *                                    *
     * 定义全局变量的某个文件             *
     **************************************/
    
    int a = 0;
    
    /**************************************
     * global_variable.c                  *
     *                                    *
     * C语言中的全局变量                  *
     **************************************/
    #include <stdio.h>
    
    #include "another_file.c"
    
    int b = 0;
    
    void addB()
    {
      b += 2;
    }
    
    void setA(int n)
    {
      a = n;
    }
    
    int main()
    {
      setA(10);
      printf("Now A is %d\n", a);
    
      addB();
      printf("Now B is %d\n", b);
      return 0;
    }

    全局变量

    参考文献

    1. K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
    展开全文
  • 2局部变量 一般定义在函数或复合语句的开头,生存周期为定义直到所在函数或复合语句调用结束,作用范围为所在函数或复合语句 3(局部)静态变量 与局部变量类似,只不过其生存周期为定义开始直到程序运行结束。其赋...

    1.全局变量

    定义在函数外,不属于任何函数,生存周期为定义开始直到程序运行结束,作用范围为所有函数。

    定义格式:变量类型  变量表(定义在函数外)

    2.全局静态变量

    与全局变量类似,但其作用范围被限制在当前的程序文件模块中。即使其他文件模块使用外部变量声明,也不能使用该变量。

    定义格式:static 变量类型 变量表;(定义在函数外)

    3.局部变量

    一般定义在函数或复合语句的开头,生存周期为定义直到所在函数或复合语句调用结束,作用范围为所在函数或复合语句。

    定义格式: 变量类型 变量表;(定义在函数或复合语句内)

    4.局部静态变量

    与局部变量类似,只不过其生存周期为定义开始直到程序运行结束。其赋初值只会在函数第一次调用时起作用,若没有赋值,自动赋值为0。

    定义格式:static 变量类型 变量表;(定义在函数或复合语句内)

    5.外部变量

    使已经定义的全局变量的作用范围扩展到其他程序文件模块。

    定义格式:static 变量表;(定义在函数外)

    6.外部函数

    在一个模块中调用另一个模块中的函数时,需要进行函数的外部调用声明。

    格式:extern 函数类型 函数名(参数表);

    7.静态函数

    限制当前模块中定义的函数,使其不能被外部模块调用。

    格式:static 函数类型 函数名(参数表);


    展开全文
  • #include int a = 3,b = 5; //a,b是全局变量 int main() ... //a是局部变量局部变量a的作用范围主函数结束 printf("max = %d\n",max(a,b)); //全局变量b的作用范围主函数结束 return 0; } int
    #include<stdio.h>
    
    int a = 3,b = 5;		//a,b是全局变量
    int main()
    {
    	int max(int a,int b);		//函数声明,a,b是形参
    	int a = 8;					//a是局部变量,局部变量a的作用范围主函数结束
    	printf("max = %d\n",max(a,b));		//全局变量b的作用范围主函数结束
    	return 0;
    }
    
    int max(int a,int b)		//a,b是函数形参
    {
    	int c;
    	c = a>b?a:b;			//形参a,b的作用范围被调用函数完
    	return c;
    }
       //结果:max = 8;

    展开全文
  • 函数中的每个局部变量只在函数被调用时存在,在函数执行完毕退出时消失。’局部变量‘又称‘自动变量’。 外部变量在程序执行期间一直存在,而不是在函数调用时产生、在函数执行完毕时消失。即使在外部变量赋值的...
  • 今天被问到了一个问题:如何让请求的类延迟释放如果要延迟释放或者在程序整个生命周期都存在可以考虑两种方式,一是定义一个静态变量,二是用单例。用单例本质上用的是静态变量。单例的写法如下:+ (instancetype)...
  • static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量 2人收藏此文章, 我要收藏发表于2年前 , 已有1077次阅读 共2个评论 作用域 全局变量 局部变量 静态变量 外部变量 常量 ...
  • 关于静态局部变量与静态外部变量

    千次阅读 2017-11-09 19:14:10
    静态局部变量特点:static int a; 1:静态局部变量存储在静态存储区,如果赋有初值,函数调用期间只赋值一次,下次调用该函数时,静态局部变量值为上次调用之后的结果,原因:静态局部变量在函数调用期间是不释放的...
  • 作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量  作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的...
  • 3.extern 外部变量/全程变量(用于外部变量说明) 4.register 寄存器变量(分配在硬件寄存器中) 四大类,所有变量必须先说明(定义),后使用。 下面分别介绍 1.自动变量
  • 原文地址::... c语言中变量分为四类,分别是 ...2.static 静态存贮分配变量(又分为内部静态和外部静态) ...3.extern 全程变量(用于外部变量说明) 4.register 寄存器变量(分配在硬件寄存器中
  • 内部类引用外部局部变量,必须保证外部类的局部变量为final的,因为内部类和外部类的局部变量生命周期不一样,外部类方法执行完该局部变量可能就没了,但该方法中的内部类可能还在执行(如线程),还要使用该变量...
  • 在书上看到这样一段话:如果局部内部类要访问外部类的局部变量,则此变量必须是final修饰的,否则不能访问。说是为了提高局部变量的生命周期,可不可以说的通俗一些?
  • python中全局变量与局部变量

    万次阅读 多人点赞 2019-03-01 15:27:17
    python中全局变量与局部变量 标签: python 局部变量就是定义在一个函数体内部的变量 全局变量是定义在外面的变量 比如: a = 1 def f(): b = 2 其中a就是全局变量,而b是局部变量局部变量只在函数体内部...
  • 3.extern 全程变量(用于外部变量说明) 4.register 寄存器变量(分配在硬件寄存器中) 四大类,所有变量必须先说明(定义),后使用。 下面分别介绍 1.自动变量(局部变量局部变量:在一个函数
  • C/C++ 全局变量(外部变量) 整个工程文件内 内存的静态存储区域 整个源程序 0 没有全局变量的概念 在main()函数前(类外)定义,用extern int g_int ;声明,才可以使用 静态全局变量 定义它的文件内 内存的...
  • 外部变量和静态变量

    千次阅读 2013-12-05 20:08:31
    外部变量 1.简介  外部变量是在函数外部定义的全局变量,它的作用域是从变量的定义处开始,到本程序文件的结尾。在此作用域内,全局变量可为各个函数所引用。编译时将外部变量分配在静态存储区。有时需要在...
  • python3 全局变量和局部变量

    万次阅读 2018-08-10 14:37:56
    全局变量和局部变量 局部变量: 1.定义在函数内部的变量称为局部变量(函数的形参也是局部变量) 2.局部变量只能在函数内部使用 3.局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁 全局变量: 1.定义...
  • 静态变量的类型说明符是static,静态变量属于静态存储方式,但属于静态存储方式的不一定是静态变量,如外部变量(全局变量)就属于静态存储方式,但不是静态变量。必须有static加以定义才是静态变量,或静态全局变量...
  • 如果想在循环外部调用这个局部变量,那么你就需要扩大它的作用范围,必须在变量名称前面加上global关键字,把它变成一个全局变量,这样即使for循环结束了,这个变量仍然有效。 而在实际的编程操作中,因为全局变量...
  • UINT8 acc_tab_sta = acc->acc_tab_sta; static void hmi_adas_root_callback_on_status(ndm_node_t *self, ndm_evt_t *in_status) { UINT8 acc_tab_sta = 0; switch (NodeMsgGetEvent(in_status)) ...
  • 一、变量按作用域范围分类 局部变量:在函数内定义的变量,作用域限于函数内。 说明:(1)主函数定义的变量不能再其他函数中使用,主函数也不能使用其他函数定义的变量。...如果在定义点前的函数要使用该外部变量,要
  • 成员变量和局部变量同名 在同一个作用域内不允许定义同名的多个变量。   在一个方法内,可以定义和成员变量同名的局部变量或参数,此时成员变量被屏蔽。此时如果想要访问成员变量,可以通过 this 关键字来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 211,772
精华内容 84,708
关键字:

外部变量是局部变量吗