日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c 语言多参数函数,C/C++实现多参数函数编程

發(fā)布時間:2025/3/15 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c 语言多参数函数,C/C++实现多参数函数编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在C/C++中,我們經(jīng)常會需要實現(xiàn)類似printf這樣的函數(shù),即函數(shù)的參數(shù)個數(shù)是不定的,這個時候就需要用到我們這篇文章講到的方法啦。

首先,我們要知道這種函數(shù),如何來定義。比如我想實現(xiàn)一個函數(shù)能夠支持 fun(“%d”,1);

那么這個函數(shù)的定義實際上如下:

void?fun(const?char?*fmt, …);

其中…的意思是說參數(shù)無法一一列出,所以用…代替,至于怎么解,我們稍后再說。

比較特殊的一點是,如果你希望將上面的函數(shù)定義成一個宏,那么這個宏可以這樣寫:

#define?FUN(fmt, args…)????fun(fmt, ##args)

又假設(shè)你希望宏能夠自動加上換行符,那么可以這樣寫:

#define?FUN(fmt, args…)????fun(fmt“\n”, ##args)

OK,那么函數(shù)定義的問題我們就解決啦,但是怎么來解呢?

C里面提供了va_start,va_arg,va_end這樣幾個函數(shù),解釋如下:

va_start使argp指向第一個可選參數(shù)。va_arg返回參數(shù)列表中的當(dāng)前參數(shù)并使argp指向參數(shù)列表中的下一個參數(shù)。va_end把a(bǔ)rgp指針清為NULL。函數(shù)體內(nèi)可以多次遍歷這些參數(shù),但是都必須以va_start開始,并以va_end結(jié)尾。

可能只是這樣說并不是很清楚,我們舉個例子。

1、假設(shè)我們現(xiàn)在想要fun實現(xiàn)和printf一樣的功能,那么實際上,我們是不需要把所有解析出來的,我們只有把參數(shù)原樣傳給printf即可,代碼如下:

void?fun(const?char*?fmt,…)

{

va_list ap;

va_start(ap, fmt);//將ap指向fmt后的第一個參數(shù)

vfprintf(stderr,fmt,ap);

va_end(ap);//將ap置為NULL

}

2、假設(shè)我們現(xiàn)在是要將傳入的參數(shù)都取出來,那么我們就要用到va_arg了,代碼如下:

void?fun(const?char*?fmt,…)

{

va_list ap;

va_start(ap, fmt);//將ap指向fmt后的第一個參數(shù)

int?value?=?va_arg(ap,int);//前提是我們知道第一個參數(shù)是int型;指針指向下一個參數(shù)

printf(“value[%d]\n”,value);

va_end(ap);//將ap置為NULL

}

其實到這里大家也就不難發(fā)現(xiàn),我們?nèi)绾文鼙闅v所有的參數(shù)了,只要規(guī)定好最后一個參數(shù)為一個特殊字符,比如說-1,然后判斷到這個值就停止就行

void?fun(const?char*?fmt,…)

{

va_list ap;

va_start(ap, fmt);//將ap指向fmt后的第一個參數(shù)

int?value;

do{

value?=?va_arg(ap,int);//前提是我們知道第一個參數(shù)是int型;指針指向下一個參數(shù)

printf(“value[%d]\n”,value);

}while(value!=-1);

va_end(ap);//將ap置為NULL

}

OK,到此為止,可變參數(shù)的函數(shù)編寫應(yīng)該也就很明了啦~

總結(jié)

以上是生活随笔為你收集整理的c 语言多参数函数,C/C++实现多参数函数编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91视频亚洲 | 草在线| 色原网 | 九九精品在线观看 | 国产成人午夜精品无码区久久 | 欧美日一区二区 | 亚洲色图19p | 久久精品无码一区二区三区免费 | 1024久久| 99视频在线| 风间由美一区二区 | 99精品福利视频 | 爱福利视频一区二区 | 免费日韩 | 中日黄色片 | 国产精品久久二区 | 日本天堂在线播放 | 国产欧美久久久精品免费 | 欧美专区在线视频 | 男人的天堂2018 | 女同av网站 | 亚洲精品久久久久久久久久吃药 | 日韩女同互慰一区二区 | 色香蕉影院 | 精品在线99 | 中出一区 | 蜜桃视频黄色 | 欧美色图在线视频 | 伊人伊人鲁 | 狠狠操亚洲 | 蜜桃久久久久 | 97成人人妻一区二区三区 | 中文字幕无码毛片免费看 | 在线观看中文 | 三上悠亚在线观看一区二区 | 高清av网址 | 亚洲第一激情 | 欧美另类老妇 | 色姑娘久 | 国产情侣第一页 | 亚洲精品一级片 | 香蕉在线播放 | 30一40一50老女人毛片 | 一区二区中文字幕 | 三级av在线免费观看 | 色综合久久88色综合天天6 | 体内射精一区二区 | 亚洲一区视频 | 日韩精品在线不卡 | 亚洲欧美一区二区三区不卡 | 最近中文字幕第一页 | 日本美女黄色一级片 | 国产亚洲精品成人av在线 | 69xxx国产 | 精品人人妻人人澡人人爽牛牛 | 69色| 波多野结衣av一区二区全免费观看 | 日本午夜一区 | 一级黄色免费大片 | 麻豆久久久9性大片 | 亚洲v国产v欧美v久久久久久 | 久草免费在线观看 | 国产成a人亚洲精品 | 成人午夜精品无码区 | 少妇 av | 杨幂一区二区国产精品 | 国产又黄又粗又猛又爽的视频 | 中文字幕理伦片免费看 | 亚洲a级精品 | 亚洲欧美日韩精品久久亚洲区 | 午夜福利啪啪片 | 亚洲两性视频 | 亚洲人高潮女人毛茸茸 | 国产精品久久久久久久久久直播 | 97超碰免费 | 国产综合精品一区二区三区 | 国产精品6 | 国产噜噜噜噜噜久久久久久久久 | 人妻丰满熟妇aⅴ无码 | 91黄漫| 天天弄| 欧美一级一级 | 国产又爽又黄又嫩又猛又粗 | 国产资源网站 | 精品国产亚洲一区二区麻豆 | 日日夜夜干 | 99re这里只有精品在线观看 | 国产精品成久久久久三级 | 毛片内射久久久一区 | 91av一区 | 天天干夜夜爱 | 亚洲国内在线 | 日本福利视频导航 | 蜜桃av噜噜一区二区三区小说 | 久久久久久无码精品人妻一区二区 | 国产精品探花一区二区三区 | 少妇高潮大叫好爽喷水 | 国内成人精品视频 | 手机版av|