😸
[C] va_arg 関数
機能
可変長引数リストから、指定した型の値を1つ取得するマクロ[1]
使用例
3 7 12
と表示する
\n
は改行を表す エスケープシーケンス[2]
コード
#include <stdio.h>
#include <stdarg.h>
void print_args(int n, ...) {
va_list args;
va_start(args, n);
for (int i = 0; i < n; i++) {
int value = va_arg(args, int);
printf("%d ", value);
}
va_end(args);
printf("\n");
}
print_args(3, 3, 7, 12);
全文
#include <stdio.h>
#include <stdarg.h>
void print_args(int n, ...) {
va_list args;
va_start(args, n);
for (int i = 0; i < n; i++) {
int value = va_arg(args, int);
printf("%d ", value);
}
va_end(args);
printf("\n");
}
void main() {
print_args(3, 3, 7, 12);
}
実行結果
3 7 12
A B C
を変数から表示する
コード
#include <stdio.h>
#include <stdarg.h>
void print_chars(int n, ...) {
va_list args;
va_start(args, n);
for (int i = 0; i < n; i++) {
char c = (char)va_arg(args, int);
printf("%c ", c);
}
va_end(args);
printf("\n");
}
print_chars(3, 'A', 'B', 'C');
全文
#include <stdio.h>
#include <stdarg.h>
void print_chars(int n, ...) {
va_list args;
va_start(args, n);
for (int i = 0; i < n; i++) {
char c = (char)va_arg(args, int);
printf("%c ", c);
}
va_end(args);
printf("\n");
}
void main() {
print_chars(3, 'A', 'B', 'C');
}
実行結果
A B C
Discussion