一.全域性變數:定義在函式外部的變數;
生命週期:程式開始時建立和程式結束時銷毀。
作用域: 定義變數的開始直到結束。
預設值: 在全域性(靜態)變數區為0。
例:在min.cpp中定義全域性變數 int a=10;
若在max.cpp中呼叫a,使用extern(引用外部符號) int a就能宣告全域性變數a,然後就可以使用a
二. 靜態全域性變數
與全域性變數的區別:加static(靜態,值可以變,主要用於修飾函式)
生命週期:程式開始時建立和程式結束時銷毀。
作用域: 定義變數的開始直到結束。
預設值: 在全域性(靜態)變數區為0。
例:在min.cpp中定義全域性變數 static int a=10;
若在max.cpp中呼叫a,即使使用extern(引用外部符號) ,在max.cpp中也不能使用int a=10.
三.區域性變數:定義在函式內部的變數,包括形參。
生命週期:進入函式時建立,退出函式時銷毀
作用域: 本函式內部有效。
預設值: 隨機值。
記憶體區域:棧裡面
eg:
# includevoid fun()
int main()
return 0;
}
執行結果:
四:靜態區域性變數:定義在函式內部的變數,包括形參。
生命週期:進入函式時建立,程式結束時銷毀
作用域: 無
預設值: 0
記憶體區域:全域性變數區
static int a=0;//第一次進入才執行
eg:
# includevoid fun()
int main()
return 0;
}
執行結果:
五:動態記憶體
生命週期:建立動態記憶體時建立,調運動態記憶體釋放函式時銷毀
預設值 : 無
記憶體區域:堆(記憶體洩漏)
#include #includeint * fun()
int main()
free(p); //釋放動態記憶體
return 0;
}
執行結果:
六. 函式:外部函式和內部函式
記憶體區域:在**段
有static 內部
eg:在max.h中存放max函式的宣告,在主函式頁新增max.h標頭檔案便可使用max函式.如果若在max函式前新增static,即使使用extern 宣告max函式也無法使用max函式。
理解Python的「變數」
和c的變數完全不同,c變數修改值位址是不會變的,即重寫了該變數名對應位址的儲存單元內的資料值。python 現x 10,意味著引用x指向了10 所以引用是啥 實際上我也不清楚這裡所謂引用的實現到底是什麼,只知道x指向了存放10的儲存單元。然後,id x 可以檢視到具體位址。我個人的理解是,可變資料型...
global變數的理解
此函式是定義全域性變數的函式 如果b 2defa b 1 b return ba 這個時候程式執行就會報錯,為什麼我不清楚,但是不能直接b b 1 但是c b 1就可以 如果b 2def a b b 1 b return b a b 這個程式就不會報錯,因為b這個變數已經被匯入 如果b 2defa ...
理解變數提公升
es5提供了兩種變數宣告的方式,分別是var和function。var是變數宣告,function是函式宣告。函式宣告優先於變數宣告,解析器會率先讀取函式宣告,並使其在執行任何 之前可用。理解乙個過程 程式設計師都知道計算機只能識別0和1,也就是二進位制。那麼計算機是怎麼識別 的呢?計算機執行 前會...