首页杂谈正文

看一个C语言的例子来感受一下静态变量和非静态变量的区别

朱绪2016-12-062992

下面,我自己编了一个C语言的例子来说明一下静态变量和非静态变量的区别。

#include <stdio.h>
int ha(){
	static int ha_a = 0;
	int a = 0;
	int i;
	for(i = 0; i < 10; i++){
		++ha_a;
		++a;
	}
	printf("ha_a=%d\ta=%d\n",ha_a,a);
	return 0;
} 
int main(){
	ha();
	ha();
	return 0;
}

运行结果是:

C语言运行结果

最终结果,ha_a的值是20,而a得值是10。

这就说明静态变量ha_a是一直存在的,而非静态变量a运行完了就没有了。

所以第二次运行的时候,ha_a就从10开始累加了,不是从0开始加的哦。

a是一个自动变量,在函数栈里,这个函数运行结束的时候,那么自动变量a就不能用了。