全域性變數未定義時初始值為0(指標為null),本地變數會隨機亂碼
不要用全域性變數賦值給全域性變數比如:
int all = 1;
int all2 = all; //此處會報錯
void main();
在本地變數前新增:static
靜態本地變數的初始化只在第一次進入函式時做,之後每次進入函式會保持上一次離開時的值
靜態本地變數實際上是全域性變數,與全域性變數存在於同樣的記憶體位址
printf("address of all = %p",&all);
只不過其作用域是區域性的
不要返回本地變數的位址,因為一旦離開函式本地變數就不存在了(不受控,離開函式後該變數的位址會被分配給其他變數),可以返回全域性變數或靜態本地變數的位址,返回函式內malloc的記憶體是安全的,但容易出現問題,最好返回傳入函式的指標。
避免使用全域性變數傳遞引數和結果
盡量避免使用全域性變數量
使用全域性變數和靜態本地變數的執行緒是不安全的
全域性變數 靜態本地變數 結構體
1 定義在函式外面的變數是全域性變數 2 全域性變數具有全域性的生存期和作用域 3 它們與任何函式都無關 4 在任何函式內部都可以使用它們 上 include intf void int gall 12 intmain intf void 可以看到,全域性變數的改變與任何乙個函式都有關係 該 的列印...
全域性變數 VS 本地變數
linux shell全域性變數與本地變數 變數釋放 全域性變數 程式內所有函式可以直接呼叫的變數,對所有函式都是可見的,程式執行完成後釋放變數所佔記憶體。區域性變數 相對於全域性變數,作用域僅在某個函式中,當函式執行完成釋放記憶體。全域性變數定義 在函式外定義變數,若沒有初始化則預設0值。本地 區...
本地變數 全域性變數 型別推斷var
與c 不同,c 在型別的外部不能宣告全域性變數,所有欄位都屬於型別,而且必須在型別宣告內部宣告,同理也沒有全域性函式,c 中方法沒有預設返回型別,所有方法必須包含返回型別或void。在c 中,可以宣告乙個本地變數,然後在巢狀塊中宣告另乙個相同名稱的本地變數,在內部範圍,內部名稱掩蓋了外部名稱,然而在...