溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C語(yǔ)言存儲(chǔ)類關(guān)鍵字

發(fā)布時(shí)間:2020-07-23 15:17:59 來(lái)源:網(wǎng)絡(luò) 閱讀:581 作者:YPB39155 欄目:編程語(yǔ)言

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è)同名的全局變量。


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI