C 筆記 可變引數函式

2021-10-03 08:38:07 字數 437 閱讀 9569

在c++中有時需要使用引數數目未知的函式,如輸出日誌等場景。

這時需要用到頭檔案

#include
需要用到以下型別和方法

va_list

typedef char * va_list; //可變引數列表

va_start(ap,v) //獲取可變引數列表的第乙個引數位址,ap是型別va_list的指標,v是可變引數最左邊的引數

va_arg

va_arg(ap,t) // 獲取可變引數的當前引數,返回指定型別並將指標指向下一引數(t引數描述了當前引數的型別)

va_end

va_end(ap) 清空va_list可變引數列表

vasprintf:傳送格式化輸出到串列埠,返回生成字串的長度(除去\0),錯誤情況返回負值

C 筆記之 函式可變引數

其實函式的引數的可變是因為不確定函式的引數大小的原因才使用的。看下面乙個列子 static void newpamars string i,params string values 這就是乙個簡單的可變引數的宣告。再這裡params是指定引數可變的關鍵字,應該注意的是可變引數必須是引數中的最後乙個,...

C 引數可變函式

前幾天突然想到,c 中有關不定引數的函式平時沒有用過,查了一下該怎麼寫,記錄下來以免以後忘記。int sum int count,int sum 0 va list args va start args,count for int i 0 i其中,第乙個引數count表示後面引數個數,可以理解為 代...

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...