本篇通过一个代码题来考察静态变量和动态变量的区别,主要考察静态变量的值。
在前2章我们讲了变量可以分为全局变量和局部变量,而我们的变量,它的存储又有两种不同的方式:静态存储方式与动态存储方式。
自动局部变量:auto
静态局部变量:static
注意:
在c语言中,在函数的局部变量中,如果不专门声明它为静态存储类别,那他统一的都为动态存储。也就是自动变量auto。
现在我们来一个最简单的代码题,更彻底的讲解一下:
#include <stdio.h>
int main()
{
int jing(int a);
int a=6,i;
for(i=0; i<5; i++)
printf("jing is %d\n",jing(a)); //输出5次滴
return 0;
}
int jing(int a)
{
auto int b=0;
static int c=4; //注意看这里哦,是静态局部变量的标志!
b=b+1;
c=c+1; //这里运用的c是静态~
return(a+b+c); //看好咱们的返回值
}
输出的结果为:
同样的语句,输出五种不同的结果。
因为c是静态变量,在函数调用结束后它并不释放,仍然保留c的值。