C语言进阶——全局变量
?
全局變量
·定義在函數(shù)外面的變量是全局變量
·全局變量具有全局的生存期和作用域
·它們與任何函數(shù)都無(wú)關(guān)
·在任何函數(shù)內(nèi)部都可以使用它們
?
全局變量初始化
·沒(méi)有做初始化的全局變量會(huì)得到0值
·指針會(huì)得到NULL值
·只能用編譯時(shí)刻已知的值來(lái)初始化全局變量
·它們的初始化發(fā)生在main函數(shù)之前
?
被隱藏的全局變量
·如果函數(shù)內(nèi)部存在與全局變量同名的變量,則全局變量被隱藏
?
靜態(tài)本地變量-1
·在本地變量定義是加上static修飾符就成為靜態(tài)本地變量
·當(dāng)函數(shù)離開(kāi)的時(shí)候,靜態(tài)本地變量會(huì)繼續(xù)存在并保持其值
·靜態(tài)本地變量的初始化只會(huì)在第一次進(jìn)入這個(gè)函數(shù)做,以后進(jìn)入函數(shù)時(shí)會(huì)保持上次離開(kāi)時(shí)的值
?
靜態(tài)本地變量-2
·靜態(tài)本地變量實(shí)際上是特殊的全局變量
·它們位于相同的內(nèi)存區(qū)域
·靜態(tài)本地變量具有全局的生存期,函數(shù)內(nèi)的局部作用域
?
*返回指針的函數(shù)
·返回本地變量的地址是危險(xiǎn)的(每次離開(kāi)后,本地變量分配的內(nèi)存被釋放,下次重新進(jìn)入某函數(shù)時(shí),又重新分配內(nèi)存給本地變量)
·返回全局變量或靜態(tài)本地變量的地址是安全的
·返回在函數(shù)內(nèi)malloc的內(nèi)存是安全的,但是容易造成問(wèn)題
·以上的方法都不建議,最好的做法就是返回傳入的指針
?
tips
·不要使用全局變量來(lái)在函數(shù)間傳遞參數(shù)和結(jié)果
·盡量避免使用全局變量
·豐田汽車(chē)的案子
· *使用全局變量和靜態(tài)本地變量的函數(shù)是線程不安全的
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/tqing/p/10821477.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的C语言进阶——全局变量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: asp.net core系列 48 Id
- 下一篇: 我的这套VuePress主题你熟悉吧