C的五種儲存類別
阿新 • • 發佈:2019-02-08
大一新生,剛剛接觸程式設計,學了一段時間發現單純看書和做練習並不能讓我的知識體系完整紮實.於是嘗試寫點部落格看看效果,希望對我有幫助吧.
在cpp上,列出了以下五種儲存型別:(不考慮執行緒的概念)
1.自動:
預設的儲存型別,最早接觸,通常不用關鍵字,在需要與其他型別做區分時,可以加上auto關鍵詞.在塊作用域中宣告,具有自動儲存期,即程式進入該塊時變數存在,退出該塊時變數被銷燬.
2.暫存器:
關鍵字為register,其性質與自動變數很相似,塊作用域,自動儲存期.但是因為它被儲存在暫存器中而不是記憶體中,所以無法獲取它的地址.同時要注意的是,宣告暫存器變數只是一種請求,最終是否將該變數存在暫存器中則是由編譯器來決定.但無論是否被存入暫存器,該變數都無法獲取地址.
3.靜態無連結:
在塊內用關鍵字static宣告變數,具有塊作用域,但它的儲存期是靜態的,也就是說,在該變數被建立後,程式停止執行才會釋放該變數.在迴圈中,但程式再一次執行到該宣告時,會跳過去.自動初始化為0.
4.靜態外部連結:
作為外部變數作用域自然是檔案,靜態儲存期,感覺叫全域性變數比較舒服,也比較熟悉,這種變數在所有塊外面宣告,可以在同一個程式不同翻譯單元(很奇怪的名字,反正就是不同的檔案)中作用.如果要在一個檔案中使用另一個檔案的全域性變數,要用關鍵字extern.自動初始化為0.
5.靜態內部連結:
這個與全域性變數的區別在於宣告時需要加上static關鍵字,同時無法被其他檔案使用.自動初始化為0.
這裡static的含義並不相同,第三種意為儲存期是靜態的,而第五中意為不能在檔案之間共享.