2010年5月28日 星期五

C/C++ : static 的意義

1.用作變數:
1-1:放在函數內

Ex:

void MyFun()
{
static int i=0;
}

說明:"i"為"static,i"的生命週期會到程式結束,但是他的scope 還是在MyFun()中,每次呼叫MyFun(),函數中"i"的值會保留上次呼叫最後一次設定的值。

1-2:放在函數外

Ex:檔案 abc.c 中寫了如下

static int s_i=0;

int myfun()

{}

說明:此時"s_i"只能在檔案"abc.c"中使用,他可以讓"abc.c"中所有的"function"看到,他的生命週期也是到程式結束,但是別的.c 檔是無法使用到"abc.c"檔中的"s_i"。

2.在function 前面加上"static"

Ex:檔案 123.c 中寫了如下

static void MyFun()
{return;}

說明:此時"MyFun()"只能給這個123.c 這個檔案中的其他function 呼叫。
(簡單的說,就是"MyFun()"這個function不會被linker 參考到)

資料來源:http://flykof.pixnet.net/blog/post/23583952

沒有留言: