C-standard-library-c-macro-va-start
提供:Dev Guides
Cライブラリマクロ-va_start()
説明
Cライブラリマクロ* void va_start(va_list ap、last_arg)は、 *va_arg および va_end マクロで使用される ap 変数を初期化します。 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\n", sum(3, 10, 20, 30) );
printf("Sum of 4, 20, 25 and 30 = %d\n", 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