關(guān)于局部靜態(tài)變量
請(qǐng)問(wèn)為什么 int x = 1如果不加? static 的話 x 輸出全都是 2 呢
#include <stdio.h>
void fn()
{
? ? static int x = 1;? ?//定義靜態(tài)局部變量
? ? x*=2;
? ? printf("x=%d\n",x);? ? ?
}
int main()
{
? ? int i;
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? fn();
? ? }
? ? extern int x;? ? ? //調(diào)用外部變量
? ? printf("x=%d\n",x);
? ? return 0;
}
int x=100;
2018-11-05
不加static, x就是局部自動(dòng)變量,每一次調(diào)用fn()時(shí),都會(huì)重新定義x為1,輸出2*x,就是2,調(diào)用完后x自動(dòng)銷(xiāo)毀