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

如题所述

动态变量和静态变量定义和区别如下:
1、定义上,静态变量比动态变量多一个关键字static,比如:
动态变量:int
i;
静态变量:static
int
i;
2、动态变量在子程序中,每次调用时都会从零开始,不会保留原有数据,静态变量调用时原有值不会发生改变,比如:
main()
{
int
i;
for(i=0;i<5;i++)fun();//fun1();
}
void
fun()
//输出结果为11111
{
int
j;
j++;
printf("%d",j);
}
void
fun1()
//输出结果为12345
{
static
int
j;
j++;
printf("%d",j);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-06
静态变量的初值是在编译时赋予的,不是在程序运行期间对其初始化,即只初始化一次,如果在定义静态变量时不赋初值,编译系统自动赋予初值(数值变量赋0,字符变量赋空字符),而对动态变量,编译系统不会自动赋初值。
定义一个静态整型变量
static
int
a
定义一个动态整型变量
auto
int
a
或者
int
a
若省略auto
所定义的变量为动态变量。
第2个回答  2019-10-14
全局变量声明之前加上static,就是静态全局变量。全局变量和静态全局变量都是静态存储的;在存储上无区别。区别在于他们的作用域;全局变量的作用域是整个源程序,当源程序有多个源文件组成时,全局变量在各个源程序文件都是有效的;而静态全局变量怎被限制了作用域,只在定义该变量的源文件内有用在同一程序的其他源文件不能使用!
还有静态全局变量只初始化一次,防止在其他源文件调用!而全局变量可以再其他源文件初始化!!
第3个回答  2020-01-05
首先,在程序的存储位置不同,动态变量在栈上(使用new,malloc申请);
其次,静态变量编译器会进行默认的初始化,但是动态申请的变量不会;
最后,百度一下吧。
相似回答