函數(shù)的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了黎平免費建站歡迎大家使用!
static是指該函數(shù)只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。
C語言中函數(shù)的存儲類型隱含為版全局的,因此默認(rèn)為extern。
函數(shù)內(nèi)定義的變量,默權(quán)認(rèn)作用域在本函數(shù)內(nèi),即其類型是auto。
擴展資料:
在C語言中,提供了四種存儲類型的存儲說明符:auto、Register、Extern和static。這四個存儲類別說明符有兩個存儲術(shù)語:自動存儲術(shù)語和靜態(tài)存儲術(shù)語。
“自動”和“寄存器”對應(yīng)的是自動存儲周期。具有自動存儲周期的變量在進入聲明變量的塊時被創(chuàng)建,在塊活動時存在,在塊退出時被撤銷。在函數(shù)中定義的變量成為局部變量。在一些C教科書中,局部變量被稱為automatic,這與使用可選關(guān)鍵字auto定義局部變量的做法一致。
Extern通常用于變量聲明:在*中的另一個文件中引用全局變量。在*.h中應(yīng)該使用extern來聲明全局變量。
Turbo C2.0支持四種變量存儲類型。說明符如下: \x0d\x0a auto static extern register \x0d\x0a下面分別來介紹。 \x0d\x0a一、auto \x0d\x0aauto稱為自動變量。\x0d\x0a\x0d\x0a局部變量是指在函數(shù)內(nèi)部說明的變量(有時也稱為自動變量)。用關(guān)鍵字auto進 \x0d\x0a行說明, 當(dāng)auto省略時, 所有的非全程變量都被認(rèn)為是局部變量, 所以auto實際上 \x0d\x0a從來不用。 \x0d\x0a 局部變量在函數(shù)調(diào)用時自動產(chǎn)生, 但不會自動初始化, 隨函數(shù)調(diào)用的結(jié)束, 這 \x0d\x0a個變量也就自動消失了, 下次調(diào)用此函數(shù)時再自動產(chǎn)生, 還要再賦值, 退出時又自 \x0d\x0a動消失。 \x0d\x0a二、static \x0d\x0a static稱為靜態(tài)變量。根據(jù)變量的類型可以分為靜態(tài)局部變量和靜態(tài)全程變量。 \x0d\x0a 1. 靜態(tài)局部變量 \x0d\x0a 它與局部變量的區(qū)別在于: 在函數(shù)退出時, 這個變量始終存在, 但不能被其它 \x0d\x0a函數(shù)使用, 當(dāng)再次進入該函數(shù)時, 將保存上次的結(jié)果。其它與局部變量一樣。 \x0d\x0a 2. 靜態(tài)全程變量 \x0d\x0a Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然后將所有模塊 \x0d\x0a的目標(biāo)文件連接在一起, 從而提高編譯速度, 同時也便于軟件的管理和維護。靜態(tài) \x0d\x0a全程變量就是指只在定義它的源文件中可見而在其它源文件中不可見的變量。它與 \x0d\x0a全程變量的區(qū)別是: 全程變量可以再說明為外部變量(extern), 被其它源文件使用, \x0d\x0a而靜態(tài)全程變量卻不能再被說明為外部的, 即只能被所在的源文件使用。 \x0d\x0a三、extern \x0d\x0a extern稱為外部變量。為了使變量除了在定義它的源文件中可以使用外, 還要 \x0d\x0a被其它文件使用。因此, 必須將全程變量通知每一個程序模塊文件, 此時可用 \x0d\x0aextern來說明。 \x0d\x0a四、register \x0d\x0a register稱為寄存器變量。它只能用于整型和字符型變量。定義符register說 \x0d\x0a明的變量被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變量那樣存儲在內(nèi) \x0d\x0a存中, 這樣可以提高運算速度。但是Turbo C2.0只允許同時定義兩個寄存器變量, \x0d\x0a一旦超過兩個, 編譯程序會自動地將超過限制數(shù)目的寄存器變量當(dāng)作非寄存器變量 \x0d\x0a來處理。因此, 寄存器變量常用在同一變量名頻繁出現(xiàn)的地方。 \x0d\x0a 另外, 寄存器變量只適用于局部變量和函數(shù)的形式參數(shù), 它屬于auto型變量, \x0d\x0a因此, 不能用作全程變量。定義一個整型寄存器變量可寫成: \x0d\x0a register int a; \x0d\x0a 對于以上所介紹的變量類型和變量存儲類型將會在以后的學(xué)習(xí)中, 通過例行程 \x0d\x0a序中的定義、使用來逐漸加深理解。
C。
C語言規(guī)定,只要在定義函數(shù)時不進行存儲類型的顯式說明,函數(shù)的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數(shù)調(diào)用。
實際上函數(shù)的聲明和定義都不需要添加extern關(guān)鍵字,在實際使用的時候也最好不要添加關(guān)鍵字。
如果一個函數(shù)是不會被其它文件調(diào)用的,那么這個函數(shù)應(yīng)該被聲明成static的。
如:
extern int func(void){
return 0;
}
跟
int func(void){
return 0;
}
是等價的,另外
extern int func(void);
跟
int func(void);是等價的。
擴展資料:
函數(shù)調(diào)用的一般形式為:
函數(shù)名(實參表列);
如果是調(diào)用無參函數(shù),則"實參表列"可以沒有,但括弧不能省略。如果實參表列包含多個實參,則個參數(shù)間用逗號隔開。實參與形參的個數(shù)應(yīng)相等,類型應(yīng)一致。
實參與形參按順序?qū)?yīng),一一傳遞數(shù)據(jù)。但應(yīng)說明,如果實參表列包括多個實參,對實參求值的順序并不是確定的,有的系統(tǒng)按自左至右順序求實參的值,有的系統(tǒng)則按自右至左順序
參考資料:
百度百科-c函數(shù)
函數(shù)的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。
static是指該函數(shù)只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。
C語言中函數(shù)的存儲類型隱含為版全局的,因此默認(rèn)為extern。
函數(shù)內(nèi)定義的變量,默權(quán)認(rèn)作用域在本函數(shù)內(nèi),即其類型是auto。
擴展資料:
C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態(tài)存儲期。
其中auto和register對應(yīng)自動存儲期。具有自動存儲期的變量在進入聲明該變量的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。在函數(shù)內(nèi)部定義的變量成為局部變量。在某些C語言教材中,局部變量稱為自動變量,這就與使用可選關(guān)鍵字auto定義局部變量這一作法保持一致。
extern用在變量聲明中常常有這樣一個作用:要在*.c文件中引用另一個文件中的一個全局的變量,那就應(yīng)該放在*.h中用extern來聲明這個全局變量。
extern用于變量的用法:
1、extern int a;//聲明一個全局變量a
2、int a; //定義一個全局變量a
3、extern int a =0 ;//定義一個全局變量a 并給初值。一旦給予賦值,一定是定義,定義才會分配存儲空間。(注意:經(jīng)過測試在GCC中,這樣定義變量是不能通過編譯的,而在VS2013可以)
參考資料來源:百度百科——extern
參考資料來源:百度百科——auto
c語言中,函數(shù)的隱含存儲類別是extern
形參的默認(rèn)存儲類別是auto
本文題目:c語言函數(shù)的存儲類別,舉例寫出c語言的四種存儲類別
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article48/dssgiep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、電子商務(wù)、搜索引擎優(yōu)化、網(wǎng)站設(shè)計、網(wǎng)站改版、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)