欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

變參函數(shù)C語(yǔ)言,c語(yǔ)言中函數(shù)的參數(shù)是什么變量

C語(yǔ)言變參函數(shù)Printf實(shí)現(xiàn)機(jī)制是什么?

在C/C++中,對(duì)函數(shù)參數(shù)的掃描是從后向前的。C/C++的函數(shù)參數(shù)是通過(guò)壓入堆棧的方式來(lái)給函數(shù)傳參數(shù)的(堆棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)),最先壓入的參數(shù)最后出來(lái),在計(jì)算機(jī)的內(nèi)存中,數(shù)據(jù)有2塊,一塊是堆,一塊是棧(函數(shù)參數(shù)及局部變量在這里),而棧是從內(nèi)存的高地址向低地址生長(zhǎng)的,控制生長(zhǎng)的就是堆棧指針了,最先壓入的參數(shù)是在最上面,就是說(shuō)在所有參數(shù)的最后面,最后壓入的參數(shù)在最下面,結(jié)構(gòu)上看起來(lái)是第一個(gè),所以最后壓入的參數(shù)總是能夠被函數(shù)找到,因?yàn)樗驮诙褩V羔樀纳戏健rintf的第一個(gè)被找到的參數(shù)就是那個(gè)字符指針,就是被雙引號(hào)括起來(lái)的那一部分,函數(shù)通過(guò)判斷字符串里控制參數(shù)的個(gè)數(shù)來(lái)判斷參數(shù)個(gè)數(shù)及數(shù)據(jù)類(lèi)型,通過(guò)這些就可算出數(shù)據(jù)需要的堆棧指針的偏移量了,下面給出printf("%d,%d",a,b);(其中a、b都是int型的)的匯編代碼.

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了成安免費(fèi)建站歡迎大家使用!

.section

.data

string out = "%d,%d"

push b //最后的先壓入棧中

push a //最先的后壓入棧中

push $out//參數(shù)控制的那個(gè)字符串常量是最后被壓入的

call printf

你會(huì)看到,參數(shù)是最后的先壓入棧中,最先的后壓入棧中,參數(shù)控制的那個(gè)字符串常量是最后被壓入的,所以這個(gè)常量總是能被找到的。

通常情況下函數(shù)可變參數(shù)表的長(zhǎng)度是已知的,通過(guò)num參數(shù)傳入,這種函數(shù)比較容易實(shí)現(xiàn)。

變參(C語(yǔ)言)

這是一個(gè)變參函數(shù)聲明。

加三個(gè)點(diǎn)就是了。

取得參數(shù)的套路是

這樣三步,就將 各個(gè)參數(shù),放在了 buf 中。

完整函數(shù)如下:

調(diào)用如下:

其中,vsprintf 可能造成內(nèi)存泄漏,因?yàn)閭魅氲?buf 的大小未知。

可換成

函數(shù)原型:

vsprintf 函數(shù)

vsnprintf 函數(shù)

C語(yǔ)言變參函數(shù)實(shí)現(xiàn)打印函數(shù)

變參函數(shù)的參數(shù)表通常為 (int n,..),其中,n是最后一個(gè)命名參數(shù),用來(lái)指出接下來(lái)要處理參數(shù)的個(gè)數(shù),這些參數(shù)的類(lèi)型是已知的,你要求區(qū)分字符串和字節(jié)流,該如何做呢?

分享標(biāo)題:變參函數(shù)C語(yǔ)言,c語(yǔ)言中函數(shù)的參數(shù)是什么變量
網(wǎng)站地址:http://chinadenli.net/article24/hsgcje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化App設(shè)計(jì)網(wǎng)站排名標(biāo)簽優(yōu)化建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司