Static: ( 適合用在修飾 init 函數)
(1) 變數K是區域變數,當離開counter() 就會消失
//===================================
#include <stdio.h>
#include <stdlib.h>
void counter()
{
int k=0;
k++;
printf("i=%d\n",k);
}
int main(int argc, char *argv[])
{
int i=0;
for(i=0;i<5;i++)
counter();
system("PAUSE");
return 0;
}
//===========================================
(2) 用 static 修飾區域變數k,會發現即使離開counter(),變數k的值並不會消失
//=============================================
#include <stdio.h>
#include <stdlib.h>
void counter()
{
static int k=0;
k++;
printf("i=%d\n",k);
}
int main(int argc, char *argv[])
{
int i=0;
for(i=0;i<5;i++)
counter();
system("PAUSE");
return 0;
}
//=====================================
(3)
將i設為全域變數,在另一個檔案(hello.c)中,將i的值列印出來,因為i為全域變數,所以不會被清為零。
//============================
#include <stdio.h>
#include <stdlib.h>
int i=0;
int main(int argc, char *argv[])
{
int j=0;
for(j=0;j<5;j++)
counter();
system("PAUSE");
return 0;
}
//-------------------(hello.c)--------------------------------
extern i;
void counter()
{
i++;
printf("i=%d\n",i);
}
//====================================
(4)將 全域變數i 用static 修飾,會變成static int i , 只能在main.c中使用 ,當有程式很大時,為避免被其他檔案誤修改變數,
可以將全域變數宣告成static。
//======================================
#include <stdio.h>
#include <stdlib.h>
static int i=0;
int main(int argc, char *argv[])
{
int j=0;
for(j=0;j<5;j++)
counter();
system("PAUSE");
return 0;
}
//------------------(hello.c)-----------------------------------------------
extern i;
void counter()
{
i++;
printf("i=%d\n",i);
}
//======================================