C庫巨集void va_start(va_list ap, last_arg) 初始化ap 就根據 va_arg 和 va_end 巨集用的變數。last_arg 是最後一個已知的固定引數被傳遞給函式,即該引數前省略號。
這個巨集之前,必須呼叫使用 va_arg 和 va_end。
以下是宣告的va_start()巨集。
void va_start(va_list ap, last_arg);
ap -- 這是va_list的物件,將持有va_arg的額外的引數來檢索所需的資訊。
last_arg -- 這是最後一個已知的固定引數傳遞給函式。
NA
下面的例子顯示的va_start()巨集的用法。
#include<stdarg.h> #include<stdio.h> int sum(int, ...); int main(void) { printf("Sum of 10, 20 and 30 = %d ", sum(3, 10, 20, 30) ); printf("Sum of 4, 20, 25 and 30 = %d ", sum(4, 4, 20, 25, 30) ); return 0; } int sum(int num_args, ...) { int val = 0; va_list ap; int i; va_start(ap, num_args); for(i = 0; i < num_args; i++) { val += va_arg(ap, int); } va_end(ap); return val; }
讓我們編譯和執行上面的程式,這將產生以下結果:
Sum of 10, 20 and 30 = 60 Sum of 4, 20, 25 and 30 = 79