函數(shù)的隱含存儲(chǔ)類型是extern,按照c語(yǔ)言的原則,函數(shù)隱含為全局都可以訪問(wèn),因此默認(rèn)為extern,而auto只用于變量,是變量的隱含存儲(chǔ)類型。

閔行網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,閔行網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為閔行上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的閔行做網(wǎng)站的公司定做!
形參
或者說(shuō)所有的變量,缺省的存儲(chǔ)類別都是auto的。
C語(yǔ)言中四種存儲(chǔ)類別
auto
static
extern
register
除非標(biāo)了,否則都是auto。
答案都選A:上面幾位胡說(shuō)霸道。
不是static 形參存儲(chǔ)類型只有兩種可能,一是auto類型,而是register類型。我給你細(xì)細(xì)解說(shuō)
auto 就是堆棧存儲(chǔ) 而register的是cpu內(nèi)部寄存器存儲(chǔ)
具體函數(shù)的形參采用那種存儲(chǔ)方法,這和函數(shù)的“調(diào)用規(guī)則(calling convention)”有關(guān)。
調(diào)用規(guī)則主要設(shè)計(jì)參數(shù)的傳遞,入棧順序,寄存器傳參,函數(shù)返回值的存儲(chǔ)和清棧者,調(diào)用規(guī)則主要有 cdecl stdcall thiscall fastcall等等。棧是函數(shù)調(diào)用必需的數(shù)據(jù)結(jié)構(gòu)。你可以在函數(shù)聲明是注明函數(shù)的調(diào)用規(guī)則:如 int cdecl add (int a,int b) 。 注意函數(shù)有默認(rèn)的調(diào)用規(guī)則,所以你再寫(xiě)程序時(shí),沒(méi)有必要注明調(diào)用規(guī)則。你此外還可以添加編譯選項(xiàng)修改調(diào)用規(guī)則。
cdecl : (c/c++語(yǔ)言默認(rèn)的調(diào)用規(guī)則):堆棧傳參參數(shù),因此是auto類型。
stdcall :有叫做pascal,WINAPI,這個(gè)調(diào)用規(guī)則出現(xiàn)在windows的API函數(shù)中。它也采用堆棧傳遞參數(shù)。
thiscall:類中的函數(shù)的調(diào)用方式:參數(shù)傳遞和編譯器有關(guān) Windows VC中 this指針用ECX寄存器存儲(chǔ),而unix gcc中 this用棧存儲(chǔ)。其他參數(shù)也是用棧存儲(chǔ)。
fastcall:用寄存器存儲(chǔ)部分參數(shù)加快函數(shù)調(diào)用,其他參數(shù)用棧存儲(chǔ)。
所以,沒(méi)有隱含的存儲(chǔ)類型,形參的存儲(chǔ)類型和調(diào)用規(guī)則有關(guān)。但是如果真要學(xué)究般的考慮這個(gè)問(wèn)題,則答案選A,因?yàn)镃語(yǔ)言函數(shù)的默認(rèn)調(diào)用方式是cdecl,它的參數(shù)傳遞只采用了棧,因此是auto(答案A)
而實(shí)參的存儲(chǔ)類型可以是A,B,C,D四種,隱含的類型(也就是你在定義變量是,不指明存儲(chǔ)類型)是auto(答案A)
C。
在函數(shù)內(nèi)部或復(fù)合語(yǔ)句內(nèi)定義變量時(shí),如果沒(méi)有指定的存儲(chǔ)類型或使用了auto說(shuō)明符,系統(tǒng)就認(rèn)為所定義的變量具有自動(dòng)類別。
形參即函數(shù)的自變量,其初值來(lái)源于函數(shù)的調(diào)用。只有在程序執(zhí)行過(guò)程中調(diào)用了函數(shù),形參才有可能得到具體的值,并參與運(yùn)算求得函數(shù)值。形參表相當(dāng)于變量說(shuō)明,但應(yīng)特別注意:此處只能使用類型標(biāo)識(shí)符,而不能直接使用類型。
用auto(或省略)來(lái)區(qū)分說(shuō)明的局部變量。當(dāng)執(zhí)行進(jìn)入局部變量所在的塊時(shí),在棧上為變量分配存儲(chǔ),退出塊時(shí),存儲(chǔ)單元被回收。具有自動(dòng)存儲(chǔ)期的變量在進(jìn)入聲明該變量的程序塊時(shí)被建立,它在該程序塊活動(dòng)時(shí)存在,退出該程序塊時(shí)撤銷。在函數(shù)內(nèi)部定義的變量成為局部變量。
擴(kuò)展資料:
1、register關(guān)鍵字提示編譯器把局部變量或函數(shù)的形參盡可能放入CPU的寄存器中,以便快速訪問(wèn)。因此變量的字節(jié)長(zhǎng)度不應(yīng)該超過(guò)寄存器的長(zhǎng)度。不要用取地址符()去獲得此變量的內(nèi)存地址。例如:
{
register int Miles;
}
2、static是全局變量的默認(rèn)存儲(chǔ)類。例如:
static int Count;
int Road;
main()
{
printf("%d\n", Count);
printf("%d\n", Road);
}
Count與Road兩個(gè)變量都是默認(rèn)的static存儲(chǔ)類。
3、extern存儲(chǔ)類是指全局變量可以被各個(gè)對(duì)象模塊訪問(wèn)。使用extern關(guān)鍵字時(shí),表示變量已經(jīng)在別處定義,所以不能在此處初始化。
參考資料:
百度百科-形式參數(shù)
百度百科-存儲(chǔ)類
C語(yǔ)言中形參的默認(rèn)存儲(chǔ)類別是(A)auto?(B)?static?(C)register?(D)extern
解:
A.auto B.static C.register D.extern
A 的變量在堆棧里,自然是運(yùn)行時(shí)
B 是靜態(tài)變量
C 是寄存器變量,使用的是cpu的寄存器
D 是全局變量
BD都是放在數(shù)據(jù)段中的,編譯的時(shí)候就已經(jīng)確定了位置(有的編譯器對(duì)b和d的處理不一樣)
分享題目:C語(yǔ)言函數(shù)形參儲(chǔ)存類型,c語(yǔ)言中形參的默認(rèn)存儲(chǔ)類型
URL地址:http://chinadenli.net/article44/dseogee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、搜索引擎優(yōu)化、商城網(wǎng)站、網(wǎng)站收錄、Google、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)