close

關鍵字: 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)

arrow
arrow
    文章標籤
    C
    全站熱搜

    lynn770707 發表在 痞客邦 留言(0) 人氣()