下面,我自己编了一个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; }
运行结果是:
最终结果,ha_a的值是20,而a得值是10。
这就说明静态变量ha_a是一直存在的,而非静态变量a运行完了就没有了。
所以第二次运行的时候,ha_a就从10开始累加了,不是从0开始加的哦。
a是一个自动变量,在函数栈里,这个函数运行结束的时候,那么自动变量a就不能用了。