动态变量和静态变量定义和区别如下:
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);
}
静态变量的初值是在编译时赋予的,不是在程序运行期间对其初始化,即只初始化一次,如果在定义静态变量时不赋初值,编译系统自动赋予初值(数值变量赋0,字符变量赋空字符),而对动态变量,编译系统不会自动赋初值。
定义一个静态整型变量 static int a
定义一个动态整型变量 auto int a 或者 int a
若省略auto 所定义的变量为动态变量。
首先,在程序的存储位置不同,动态变量在栈上(使用new,malloc申请);
其次,静态变量编译器会进行默认的初始化,但是动态申请的变量不会;
最后,百度一下吧。