新聞中心
本文由創(chuàng)新互聯(lián)(www.cdcxhl.com)小編為大家整理,本文主要介紹了c語(yǔ)言如何使用定義函數(shù)的相關(guān)知識(shí),希望對(duì)你有一定的參考價(jià)值和幫助,記得關(guān)注和收藏網(wǎng)址哦!

網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專(zhuān)注于企業(yè)網(wǎng)站制作,高端網(wǎng)頁(yè)制作,對(duì)石雕等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專(zhuān)業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專(zhuān)業(yè)營(yíng)銷(xiāo)推廣優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
c語(yǔ)言如何使用定義函數(shù)?
1。我們可以在頭文件和主函數(shù)之間定義,并編寫(xiě)方法程序。
2.
同樣,我們也可以把它寫(xiě)在主函數(shù)之后。
3.
但是,此時(shí)系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤。
4.
如何解決這些錯(cuò)誤?我們可以在主函數(shù)之前定義函數(shù)的定義句。
5.
這個(gè)定義必須以分號(hào)結(jié)束。
6.
接下來(lái),我們可以開(kāi)始編寫(xiě)執(zhí)行過(guò)程了。
c語(yǔ)言函數(shù)如何調(diào)用一串字符?
可以通過(guò)函數(shù)scanf、printf、strcpy等調(diào)用一串字符。c語(yǔ)言函數(shù)調(diào)用規(guī)則?
在參數(shù)傳遞中,有兩個(gè)重要問(wèn)題必須解釋清楚:1.當(dāng)參數(shù)個(gè)數(shù)多于一個(gè)時(shí),參數(shù)按什么順序壓入堆棧;
2.函數(shù)被調(diào)用后,誰(shuí)來(lái)把?;謴?fù)到原來(lái)的狀態(tài)?
在高級(jí)語(yǔ)言中,這兩個(gè)問(wèn)題是通過(guò)調(diào)用函數(shù)來(lái)解釋的。的常見(jiàn)調(diào)用方法有:
stdcall cdecl fast call this call this call裸調(diào)用
以下是幾種呼叫方法:
1.stdcall
Stdcall調(diào)用模式也稱(chēng)為Pascal調(diào)用模式。在微軟C系列的C/C編譯器中,使用PASCAL宏、WINAPI宏和CALLBACK宏來(lái)指定函數(shù)調(diào)用為stdcall。
stdcall方法的函數(shù)聲明是:
int _stdcall函數(shù)(int a,int b);
調(diào)用stdcall的意味著:
(1)參數(shù)一次從右向左壓入堆棧。
(2)被調(diào)用的函數(shù)本身恢復(fù)堆棧。
(3)函數(shù)名自動(dòng)加下劃線,前加下劃線,后加@,后加參數(shù)大小。
上面的函數(shù)翻譯成匯編語(yǔ)言就會(huì)變成:
b先推第二個(gè)參數(shù)。
再次按下第一個(gè)參數(shù)。
調(diào)用函數(shù)調(diào)用函數(shù)
在編譯時(shí),這個(gè)函數(shù)的名字被翻譯成_function@8。
2.cdecl
Cdecl調(diào)用模式,也稱(chēng)為C調(diào)用模式,是C語(yǔ)言的默認(rèn)調(diào)用模式,其語(yǔ)法為:
Int function(int a,int b)///不帶修飾符,是C調(diào)用的
Int _cdecl function(int a,int b) //在c中顯式指定調(diào)用。
調(diào)用cdecl的決定了:
(1)參數(shù)從右向左壓入堆棧。
(2)調(diào)用者恢復(fù)堆棧。
(3)函數(shù)名自動(dòng)加前導(dǎo)下劃線。
因?yàn)檎{(diào)用者還原堆棧,所以C調(diào)用所允許的函數(shù)的參數(shù)個(gè)數(shù)是不固定的,這是C語(yǔ)言的一大特點(diǎn)。
這種的功能翻譯過(guò)來(lái)就是:
b//先推第二個(gè)參數(shù)
a//推送第一個(gè)參數(shù)
調(diào)用函數(shù)//調(diào)用函數(shù)
添加,8//清除堆棧
在編譯時(shí),這種的函數(shù)被翻譯成:_function。
3.快速呼叫
Fastcall從名字就可以知道,是一種快捷的調(diào)用。以這種傳遞函數(shù)的第一和第二DWORD參數(shù)通過(guò)ecx和edx,
以下參數(shù)從右向左推入堆棧。
被調(diào)用的函數(shù)清除堆棧。
函數(shù)名修改的規(guī)則與stdcall相同。
它的聲明語(yǔ)法是:
int fastcall函數(shù)(int a,int b);
4.這通
Thil調(diào)用方法是唯一不能顯示指定修飾符的方法。它是C類(lèi)成員函數(shù)的默認(rèn)調(diào)用方法。因?yàn)槌蓡T函數(shù)調(diào)用也有這個(gè)指針,所以必須用這種特殊的調(diào)用。
調(diào)用thil的方法意味著:
參數(shù)從右向左推入堆棧。
如果參數(shù)個(gè)數(shù)確定,這個(gè)指針通過(guò)ecx傳遞給被調(diào)用者;如果參數(shù)個(gè)數(shù)不確定,那么在所有參數(shù)都被推入堆棧后,這個(gè)指針被推入堆棧。
如果參數(shù)個(gè)數(shù)不確定,調(diào)用者會(huì)清空堆棧,否則函數(shù)會(huì)自己清空堆棧。
可以看出,當(dāng)參數(shù)個(gè)數(shù)固定時(shí),類(lèi)似于stdcall,不固定時(shí),類(lèi)似于cdecl。
5.裸呼
是一種比較少見(jiàn)的調(diào)用方法,在一般的高級(jí)編程語(yǔ)言中并不常見(jiàn)。
函數(shù)聲明的調(diào)用必須與實(shí)際調(diào)用一致,這必然會(huì)導(dǎo)致編譯器的混亂。
函數(shù)名修改規(guī)則:
1.c編譯時(shí)函數(shù)名修飾約定規(guī)則:
__stdcall調(diào)用約定在輸出函數(shù)名前添加一個(gè)下劃線前綴,后跟一個(gè) "@ "符號(hào)及其參數(shù)的字節(jié)數(shù),格式為_(kāi)function@8。
__cdecl調(diào)用約定只給輸出函數(shù)名加一個(gè)下劃線前綴,格式為_(kāi)function。
__fastcall調(diào)用約定添加了一個(gè) "@ "符號(hào),后面跟一個(gè) "@ "符號(hào)及其參數(shù)的字節(jié)數(shù)。格式是@function@8。
它們不改變輸出函數(shù)名中字符的大小寫(xiě),這與PASCAL調(diào)用約定不同,PASCAL調(diào)用約定規(guī)定輸出函數(shù)名全部大寫(xiě),不做任何修改。
2.c編譯時(shí)函數(shù)名修飾約定規(guī)則:
__stdcall調(diào)用約定:
(1)從 "? "識(shí)別函數(shù)名的開(kāi)頭,后面跟著函數(shù)名;
(2)與"@ @ YG amp;"在函數(shù)名后標(biāo)記參數(shù)表的開(kāi)頭,后面跟著參數(shù)表;
(3)參數(shù)表用代號(hào)表示:
X - void,
d字符,電子無(wú)符號(hào)字符,
F - short,
H - int,
I -無(wú)符號(hào)整數(shù),
j龍,
K -無(wú)符號(hào)長(zhǎng)整型,
m浮動(dòng),
n倍,
_N - bool,
....
PA -表示指針,后面的代碼表示指針類(lèi)型。如果同一類(lèi)型的指針連續(xù)出現(xiàn),它將被替換為 "0 ",以及a "0 "將被替換。
表格重復(fù)一次;
(4)參數(shù)表中第一項(xiàng)是函數(shù)的返回值類(lèi)型,后面是參數(shù)的數(shù)據(jù)類(lèi)型,指針標(biāo)記在它所引用的數(shù)據(jù)類(lèi)型之前;
(5)全稱(chēng)的末尾標(biāo)有 "@ Z "參數(shù)表后。如果函數(shù)沒(méi)有參數(shù),它以 "z "。
格式是 "?姓名@ @ yg * * * * @ z "or "?函數(shù)@ @ yg * xz "比如說(shuō)
int Test1(char *var1,unsigned long) -&";?Test1@@YGHPADK@Z &";
void Test2() -&";?Test2@@YGXXZ &";
__cdecl調(diào)用約定:
It 與上面的_stdcall調(diào)用約定相同,只是參數(shù)表的起始標(biāo)識(shí)符從 "@ @ YG amp;"以上為 "@ @ YA "。
__fastcall呼叫約定:
它與規(guī)則上面的_stdcall的調(diào)用約定相同,只是參數(shù)表的起始標(biāo)識(shí)符從 "@ @ YG amp;"以上為 "@ @ YI "。
VC函數(shù)的默認(rèn)聲明是 "_ _ cedcl ",只能由C/C調(diào)用。
c語(yǔ)言函數(shù)的定義與調(diào)用?
1。該函數(shù)立即調(diào)用執(zhí)行模式。
2.
通過(guò)構(gòu)造函數(shù)創(chuàng)建一個(gè)對(duì)象,然后調(diào)用自己的方法。
3.
通過(guò)構(gòu)造函數(shù)調(diào)用函數(shù)。
網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言如何使用定義函數(shù)?(c語(yǔ)言函數(shù)如何調(diào)用一串字符?)
文章URL:http://m.5511xx.com/article/cossede.html


咨詢(xún)
建站咨詢(xún)
