真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言可變參數(shù)函數(shù)教學 c語言可變參數(shù)用法

如何在C語言中定義參數(shù)數(shù)目可變的函數(shù)

定義如下:

創(chuàng)新互聯(lián)公司主營鄠邑網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app開發(fā)定制,鄠邑h5微信小程序搭建,鄠邑網(wǎng)站營銷推廣歡迎鄠邑等地區(qū)企業(yè)咨詢

函數(shù)返回值 函數(shù)名(形參1, 形參2, ...)

舉例說明:

int??func(int?a,?int?b,?...)

{

//函數(shù)體

......

}

printf()函數(shù)就是一個參數(shù)可變的函數(shù),其函數(shù)原型為:

int?printf?(const?char?*__format,?...);

C語言中如何實現(xiàn)可變參函數(shù)

C語言中可變參函數(shù)實現(xiàn),主要通過VA_LIST宏及相關(guān)操作的幾個宏。

一、涉及宏及說明:

所有相關(guān)宏均定義在stdarg.h中。

1、va_list: 可變參數(shù)列表指針。

2、va_start:獲取可變參數(shù)列表的第一個參數(shù)的地址。

3、va_arg:獲取可變參數(shù)的當前參數(shù),返回指定類型并將指針指向下一參數(shù)。

4、va_end:清空va_list可變參數(shù)列表。

可變參函數(shù)的實現(xiàn),就是這四個宏的使用。

二、代碼舉例:

在實際應用中,經(jīng)常有獲取若干個數(shù)最大值的情況,當數(shù)量比較大的時候,一般通過數(shù)組實現(xiàn),但個數(shù)不多時,一般寫一個max函數(shù)。 常規(guī)寫法都是用到幾個數(shù)的max,就寫幾個參數(shù), 對此可以實現(xiàn)一個可變參數(shù)函數(shù),第一個參數(shù)指定共計有多少數(shù)據(jù),后續(xù)各個參數(shù)為要比較的值。

#include?stdio.h

#include?stdarg.h

int?max(int?n,?...)//可變參數(shù)函數(shù)。

{

int?r,i;

va_list?ap;//定義可變參數(shù)。

if(n?==?0)?return?-1;//異常參數(shù)。

va_start(ap,?n);//得到起始點。

for(i?=?0;?i??n;?i?++)

{

int?v=va_arg(ap,int)?;//獲取下一個參數(shù)值。

if(i?==?0)?r=v;

else?if(rv)?r=v;

}

va_end(ap);//結(jié)束可變參數(shù)。

return?r;//返回結(jié)果。

}

可以用如下主函數(shù)測試:

int?main()

{

printf("%d\n",max(1,?1));

printf("%d\n",max(2,?2,1));

printf("%d\n",max(3,?5,9,?4));

printf("%d\n",max(4,?8?,?3,1,9));

return?0;

}

分別測試了1,2,3,4個數(shù)值,求取最大值的情況。?

測試結(jié)果:

1

2

9

9

c語言 怎么寫 可變 參數(shù)函數(shù)

#include?stdarg.h??????????//可變參數(shù)函數(shù)必要的頭文件

#include?stdio.h

long?int?sum(unsigned?int?argc,...)????//可變參數(shù)函數(shù)必須包含至少一個確定的參數(shù)

{

long?int?srt=0;

int?va;

unsigned?int?i;

va_list?vl;????????????????????????//用于指向可變參數(shù)列表

va_start(vl,argc);?????????????????//初始化,va_start()調(diào)用的第一個參數(shù)是所編寫的可變參數(shù)函數(shù)的最后一個確定的參數(shù)

for?(i?=?0;?iargc;?i++)?{

srt+=(int)va_arg(vl,int);??????//從參數(shù)列表按提取一個int類型的值參與相加運算

}

va_end(vl);????????????????????????//清理

return?srt;

}

int?main(int?argc,?char*?argv[])

{

printf("%ld\n",sum(3,1,2,3));

return?0;

}


網(wǎng)站題目:c語言可變參數(shù)函數(shù)教學 c語言可變參數(shù)用法
文章位置:http://weahome.cn/article/doehjoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部