變數分類及其特點
普通全域性變數:
1.生命週期:程式開始執行是建立,程式結束時才銷燬
2.作用域:定義開始直到本原始檔結束,(不安全)普通全域性變數的作用域是整個源程式,當一個源程式由多個原檔案組成 時,普通的全域性變數在各個原始檔中都是有效的。如果想在別的檔案中訪問可以加上extern宣告 https://www.cnblogs.com/mch0dm1n/p/5727667.html
3.預設值:為0
4.連線屬性:外部
5.記憶體區域:全域性區
靜態全域性變數:
static全域性變數初始化語句只執行一次一次
1.生命週期:程式開始執行是建立,程式結束時才銷燬
2.作用域:定義開始直到本檔案結束,(不安全)而靜態全域性變數則限制了其作用域,即只在定義該變數的原始檔內有效,在 同一源程式的其它原始檔中不能使用它。靜態全域性變數就是用來解決重名問題的
3.預設值:為0
4.連線屬性:內部
5.記憶體區域:全域性區
普通區域性變數:
1.生命週期:進入函式時建立,函式結束時銷燬
2.作用域:本函式內有效
3.預設值:隨機值
4.連線屬性:無
5.記憶體區域:棧
靜態區域性變數:
1.生命週期:進入函式時建立,函式結束時銷燬
2.作用域:不死 ??
3.預設值:為0
4.連線屬性:無
5.記憶體區域:全域性區
動態記憶體:
1.生命週期:通過malloc函式建立,free釋放
2.作用域:能獲得就能用
3.預設值:隨機
4.連線屬性:無
5.記憶體區域:堆
普通函式:
1.生命週期:
2.作用域:對於可在當前原始檔以外使用的函式應該在一個頭檔案中說明,要使用這些函式的原始檔要包含這個標頭檔案。
3.預設值:無
4.連線屬性:無
5.記憶體區域:程式碼段
靜態函式:
1.生命週期:
2.作用域:只在當前原始檔中使用的函式
3.預設值:無
4.連線屬性:無
5.記憶體區域:程式碼段
static函式與普通函式最主要區別是static函式在記憶體中只有一份,普通函式在每個被呼叫中維持一份拷貝程式的區域性變數存在於(棧)中
對於一個完整的程式:記憶體分佈有如下幾個區、棧區、堆區、全域性區、常量區、程式碼區。