😸

[C] va_start 関数

に公開

機能

可変長引数リストを操作する準備をするマクロ[1]

使用例

sum=6 と表示する

\n は改行を表す エスケープシーケンス[2]

コード

int sum = add_nums(3, 1, 2, 3);  // 3つの数値を加算
printf("sum=%d\n", sum);
全文
#include <stdio.h>
#include <stdarg.h>

int add_nums(int count, ...) {
    va_list args;
    int sum = 0;
    va_start(args, count);  // 可変長引数リストの初期化
    for(int i = 0; i < count; i++) {
        sum += va_arg(args, int);
    }
    va_end(args);           // 終了処理
    return sum;
}

void main() {
    int sum = add_nums(3, 1, 2, 3);
    printf("sum=%d\n", sum);
}

実行結果

sum=6

sum=15 を変数から表示する

コード

int sum = add_nums(5, 1, 2, 3, 4, 5);
printf("sum=%d\n", sum);
全文
#include <stdio.h>
#include <stdarg.h>

int add_nums(int count, ...) {
    va_list args;
    int sum = 0;
    va_start(args, count);
    for(int i = 0; i < count; i++) {
        sum += va_arg(args, int);
    }
    va_end(args);
    return sum;
}

void main() {
    int sum = add_nums(5, 1, 2, 3, 4, 5);
    printf("sum=%d\n", sum);
}

実行結果

sum=15
脚注
  1. va_startは、可変長引数の先頭を取得するための標準マクロ。printfのような、引数の数が決まっていない関数で使う。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

Discussion