一、函數(shù)執(zhí)行時(shí)使用棧空間作為自己的臨時(shí)棧,3種方式?jīng)Q定編譯器清空棧的方式:__stdcall、 __fastcall、__cdecl
1、__stdcall表示每個(gè)調(diào)用者負(fù)責(zé)清空自己調(diào)用的函數(shù)的臨時(shí)棧
???? __fastcall函數(shù)自己在返回前自己清空臨時(shí)棧,然后返回值退出
???? __cdecl表示所有調(diào)用者只有一個(gè)清空函數(shù)來負(fù)責(zé)清空所有被調(diào)用函數(shù)的臨時(shí)棧
2、這三種方式?jīng)Q定函數(shù)棧壓棧的參數(shù)順序,都是從右到左.
3、在window下,函數(shù)名前加_stdcall,它決定了函數(shù)的名字轉(zhuǎn)換方式.
?
二、關(guān)于臨時(shí)棧的總結(jié)
1.函數(shù)執(zhí)行的時(shí)候有自己的臨時(shí)棧(在局部棧里).
???? C++成員函數(shù)擁有兩個(gè)棧空間,一個(gè)是函數(shù)本身的棧空間,另一個(gè)是對(duì)象的棧空間
???? 因?yàn)楹瘮?shù)本身是在對(duì)象的棧空間里運(yùn)行
???? C里函數(shù)只有一個(gè)棧空間
2.函數(shù)的參數(shù)就在臨時(shí)棧中.如果函數(shù)傳遞實(shí)參.則用來初始化臨時(shí)參數(shù)變量.
??不管哪種傳遞,實(shí)質(zhì)傳遞的都是值,一般變量傳的是數(shù)據(jù),而指針傳的是地址值??
3.通過寄存器返回值.(使用返回值返回?cái)?shù)據(jù))
4.通過參數(shù)返回值.(參數(shù)必須是指針)
? ?指針指向的區(qū)域必須事先分配.
5.如果參數(shù)返回指針.參數(shù)就是雙指針.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
