?
全局變量
·定義在函數外面的變量是全局變量
·全局變量具有全局的生存期和作用域
·它們與任何函數都無關
·在任何函數內部都可以使用它們
?
全局變量初始化
·沒有做初始化的全局變量會得到0值
·指針會得到NULL值
·只能用編譯時刻已知的值來初始化全局變量
·它們的初始化發生在main函數之前
?
被隱藏的全局變量
·如果函數內部存在與全局變量同名的變量,則全局變量被隱藏
?
靜態本地變量-1
·在本地變量定義是加上static修飾符就成為靜態本地變量
·當函數離開的時候,靜態本地變量會繼續存在并保持其值
·靜態本地變量的初始化只會在第一次進入這個函數做,以后進入函數時會保持上次離開時的值
?
靜態本地變量-2
·靜態本地變量實際上是特殊的全局變量
·它們位于相同的內存區域
·靜態本地變量具有全局的生存期,函數內的局部作用域
?
*返回指針的函數
·返回本地變量的地址是危險的(每次離開后,本地變量分配的內存被釋放,下次重新進入某函數時,又重新分配內存給本地變量)
·返回全局變量或靜態本地變量的地址是安全的
·返回在函數內malloc的內存是安全的,但是容易造成問題
·以上的方法都不建議,最好的做法就是返回傳入的指針
?
tips
·不要使用全局變量來在函數間傳遞參數和結果
·盡量避免使用全局變量
·豐田汽車的案子
· *使用全局變量和靜態本地變量的函數是線程不安全的
?
?