關鍵字: storage duration(儲存時期), scope(作用域), linkage(鏈接)
storage duration(儲存時期): 變數在記憶體中保留的時間
scope(作用域)與linkage(鏈接): 代表在程序中的哪些部份可以使用其變數
scope(作用域): 一個變數的作用域可以是
1. code block scope, 2. 在標頭檔(.h)聲明的函式原型(function prototype) 或 3. 文件作用域(file scope)
1. code block scope(也就是從"{"到"}" )
較簡單, 先略
2. 在標頭檔(.h)聲明的函式原型(function prototype)
舉例:
int myFunc(int mouse, double large);
函式原型的作用域從變數定義處一直到函式原型聲明的結束處(也就是";"嗎XD)
這也代表通常編譯器在處理一個函式原型的參數時, 只關心其參數類型-> int myFunc(int mouse, double large);
使用什麼名字是無關緊要的-> int myFunc(int mouse, double large); //也就是綠色不重要
所以, 如果在標頭檔聲明的函式裡面, 參數有寫入名稱(mouse, large), 並不需要在實作檔(.cpp)也保持參數名稱一致
例如在cpp檔中可以如下:
int myFunc(int cat, double fat)
{
/* ... */
}
但有一個特殊狀況, 參數名稱必須保持一致, 如下:
void use_a_VLA(int n, int m, int ar[n][m]);
如果在方括號("["和"]")中使用了變數名稱, 則這個變量名稱必須是在標頭檔就已經聲明
3. 文件作用域(file scope)
如果是在函式以外的地方定義變數的話, 其變數即擁有文件作用域
從定義變數的地方一直到其文件的尾處都可以認得
這種變數也被稱為全域變數(global variable)
(not yet finished)
留言列表