您好,登錄后才能下訂單哦!
1、static
這個(gè)關(guān)鍵字有三種用法:
(1)第一種是用來(lái)修飾局部變量,使之成為靜態(tài)局部變量;靜態(tài)局部變量存儲(chǔ)在數(shù)據(jù)段/bss段中,作用域是代碼塊作用域,生命周期是程序生命周期,鏈接屬性是無(wú)連接。靜態(tài)局部變量只初始化一次,以后使用時(shí)的值是上次使用后的值(類似全局變量)
(2)第二種是用來(lái)修飾全局變量,使之成為靜態(tài)全局變量;靜態(tài)全局變量存儲(chǔ)在數(shù)據(jù)段/bss段中,作用域是文件作用域,生命周期是程序生命周期,鏈接屬性是外鏈接。static修飾的全局變量只在定義它的源文件內(nèi)有效,在同一源程序的其它源文件內(nèi)不可使用,利用此特性可以避免多文件變量重名的問(wèn)題。
(3)第三種是用來(lái)修飾函數(shù),使之成為靜態(tài)函數(shù);靜態(tài)全局變量存儲(chǔ)在數(shù)據(jù)段/bss段中,作用域是文件作用域,生命周期是程序生命周期,鏈接屬性是內(nèi)鏈接。static修飾的函數(shù)只在定義它的源文件內(nèi)有效,在同一源程序的其它源文件內(nèi)不可使用,利用此特性可以避免多文件函數(shù)重名的問(wèn)題。
(4)在多個(gè)源文件的程序中,只在一個(gè)源文件使用的函數(shù)或者全局變量應(yīng)該加static關(guān)鍵字加以說(shuō)明。
2、auto
這個(gè)關(guān)鍵字只有一種用法:
只能用來(lái)修飾局部變量,使之成為自動(dòng)局部變量,自動(dòng)局部變量存儲(chǔ)在棧上,其實(shí)我們平常定義的局部變量就是自動(dòng)局部變量,只是我們把a(bǔ)uto關(guān)鍵字省略了;可見(jiàn),定義普通的局部變量默認(rèn)就是auto關(guān)鍵字修飾的局部變量。
3、extern
(1)這個(gè)關(guān)鍵字常用來(lái)聲明全局變量;目地是在多文件項(xiàng)目中在a.c中定義全局變量而在b.c中使用這個(gè)全局變量;
(2)因?yàn)镃語(yǔ)言程序編譯時(shí)是以單個(gè).c文件為單位編譯的,如果不聲明直接使用,編譯器就會(huì)報(bào)錯(cuò)誤,解決方案就是使用extern關(guān)鍵字聲明(注意聲明時(shí)不能賦值,否則會(huì)出現(xiàn)錯(cuò)誤:重復(fù)定義)
(3)應(yīng)該在b.c中使用這個(gè)全局變量之前聲明這個(gè)全局變量,告訴編譯器我在別的文件中定義了這個(gè)全局變量,并且原型和聲明一樣,這樣鏈接時(shí)鏈接器就會(huì)去別的.o文件中找到這個(gè)同名的全局變量。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。