december 6, 2015 11:23 am
1.作用域
檔案作用域:從申明位置開始到問價結束
原型作用域:從申明開始到結束,僅限於申明處,主要用於防止引數重名
**塊作用域:位於一對花括號之內,從申明開始到右花括號
函式作用域:只有語句標號屬於函式作用域,,不需要先申明再使用,乙個函式所有語句標籤唯一
2.鏈結屬性
原始檔被分別編譯之後,所有目標檔案、庫檔案鏈結之後成為可執行檔案。鏈結屬性決定不同原始檔中同名識別符號的鏈結方式,鏈結屬性僅第一次申明有效。
鏈結屬性
含義external
不同檔案相同識別符號屬於同乙個實體。(全部變數,函式名預設為external)
internal
用乙個原始檔相同識別符號屬於同乙個實體(static只對屬性為external的有效,一般修飾函式)
none
相同識別符號屬於單獨個體(區域性變數預設為none)
3.儲存型別
變數的儲存型別指儲存變數的記憶體型別,決定了變數合適何時建立、何時銷毀以及他的值儲存多久。
儲存型別
含義static
靜態儲存,位於普通記憶體,**塊之外申明的變數、靜態變數預設為static,程式執行前建立,執行期間已知一直存在。形參不可用static修飾
auto
自動儲存,位於堆疊,**塊內部申明的區域性變數預設為auto,形參傳遞在堆疊中進行,用於支援遞迴所以形參一定為auto型別
register
位於硬體暫存器,提高執行效率,申明後編譯器根據需要確定是否需要分配暫存器
4.總結
變數型別
申明位置
是否存於堆疊
作用域宣告為static
全域性**快之外
否申明到結束
不允許其他檔案訪問
區域性**塊起始
是整的**塊
不存於堆疊,執行期間一直存在
形參函式頭
是整個函式
不允許,堆疊傳遞函式否
不允許其他檔案訪問
C中的鏈結屬性及作用域
如果相同的識別符號出現在幾個不同的原始檔中時,它們是表示相同的實體,還是不同的實體。識別符號的鏈結屬性決定如何處理在不同檔案中出現的識別符號。識別符號的作用域與它的鏈結屬性有關。鏈結屬性一般有三種 external 外部,internal 內部,none 無。沒有鏈結屬性的識別符號總是被當作單獨的個...
C 作用域 鏈結屬性和儲存型別
變數在程式的某個部分宣告時,只能在程式的一定區域內才能訪問,這個區域就成為作用域。作用域分為四種 檔案作用域 函式作用域 塊作用域和原型作用域。編譯器通過變數宣告的位置來確定作用域 當變數在所有 塊之外宣告時就在檔案作用域中,檔案作用域的範圍是從變數宣告處一直到檔案的結束。但如果宣告在 h 檔案中,...
儲存類 作用域 生命週期 鏈結屬性
補充 1 儲存類就是儲存型別,也就是描述c語言變數在何種地方儲存。2 記憶體有多種管理方法 棧 堆 資料段 bss段 text段 段 乙個變數的儲存類屬性就是描述這個變數儲存在何種記憶體段中。1 作用域是描述這個變數起作用的 範圍。2 基本來說,c語言變數的作用域規則是 塊作用域。1 生命週期是描述...