C語言
-
變數的存盤類別、
- 靜態存盤變數、——全域變數是靜態存盤
- 程式運行期間有固定存盤空間
2. 動態存盤變數、
3. 存盤的內容、
4. 形參、
5. 區域變數、
6. 函式呼叫時發生的資料和回傳地址、
7. 程式運行期間有根據需要而分配存盤空間、
8. 每次呼叫函式分配的記憶體分配都不一定一樣、
- 程式運行期間有固定存盤空間
- 靜態存盤變數、——全域變數是靜態存盤
-
區域變數的存盤方式、
-
函式呼叫時分配、呼叫完成后空間會被釋放——一般情況下、
void a() { int c = 1; printf("c=%d\n", c); c++; return; } int main() { a(); a(); a(); a(); a(); a(); }//結果一直是1、 -
特殊情況——區域靜態變數、
-
區域靜態變數使用——static保留、
-
void a() { static int c = 1; printf("c=%d\n", c); c++; return; } int main() { a();//回傳1 a();//回傳2、因為區域靜態變數保留數值、占用儲存單元不釋放記憶體 a(); a(); a(); a(); } -
static——將動態變數的存盤區域改為靜態存盤區域???(個人理解或許是錯誤有待驗證) -
區域變數在編譯時賦予初值、只賦予一次、程式運行的時候就有值、以后呼叫時不在重新賦初值而是使用上次呼叫結束時的值、
-
定義區域靜態變數時如不賦初值時、則自動賦值為0、
-
普通區域變數不賦初值、則初值為隨機內容、
-
靜態區域變數使用結束后期內容仍然保留、且其它函式不能參考該內容、
-
缺點、
-
占用記憶體、
-
-
-
-
全域變數跨檔案參考、
-
一個專案中只能有一個main函式
-
使用外部全域變數需在頭部使用extern 來宣告該變數
-
extern ........ ..... ...
-
-
、在全域變數前加上static則該變數只能在本函式內使用、其它函式不能使用、使用extern來宣告的話無效、
-
全域變數使用時、如果別的函式改變該變數的內容、則該全域變數的內容也會變動
-
-
函式的跨檔案呼叫、
- 函式前面加上static、表示該函式是內部函式、靜態函式、限制再本函式中使用、可以并存但是記憶體不同、兩個
- 兩個名稱型別相同的函式可以并存、且兩個函式互不干擾、——同一個專案下、不同的檔案內、
2. 不用static則是外部函式、也可以加extern 加不加都可以
- 兩個名稱型別相同的函式可以并存、且兩個函式互不干擾、——同一個專案下、不同的檔案內、
- 函式前面加上static、表示該函式是內部函式、靜態函式、限制再本函式中使用、可以并存但是記憶體不同、兩個
-
static關鍵字用法總結、
- 限制該全域變數只能再本函式內使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/275.html
標籤:C
