全局變量是靜態(tài)存儲(chǔ)嗎 靜態(tài)全局變量和全局變量有什么區(qū)別?
靜態(tài)全局變量和全局變量有什么區(qū)別?(1)靜態(tài)局部變量是在函數(shù)中定義的,但與自動(dòng)變量不同,它們?cè)诒徽{(diào)用時(shí)存在,在退出函數(shù)時(shí)消失。靜態(tài)局部變量總是存在的,也就是說(shuō),它的生命周期就是整個(gè)源程序。(2) 雖然
靜態(tài)全局變量和全局變量有什么區(qū)別?
(1)靜態(tài)局部變量是在函數(shù)中定義的,但與自動(dòng)變量不同,它們?cè)诒徽{(diào)用時(shí)存在,在退出函數(shù)時(shí)消失。靜態(tài)局部變量總是存在的,也就是說(shuō),它的生命周期就是整個(gè)源程序。(2) 雖然靜態(tài)局部變量的生存期是整個(gè)源程序,但它的作用域仍然與自動(dòng)變量的作用域相同,即只能用于定義變量的函數(shù)中。退出函數(shù)后,雖然變量繼續(xù)存在,但不能使用。(3) 對(duì)于基本類型的靜態(tài)局部變量,如果初始值未賦值,系統(tǒng)將自動(dòng)賦值為0。如果自動(dòng)變量沒(méi)有給定初始值,則其值是不確定的。根據(jù)靜態(tài)局部變量的特點(diǎn),可以看出它是一種以整個(gè)源文件為生命周期的量。雖然在離開(kāi)定義它的函數(shù)后不能使用它,但是如果再次調(diào)用定義它的函數(shù),并且保存上次調(diào)用后留下的值,則可以繼續(xù)使用它。因此,當(dāng)一個(gè)函數(shù)被多次調(diào)用并且在調(diào)用之間需要保留一些變量的值時(shí),可以考慮靜態(tài)局部變量。雖然使用全局變量也可以達(dá)到上述目的,但全局變量有時(shí)會(huì)產(chǎn)生意想不到的副作用(特別是短全局變量的污染),因此使用局部靜態(tài)變量仍然是合適的??傊o態(tài)局部變量和全局變量最明顯的區(qū)別是全局變量的所有函數(shù)定義后都可以使用,而靜態(tài)局部變量只能在一個(gè)函數(shù)中使用。
靜態(tài)變量和全局變量的區(qū)別?
通過(guò)在全局變量聲明之前添加static來(lái)定義靜態(tài)全局變量。全局變量和靜態(tài)全局變量都是靜態(tài)存儲(chǔ)的;在存儲(chǔ)上沒(méi)有區(qū)別。區(qū)別在于它們的范圍。全局變量的范圍是整個(gè)源程序。當(dāng)源程序由多個(gè)源文件組成時(shí),全局變量在每個(gè)源程序文件中都是有效的。但是,靜態(tài)全局變量的作用域如何受到限制,并且只能在定義該變量的源文件中使用?不能使用同一程序中的其他源文件!靜態(tài)全局變量只初始化一次,以防止調(diào)用其他源文件!全局變量可以用其他源文件初始化
你明白嗎?
static全局變量與普通的全局變量有什么區(qū)別?
在描述全局變量(外部變量)之前,將形成靜態(tài)全局變量。全局變量本身是靜態(tài)存儲(chǔ)方法,靜態(tài)全局變量也是靜態(tài)存儲(chǔ)方法。兩者的存儲(chǔ)模式?jīng)]有區(qū)別。兩者的區(qū)別在于非靜態(tài)全局變量的作用域是整個(gè)源程序。當(dāng)源程序由多個(gè)源文件組成時(shí),非靜態(tài)全局變量在每個(gè)源文件中都是有效的。靜態(tài)全局變量限制了它的作用域,即它只在定義變量的源文件中有效,不能在同一源程序的其他源文件中使用。由于靜態(tài)全局變量的作用域僅限于一個(gè)源文件,因此只能由源文件中的函數(shù)共享,從而避免在其他源文件中引起錯(cuò)誤。從上面的分析可以看出,把局部變量變成靜態(tài)變量會(huì)改變它的存儲(chǔ)方式,也就是改變它的生存期。將全局變量改為靜態(tài)變量后,其作用域發(fā)生變化,應(yīng)用范圍受到限制。靜態(tài)函數(shù)和普通函數(shù)有什么區(qū)別??jī)H在當(dāng)前源文件中使用的函數(shù)應(yīng)描述為靜態(tài)函數(shù),內(nèi)部函數(shù)應(yīng)在當(dāng)前源文件中描述和定義??梢栽诋?dāng)前源文件之外使用的函數(shù)應(yīng)該在頭文件中描述。使用這些函數(shù)的源文件應(yīng)包含此頭文件。