C 引數可變函式

2021-09-11 00:24:54 字數 549 閱讀 2135

前幾天突然想到,c++中有關不定引數的函式平時沒有用過,查了一下該怎麼寫,記錄下來以免以後忘記。

int sum(int count, ...)

{ int sum = 0;

va_list args;

va_start(args, count);

for (int i=0; i其中,第乙個引數count表示後面引數個數,可以理解為"..."代表的引數個數。比如sum(3, 4, 5, 6); count為3,表示後面有3個引數。count個數與後面引數個數要對應,而且後面引數個數型別需要一致。

sum函式count後面引數型別是int,所以va_arg(args, int)中第二個引數為int。

printstring函式count後面的引數型別是const char *, 所以va_arg(args, const char*)第二個引數為const char*。

呼叫方法如下:

sum(3, 1, 2, 5);

printstring(6, "aa", "v9v", "ii", "222");

C語言函式可變引數

翻apue的時候,看到了一組可變引數的巨集就是va list 類似 void print arg int count,1 va list變數 ifdef m alpha typedef struct va list else typedef char va list 這個 endif 2 intsi...

C可變引數的函式

有的時候函式的引數個數在呼叫的時候才確定,這時函式的引數為可變引數 使用可變引數時用到的幾個庫函式 void va start va list arg ptr,prev param type va arg va list arg ptr,type void va end va list arg pt...

C可變引數函式 實現

c函式要在程式中用到以下這些巨集 void va start va list arg ptr,prev param type va arg va list arg ptr,type void va end va list arg ptr va list 用來儲存巨集va start va arg和v...