主要涉及函數
va_list ap 聲明一個指針
va_start(ap,arg) 將ap指向到最後一個確定的參數arg
va_arg(ap,size) 將ap儲存的地址加size,指向下一個參數
va_end(ap) 將ap賦值為NULL
#include
#include
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); //將指針ap指向最後一個確定的參數
for(i = 0; i < num_args; i++)
{
val += va_arg(ap, int); //va_arg(),將指針ap指向可變參數的首地址
}
va_end(ap); //將指針ap賦值為NULL
return val;
}
運行結果:
10、20 和 30 的和 = 60
4、20、25 和 30 的和 = 79