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