c語言不定參數(shù)函數(shù)怎么寫 c語言不定參數(shù)函數(shù)怎么寫出來

C語言 麻煩幫寫個(gè)不定參數(shù)函數(shù)的程序

#include "stdarg.h"

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),貴德企業(yè)網(wǎng)站建設(shè),貴德品牌網(wǎng)站建設(shè),網(wǎng)站定制,貴德網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,貴德網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

//n表示輸入?yún)?shù),總的個(gè)數(shù),后面是各個(gè)元素的值

int va_add(int n,...)

{

va_list lst;

int i;

int t = 0;

va_start(lst,n);

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

{

int c = va_arg(lst, int);

printf("%d: %d\n", c);

t += c;

}

return t;

}

int main()

{

int t = va_add(4,1,2,3,4);

printf("Sum is:%d\n", t);

getch();

return 0;

}

急!請高手指教c++如何定義一個(gè)參數(shù)個(gè)數(shù)不確定的函數(shù)?

VA_LIST是在C語言中解決變參問題的一組宏,所在頭文件:#include stdarg.h,用于獲取不確定個(gè)數(shù)的參數(shù)。

VA_LIST的用法:

首先在函數(shù)里定義一具VA_LIST型的變量,這個(gè)變量是指向參數(shù)的指針;

然后用VA_START宏初始化剛定義的VA_LIST變量;

然后用VA_ARG返回可變的參數(shù),VA_ARG的第二個(gè)參數(shù)是你要返回的參數(shù)的類型(如果函數(shù)有多個(gè)可變參數(shù)的,依次調(diào)用VA_ARG獲取各個(gè)參數(shù));

最后用VA_END宏結(jié)束可變參數(shù)的獲取。

以下是一個(gè)定義一個(gè)參數(shù)個(gè)數(shù)不確定的函數(shù)的簡單例子:

#include?cstdarg

#include?iostream

using?namespace?std;

double?average?(?int?num,?...?)

{

va_list?arguments;?????????????????????//?A?place?to?store?the?list?of?arguments

double?sum?=?0;

va_start?(?arguments,?num?);???????????//?Initializing?arguments?to?store?all?values?after?num

for?(?int?x?=?0;?x??num;?x++?)????????//?Loop?until?all?numbers?are?added

sum?+=?va_arg?(?arguments,?double?);?//?Adds?the?next?value?in?argument?list?to?sum.

va_end?(?arguments?);??????????????????//?Cleans?up?the?list

return?sum?/?num;??????????????????????//?Returns?some?number?(typecast?prevents?truncation)

}

int?main()

{

cout?average?(?3,?12.2,?22.3,?4.5?)?endl;

cout?average?(?5,?3.3,?2.2,?1.1,?5.5,?3.3?)?endl;

}

C語言怎么實(shí)現(xiàn)函數(shù)不定參數(shù)

C語言中定義了va_list, va_start( ), va_arg( ), va_end( ) 這樣一組宏來處理可變參數(shù)問題。

可以參考printf的聲明,創(chuàng)建自己的實(shí)現(xiàn)函數(shù)。示例:

#includestdio.h

#includestdarg.h

void?va_fun(int?start,...)

{

va_list?arg_ptr;

int?nArgValue?=?start;

int?nArgCount?=?1;

va_start(arg_ptr,start);

while(nArgValue?!=?-1)

{

printf("arg?%d?is:%d/n",nArgCount,nArgValue);

nArgValue=va_arg(arg_ptr,int);

++nArgCount;?

}

return;?

}

main()

{

va_fun(5,1,7,-1);

printf("................/n");

va_fun(2,4,-1);

printf("................/n");

va_fun(-1);

printf("................/n");

//va_fun();?可變參數(shù)函數(shù)最少要有一個(gè)參數(shù)。

}

C語言,不定參數(shù)的函數(shù)指針問題

很巧我現(xiàn)在正好也有實(shí)現(xiàn)這樣函數(shù)的需求,其實(shí)就是看了C語言可變參數(shù)函數(shù)的相關(guān)資料,你就差不多知道怎么實(shí)現(xiàn)了。

只不過其中有一個(gè)很重要的大坑,只要邁過去就沒問題。我是試了半天才明白的:

如果參數(shù)是char或float類型,這樣的參數(shù)放在可變參數(shù)部分的話,編譯器是會(huì)默認(rèn)把它們的類型提升為相應(yīng)的“全”類型的:char提升為int,float提升為double。如果你沒注意這一點(diǎn)就會(huì)出現(xiàn)錯(cuò)誤。當(dāng)然可以通過指針的類型轉(zhuǎn)換來避免。

先簡略地點(diǎn)一下,等我在CSDN博客里詳細(xì)地寫一寫心得吧。雖然是N年前的問題估計(jì)樓主早就自己解決了,但希望能幫到其他人:)

網(wǎng)頁標(biāo)題:c語言不定參數(shù)函數(shù)怎么寫 c語言不定參數(shù)函數(shù)怎么寫出來
網(wǎng)站鏈接:http://muchs.cn/article36/ddiejpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)公司、響應(yīng)式網(wǎng)站、做網(wǎng)站標(biāo)簽優(yōu)化、網(wǎng)站維護(hù)

廣告

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

微信小程序開發(fā)