c 中變數的儲存種類

2022-05-15 10:33:11 字數 692 閱讀 7366

1 全域性變數

在所有函式之外定義的變數是全域性變數,它的生命週期直到程式結束。程式中的所有部分都對該變數可見。通過extern關鍵字,甚至外部檔案也可以訪問該變數。

2 區域性變數

區域性變數在函式體內宣告,其作用域只在該函式體內。其中區域性變數有一下2中情況:

(1)暫存器變數

在宣告區域性變數的時候,使用關鍵字register可以暗示編譯器"應該盡可能快的訪問該變數",但這僅僅是暗示,編譯器並不一定會將該變數放入暫存器中,甚至也不一定保證提高訪問速度。而且,對於register變數還有限制,不能獲取register變數的位址或者引用,然而可以再乙個函式的引數列表中使用register變數作為形參。最好避免使用register引數。

(2) static變數

將函式內的區域性變數宣告成static,那麼區域性變數的生命週期就不在是該函式被呼叫的時刻,而是整個程式的整個生命期裡都存在,並且只在函式第一次呼叫的時候初始化一次。它與全域性變數的區別是,static變數在其存在的函式外部不可見。

對於static關鍵字,它還有第二層意思:"在檔案外部不可訪問這個名字",因此,當static應用於函式名或者所有函式外部變數時,其他外部檔案無法訪問它們,即使用extern關鍵字也一樣。

3 常量

c++中有命名常量的概念,它和變數一樣,只是值不能改變,它通過關鍵字const宣告。所有的內建資料型別和使用者自定義型別都可以宣告成const。

Shell變數的種類

使用者自己定義的變數 由使用者自己定義,修改和使用。預定義變數 bash預定義的特殊變數,不能直接修改。位置變數 通過命令給程式傳遞執行引數,例如,n 位置變數有9個,0 1 2 3 4 5 6 7 8 9 bin bash echo 1 echo 2 echo 3 echo 4 echo 5 ec...

程式中變數的儲存

char s string 的內容是不可以改的 void main void change char pinstr 兩種change編譯都可以通過,但發現第二個change是可以正確地修改第乙個字母為 o 而第乙個會操作失敗導致程式死掉。為什麼會這樣呢,首先要搞清楚編譯程式占用的記憶體的分割槽形式 ...

C變數的儲存方式

變數可以分為全域性變數 靜態全域性變數 靜態區域性變數和區域性變數 按儲存區域分 全域性變數 靜態全域性變數和靜態區域性變數都存放在記憶體的全域性資料區,區域性變數存放在記憶體的棧區 按作用域分 全域性變數在整個工程檔案內都有效 靜態全域性變數只在定義它的檔案內有效 靜態區域性變數只在定義它的函式內...