1. 程式人生 > >stdarg.h 的使用 函式可變引數

stdarg.h 的使用 函式可變引數

全稱: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; }