關于局部靜態變量
請問為什么 int x = 1如果不加? static 的話 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;
2018-11-05
不加static, x就是局部自動變量,每一次調用fn()時,都會重新定義x為1,輸出2*x,就是2,調用完后x自動銷毀