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

如题

一、形式不同:

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

动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。

二、作用不同:

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

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

常量使用

静态变量也可以用于存储常数。具体来说,静态变量(全局变量及汇编语言里定义的符号亦同)可用const,constant或final(根据语言决定)等关键字标识,这时其值就会在编译时设定,并且无法在运行时改变。

编译器通常将静态常量与文本一起置于目标文件的文本区域,而非常量初始化数据则置于数据区;而如若有需要,有些编译器还可选择为其开辟专用区;为防止常数变量被错误的指针写入覆盖,亦可在这块区域启用内存保护机制。

以上内容参考:百度百科-静态变量

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-10-15
静态变量,就是在定义的时候,有static 修饰的变量,形式为
static TYPE var_name = init_value;
而动态变量,形式为
TYPE var_name = init_value;
即没有static 修饰。其中的=init_value均可省略。
区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。
1 动态全局变量:
作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。
生命周期为从程序运行到程序退出,即贯穿整个运行时间。
无显式初始化时默认初始化值为0。

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

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

4 静态局部变量:
作用域为当前函数,从定义位置,到其所在的{}的结束位置。
生命周期为从程序运行到程序退出,即贯穿整个运行时间,当下次函数调用时,静态局部变量不会被再次初始化,而是沿用上次函数退出时的值。
无显式初始化时默认初始化值为0。本回答被网友采纳
第2个回答  推荐于2017-09-13
全局变量声明之前加上static,就是静态全局变量。全局变量和静态全局变量都是静态存储的;在存储上无区别。区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序文件都是有效的;而静态全局变量怎被限制了作用域,只在定义该变量的源文件内有用在同一程序的其他源文件不能使用!
还有静态全局变量只初始化一次,防止在其他源文件调用!而全局变量可以再其他源文件初始化!!本回答被提问者采纳
第3个回答  2010-08-02
最大的区别就是静态变量在其作用域里的值会有一个储存空间,而这个空间在程序结束之前是不会被删除的,所以静态变量在执行程序时会保留前一次执行的值,也就是只能被初始化一次。而动态变量是可以一直处于赋值语句中。
第4个回答  2021-05-18
建议看英文教材,翻译的东西增加理解障碍,英语的重要性就在这里。
动态变量就是函数内部定义的变量,internal variables,auto variables. 作用域限制在函数内部,生命周期就是函数结束,变量就销毁了。再次调用该函数,变量是重新生成的。函数内定义的静态static变量,作用域还是函数内部,生命周期是整个程序的运行和结束,该变量一直存在,每次调用该函数,只是保持变量值的更新。函数内部的static改变的是生命周期。
全局变量,external variables, 作用域是整个程序。external static variables 是作用域被限制到了本源文件内,在其他源文件不可见。函数外部变量,也就是全局变量,static改变的是作用域。
翻译的名称很容易让人困惑。当然你理解了,不存在障碍,但是在你没理解的时候,这些名称是让人增加困惑的。

C语言动态变量和静态变量的区别
一、形式不同:静态变量是在定义的时候,有static 修饰的变量,形式为static TYPE var_name = init_value;动态变量,形式为TYPE var_name = init_value;即没有static 修饰,其中的=init_value均可省略。二、作用不同:动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用...

计算机C语言中“动态变量”和“静态变量”的区别是什么?
区分定义在函数外的全局变量,和函数内的局部变量,作用域,生命周期,及无显式初始化时的初始值,均有区别。1 动态全局变量:作用域为整个项目,即最终编译成可执行文件的所有文件中均可以使用动态全局变量。生命周期为从程序运行到程序退出,即贯穿整个运行时间。无显式初始化时默认初始化值为0。2 静...

C语言中静态变量与动态变量的定义与区别
动态变量和静态变量定义和区别如下:1、定义上,静态变量比动态变量多一个关键字static,比如:动态变量:int i;静态变量:static int i;2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:main(){ int i;for(i=0;i<5;i++)fun();\/...

C语言动态和静态存储类别的区别
静态存储就是在程序开始的时候就分配固定的内存单元,整个程序结束后释放存储单元,而动态存储单元在程序运行初不分配内存单元在用到时才分配,而当用过后则立刻释放该内存空间

C语言动态变量和静态变量的区
C语言中的动态变量和静态变量在存储和作用域上有所不同。当在全局变量声明前添加"static"关键字,即形成了静态全局变量。静态全局变量和非静态(普通)全局变量一样,都采用静态存储方式,存储上没有本质差别。然而,它们的主要区别在于作用域。非静态全局变量的作用域覆盖整个源程序,无论源程序由多少个...

C语言动态变量和
C语言中的动态变量和静态变量在形式和作用上有所不同。首先,静态变量在定义时带有"static"修饰,如"static TYPE var_name = init_value",而动态变量则不使用此修饰,如"TYPE var_name = init_value","="后可省略初始值。在作用上,动态全局变量具有广泛的范围,它在整个项目中有效,从程序开始...

C语言动态变量和静态变量的区别?
全局变量和静态全局变量都是静态存储的;在存储上无区别。区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序文件都是有效的;而静态全局变量怎被限制了作用域,只在定义该变量的源文件内有用在同一程序的其他源文件不能使用!还有静态全局变量只初始...

关于c语言auto变量和static变量区别
自动变量(auto变量)和静态变量(static变量)主要有以下几点区别:1、static变量存放在静态存储区,在程序整个运行期间都不释放;而auto变量存放在动态存储区,随着生命周期的结束而立即释放。2、static变量只赋值一次,以后就不用赋值;而auto变量在函数每调用一次都要赋初值。3、如果用户不对static变量赋...

c语言中静态变量与动态变量的不同?
动态变量在每次函数调用之后会把变量销毁,下次调用时就是另一个了。静态的不会销毁,下次调用时还是那个。比如:void a(){ static int i=0;i++;} void b(){ int i=0;i++;} 这个你调用两次a i就变成2了 不管你调用多少次b i都是1....

C语言中变量的存储类型有哪几种,存储方式哪几种?谢喽
在C语言中,对变量的存储类型说明有以下四种:1、auto 自动变量 2、register 寄存器变量 3、extern 外部变量 4、static 静态变量 所谓存储类型是指变量占用内存空间的方式,也称为存储方式。变量的存储方式可分为“静态存储”和“动态存储”两种。1、静态存储变量通常是在变量定义时就在存储单元并...

相似回答