stdarg.h 的使用 函式可變引數
阿新 • • 發佈:2018-11-08
全稱:standard arguments
成員: va_list :用來定義va變數,如va_list va。
va_start():使用方法:va_start(va,n) 其中va為va_list 定義的變數,n為引數個數。
va_arg() :使用方法:va_arg(va,type) 其中va為va_list 定義的變數,type為引數的型別,如int char等。
va_end() :使用方法:在後面用va_end(va)來釋放空間。
例子:
#include<stdio.h>
#include<stdarg.h>
int sum0(int n, ...); //功能:求和。 n表示總共有幾個引數
int sum0(int n, ...)
{
int i, sum = 0;
va_list va; //va_list實際是定義一個字元指標
// printf("sizeof va: %d\n",sizeof(va)) ;
va_start(va, n);
// printf("%d\n",va_arg(va,int)); //理解原理用的,對結果無影響。
// printf("%d\n",va_arg(va,int)); //結論:va_arg()每呼叫一次,就會把返回的值指向下一個引數。
for (i = 0; i < n; i++)
{
sum += va_arg(va, int);
// printf("%p\n",va); //這兩行是理解原理時弄的,對結果無影響。
// printf("%d\n",sizeof(va));
}
va_end(va);
return sum;
}
int main()
{
int sum;
sum = sum0(5, 10, 2, 3, 4, 5);
printf("sum = %d\n",sum);
sum = sum0 (4, -10, 3, 3, 5);
printf("sum = %d\n",sum);
return 0;
}