精华内容
下载资源
问答
  • 动态变量与静态变量的区别

    千次阅读 2009-09-08 09:15:00
    而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间(而不是静态存储区空间),函数调用结束后即释放。 2 为静态局部变量赋初值是在编译时进行值的,即只赋初值一次,在程序运行时它已有初值。以后...

    1  静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间(而不是静态存储区空间),函数调用结束后即释放。
    2 为静态局部变量赋初值是在编译时进行值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。而为自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句
    3 如果在定义局部变量时不赋初值的话,对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符型变量)。而对自动变量来说,如果不赋初值,则它的值是一个不确定的值。这是由于每次函数调用结束后存储单元已释放,下次调用时又重新另分配存储单元,而所分配的单元中的值是不确定的。
    4 虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的,也就是说,在其他函数中它是“不可见”的。

    展开全文
  • 动态变量和静态变量的区别

    千次阅读 2015-10-03 10:13:01
    动态变量和静态变量的区别:1、存储位置动态变量:存储在内存出栈数据区静态变量:存储在全局数据区(静态数据区)2、生命期动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将...

    动态变量和静态变量的区别:

    1、存储位置

    动态变量:存储在内存出栈数据区

    静态变量:存储在全局数据区(静态数据区)

    2、生命期

    动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围变量将失效

    静态变量:程序结束时才释放

    3、作用域

    动态变量:同样的要根据你定义的位置才能确定,和第二点的一样

    静态变量:当前文件中有效

    展开全文
  • C语言 动态变量和静态变量的区别

    千次阅读 2018-11-07 22:23:24
    转 C语言动态变量和静态变量的区别 2017年11月27日 20:21:00 guosir_ 阅读数:1586 <span class=&...

    静态变量,就是在定义的时候,有static 修饰的变量,形式为:static type var_name = init_value;

    动态变量,形式为:type var_name = init_value; 即没有static 修饰。其中的=init_value均可省略。
    区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。

    1 动态全局变量:
    作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。
    生命周期为从程序运行到程序退出,即贯穿整个运行时间。
    无显式初始化时默认初始化值为0。

    2 静态全局变量:
    作用域为当前文件,从定义/声明位置到文件结尾。
    生命周期为从程序运行到程序退出,即贯穿整个运行时间。
    无显式初始化时默认初始化值为0。

    3 动态局部变量:
    作用域为当前函数,从定义位置,到其所在的{}的结束位置。
    生命周期为从函数调用到函数退出。
    无显式初始化时默认初始化值为随机值。

    4 静态局部变量:
    作用域为当前函数,从定义位置,到其所在的{}的结束位置。
    生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。
    无显式初始化时默认初始化值为0。

    展开全文
  • 静态变量与动态变量

    万次阅读 多人点赞 2018-08-02 20:21:10
    0.静态存储与动态存储 1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储 2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,...

    0.静态存储与动态存储

    1)静态存储变量通常是在变量定义时就分定存储单元并一直保持不变,直至整个程序结束。静态变量,全局动态变量都是静态存储

    2)动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放

    3)静态存储变量是一直存在的,而动态存储变量则时而存在时而消失。通常把由于变量存储方式不同而产生的特性称为变量的生存期

    4)静态存储只会初始化一次

     

    摘自于:百度百科

     

    1.区别

    定义或者声明变量时,没有static修饰符的就是动态变量,有static修饰符的就是静态变量

     

    2.动态变量(一下简称变量)

    2.1全局变量

    1)在所有函数的外部定义(包括主函数),定义之后的所有函数都能使用,属于静态存储

    2)作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。外部文件可以通过extern关键字来声明另一个文件中存在的全局变量

    3)生命周期为从程序运行到程序退出,即贯穿整个运行时间

    4)无显式初始化时默认初始化值为0

    看一个有关全局变量多文件的例子:

    main.cpp

    #include <iostream>
    using namespace std;
    
    int var_a = 0;
    
    void fun1();
    void fun2();
    
    void fun0()
    {
    	var_a = var_a + 1;
    	cout << "fun1:" << var_a << endl;
    }
    
    
    int main()
    {
    	fun0();
    	fun1();
    	fun2();
    	fun0();
    
    	system("pause");
    	return 0;
    }

    variable1.cpp

    #include <iostream>
    using namespace std;
    
    extern int var_a;
    
    void fun1()
    {
    	var_a = var_a + 1;
    	cout << "fun3:" << var_a << endl;
    }

    variable2.cpp

    #include <iostream>
    using namespace std;
    
    extern int var_a;
    
    void fun2()
    {
    	var_a = var_a + 1;
    	cout << "fun3:" << var_a << endl;
    }

    运行结果:

    可以发现,全局变量var_a在所有文件中都共享,每个文件都可以访问它并修改它的值

    2.2局部变量

    1)在函数内部定义,属于动态存储,其他函数不能访问,外部文件也不能访问,否则会出现:

    2)作用域为当前函数,从定义位置,到其所在的{}的结束位置

    3)生命周期为从函数调用到函数退出

    4)无显式初始化时默认初始化值为随机值

     

    3.静态变量

    3.1静态全局变量

    1)作用域为当前文件,从定义/声明位置到文件结尾

    2)生命周期为从程序运行到程序退出,即贯穿整个运行时间

    3)无显式初始化时默认初始化值为0

    静态全局变量与动态全局变量的主要不同:

    动态全局变量可以通过extern关键字在外部文件中使用,但静态全局变量不可以在外部文件中使用。静态全局变量相当于限制了动态全局变量的作用域

    看一个例子:

    #include <iostream>
    using namespace std;
    
    static int b = 10;
    
    void fun()
    {
    	int b = 0;
    	cout << "b = " << b << endl;
    	b++;
    }
    
    int main()
    {
    	for (int i = 0; i < 5; i++)
    		fun();
    
    	system("pause");
    	return 0;
    }

    得到结果:

    为什么得到5个0呢,为什么不是0,1,2,3,4呢

    这是因为在函数fun中定义了一个动态局部变量a,而a同时又是静态全局变量,在这种情况下,作用域小的掩盖作用域大的,所以局部变量会掩盖全局变量。所以动态局部变量a掩盖了静态全局变量a

    3.2静态局部变量

    1)作用域为当前函数,从定义位置,到其所在的{}的结束位置

    2)生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值

    静态局部变量与动态局部变量的主要不同:

    两者作用域相同,都在函数内部,但是两者生命周期不一样,静态局部变量的生命周期是到程序的结束,而动态局部变量的生命周期是函数的结束,静态局部变量的生命周期更长,同时静态局部变量只会初始化一次,函数重复调用,但静态局部变量不会被重新初始化

    看一段代码:

    #include <iostream>
    using namespace std;
    
    void fun()
    {
    	int a = 0;
    	static int b = 0;
    	cout << "a = " << a << endl;
    	cout << "b = " << b << endl;
    	a++;
    	b++;
    }
    
    int main()
    {
    	for (int i = 0; i < 5; i++)
    		fun();
    
    	system("pause");
    	return 0;
    }

    执行结果:

    得到这样的结果也是自然的

    参考来源:

    C语言动态变量与静态变量的区别

    C和C++中全局变量,局部变量,静态变量和常量

    展开全文
  • 静态变量与动态变量的定义与区别

    万次阅读 2017-03-19 19:56:18
    动态变量和静态变量的定义和区别如下:
  • C语言动态变量和静态变量的区别

    千次阅读 2017-11-27 20:21:00
    静态变量,就是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;而动态变量,形式为TYPE var_name = init_value;即没有static 修饰。其中的=init_value均可省略。区分定义在函数外的...
  • C语言的动态存储变量与静态存储变量     动态存储变量与静态存储变量     在C语言中,每一个变量都有3个属性:一是“数据类型”,如int、float、char等,它确定了变量存储长度和运算方式;二是“作用域”...
  • 【fishing-pan:https://blog.csdn.net/u013921430转载请... 概述 局部变量 在一个函数内部定义的变量(包括函数形参)是局部变量。... 静态变量 静态全局变量 在全局变量...
  • 静态变量与静态函数

    千次阅读 2018-08-16 10:42:50
    栈 ...3、全局区(static):全局变量和静态变量的存储,有系统释放; 4、文字常量区:常量字符串存放,系统释放; 5、程序代码区:存放函数体的二进制代码。 堆栈的区别: 1.栈内存存...
  • 关于静态局部变量与静态外部变量

    千次阅读 2017-11-09 19:14:10
    1:静态局部变量存储在静态存储区,如果赋有初值,函数调用期间只赋值一次,下次调用该函数时,静态局部变量值为上次调用之后的结果,原因:静态局部变量在函数调用期间是不释放的;而自动变量在每次调用函数时都会...
  • c++全局变量与静态变量

    千次阅读 2019-03-29 19:12:12
    全局变量和和由static修饰的静态变量都被储存在全局数据区。全局数据区的内存在程序运行时会被全部置'0'.这不同于局部变量,局部变量在栈上分配内存,但此块内存一般不为零,且编译器不会在局部变量被声明的地方为其...
  • 动态变量和静态变量的区别: 1、存储位置 动态变量:存储在内存出栈数据区 静态变量:存储在全局数据区(静态数据区) 2、生命期 动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数...
  • 变量的属性 1、变量的分类l 根据作用域:可分为全局变量和局部变量。l 根据生存周期:可分为静态存储方式和动态存储方式,具体地又分为自动的(auto)、静态的(static)、寄存器的(register)、外部的(extern...
  • 全局变量,静态全局变量,静态局部变量,类静态成员内存分配初始化问题 全局变量,静态全局变量,静态局部变量,类静态成员内存分配都为全局数据区(静态区)(data区) 他们都在程序执行之前就进行了内存分配 初始化...
  • 数据段:数据段存的是数,像全局变量就是存在数据段的 代码段:存的是程序代码,一般是只读的。 栈(stack):先进后出。C语言中局部变量就分配在栈中。   局部变量  普通的局部变量定义的时候直接定义或者在...
  • 动态变量和静态变量的区别: 1、存储位置动态变量:存储在内存出栈数据区静态变量:存储在全局数据区(静态数据区) 2、生命期动态变量:根据你定义的位置确定,比如你在一个函数中定义的,那么超出该函数范围...
  • 动态库中的全局变量与静态变量

    千次阅读 2020-03-10 10:28:04
    写一个so,该so中有一个全局变量。so中的代码在运行时会修改该全局变量的值。然后,有多个程序都需要该so,而且这些应用程序都启动了。此时,很显然so只被加载了一份,那么,当这么多程序在运行调用该so时,该so中的...
  • java线程共享变量与静态变量

    千次阅读 2013-04-05 11:22:22
    以下三种情况说明java中全局变量与静态变量在线程间的关系 情况一: /** * 两个线程对【两】个对象操作,这两个对象的类中的【静态变量在线程间共享】 * * @author thinktown * */ public class Test1 ...
  • 变量可以分为:全局变量静态全局变量静态局部变量和局部变量。 按存储区域分,全局变量静态全局变量静态局部变量都存放在内存的静态 存储区域,局部变量存放在内存的栈区。 按作用域分,全局变量在整个...
  • python静态变量和静态方法

    万次阅读 2019-04-15 19:36:42
    1、静态变量和静态方法都属于类的静态成员,它们普通的成员变量和成员方法不同,静态变量和静态方法只属于定义它们的类,而不属于某一个对象。 2、静态变量和静态方法都可以通过类名和对象进行访问。 二、静态...
  • 全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。 拓展资料 全局变量也称为外部变量,它是在 函数外部定义的变量。 它不属于哪一...
  • 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分: 1、全局变量在整个工程文件内都...4、全局变量和静态变量如果没有手工初始化,则由编译...
  • 这一节我们看一看成员变量与静态变量的区别所在。 什么是静态变量呢?我们上节用static关键字时就提到了静态变量。也就是说用static关键字修饰的变量就是静态变量。 我们在6.4节学习了成员变量与局部变量的区别,...
  • C++ 静态成员变量与静态成员函数

    千次阅读 2017-11-06 11:33:08
    一、静态成员变量1)定义静态成员变量 关键字 static 可以用于说明一个类的成员,静态成员提供了一个同类对象的共享机制  把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 ...
  •  局部变量可以全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量...
  • 动态存储变量静态存储变量

    千次阅读 2011-03-31 20:21:00
    静态变量 全局变量
  • 静态变量VS自动变量(动态变量): 什么是自动变量呢?自动变量就是指在函数内部定义使用的变量。他只是允许在定义他的函数内部使用它。在函数外的其他任何地方都不能使用的变量。自动变量是局部变量,即它的区域性是...
  • C++静态成员变量与静态成员函数

    千次阅读 多人点赞 2019-05-26 20:06:48
    类的静态成员有两种:静态成员变量静态成员函数,语法是在普通成员变量和成员函数前加static关键字。 0、定义 class CRectangle{ public: void show();//普通成员函数 static void printTotal();//静态成员...
  • 全局变量声明之前加上static,就是静态全局变量。全局变量静态全局变量都是静态存储的;在存储上无区别。区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,097,814
精华内容 439,125
关键字:

动态变量与静态变量