void fn()這個函數里規定static int x = 1既然為靜態,為何在規定for(i=0;i<5;i++)還執行x*=2這個公式,
#include <stdio.h>
void fn()
{
? ? static int x = 1; ? //定義靜態局部變量
? ? x*=2;
? ? printf("x=%d\n",x); ? ??
}
int main()
{
? ? int i;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? fn();
? ? }
? ? extern int x; ? ? ?//調用外部變量
? ? printf("x=%d\n",x);
? ? return 0;
}
int x=100;
有疑問,想不明白,static 既然為靜態,為啥還要會跟著for(i=0;i<5;i++)這個執行。為什么x不一直都是2呢。
2015-01-31
因為你只設置了,x=1為靜態,而且這個fn()為void,是不返回值貯存的,況且,static靜態只是說只能賦初值一次,并沒有說不能運算,所謂的靜態,只是一種貯存方式而已,并不是他有了就不能改變了