(C語言)可變引數列表

2022-09-23 13:03:08 字數 956 閱讀 5433

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和va_end所需資訊的一種型別。為了訪問變長引數列表中的引數,必須宣告

va_list型別的乙個物件 定義: typedef char * va_list;

va_start:訪問變長引數列表中的引數之前使用的巨集,它初始化用va_list宣告的物件,初始化結果供巨集va_arg和

va_end使用;

va_arg: 展開成乙個表示式的巨集,該表示式具有變長引數列表中下乙個引數的值和型別。每次呼叫va_arg都會修改

用va_list宣告的物件,從而使該物件指向引數列表中的下乙個引數;

va_end:該巨集使程式能夠從變長引數列表用巨集va_start引用的函式中正常返回。

va在這裡是variable-argument(可變引數)的意思.

這些巨集定義在stdarg.h中,所以用到可變引數的程式應該包含這個標頭檔案.下面我們寫乙個簡單的可變引數的函式,改函式至少有乙個整數引數,第二個引數也是整數,是可選的.函式只是列印這兩個引數的值.

問題描述:

運用可變引數列表的方式求n個整形數中的最大值,並且輸出。

**如下:

/********可變引數列表*********/

#include

#include

/* ansi標準形式的宣告方式,括號內的省略號表示可選引數 */

int max(int n,...) /*求n個數的最大值*/

} va_end(arg); /*結束可變引數的獲取*/

return max;

}int main()

C語言可變引數列表

c語言中類似於printf這種型別的函式,在呼叫它們時我們傳入的引數的型別和數量都不是固定的,這就需要可變引數列表,要使用可變引數列表,要用到以下幾種巨集。include void va start va list ap,last type va arg va list ap,type void v...

C語言可變引數列表 1

嘗試使用c語言可變引數列表 對於一些函式有的時候,我們不希望它只能傳遞固定引數,例如如果我們想計算2個整數數之和寫乙個int sum int int 的函式,但是如果想計算3個數之和呢?n個數之和呢?不可能去定義無限多個函式,也不能讓函式的引數太多,形如int sum int int int int...

C語言細節 可變引數列表

使用示例 標頭檔案引用 為了使用可變引數列表,你需要新增標準庫中的 stdarg.h 標頭檔案中定義的乙個型別和三個巨集 va listtypedef char va list va variable argument va start define va start ap,lastarg ap c...