標籤:style 使用 sp strong 檔案 資料 on 代碼 bs
簡要概述:
《C和指標》第三章對資料進行了描述。
其中主要講解了---變數的三個屬性:範圍、連結屬性和儲存類型。
這三個屬性決定了該變數在“什麼地方可以使用”以及“該變數的值能夠保持多久”。
總結範圍:
1、檔案範圍、代碼塊範圍、原型範圍和函數範圍
檔案範圍:在代碼塊之外聲明的標識符 file scope
代碼塊範圍:聲明在{}中
原型範圍:int getScore(int ucStudent); 該函數原型聲明中,int ucStudent具有原型範圍
函數範圍:這個不用管。
總結連結屬性:
連結屬性:external(外部連結屬性)、internal(內部連結屬性)和none(無連結屬性)
連結屬性的作用:標識的連結屬性決定如何處理在不同源檔案中出現的標識符。
例如,相同的標識符A出現在不同的源檔案中,當這些源檔案編譯後形成目標檔案,
下一步進行連結形成可執行檔時,這些A表示同一個實體還是不同實體,由A的連結屬性決定。
external:具有外部連結屬性的標識符,無論聲明多少次,不管存在多個源檔案中,都表示同一個實體。
internal:當A具有intonernal連結屬性,處於同一個源檔案中的聲明指向同一個實體,處於不同源檔案中的多個聲明分屬不同的實體。
none:不管處於同一個源檔案還是不同源檔案的聲明,均指向不同的實體。
1、具有檔案範圍的變數預設均為“外部連結屬性”
2、在函數內部或代碼塊中聲明的變數預設為“none“
3、static 和 extern可以改變標識符的連結屬性,但是具有如下限制:
1)static :只對預設為external屬性的聲明才有改變的效果
2)當extern關鍵字用於源檔案中一個標識符的第一次聲明時,具有改變連結屬性的效果,但用於標識符的第二次或以後的聲明時,則
不會更改第一次聲明的連結屬性。
總結儲存類型
儲存類型指該變數儲存變數值的記憶體類型。
靜態 |
普通記憶體中 |
全域變數、static全域變數、static局部變數 |
自動儲存類型 |
儲存在堆棧中 |
局部變數 |
register |
儲存在寄存器中 |
register關鍵字修飾的變數 |
C和指標 第三章--資料