7

これは何を意味するのでしょうか?

void message(int x, int y, ...)

…とは何なのかわかりません。誰か説明できますか?

4

5 に答える 5

8

...va_arg、va_end、va_startを介してアクセスできる引数の変数リストを示します。

于 2010-03-03T07:35:30.120 に答える
5

パラメータの不特定/可変数。このような関数を処理するには、va_listタイプと、va_start、va_arg、およびva_end関数を使用する必要があります。

ここからの例:

  #include <stdlib.h>
        #include <stdarg.h>
        #include <stdio.h>

        int maxof(int, ...) ;
        void f(void);

        main(){
                f();
                exit(EXIT SUCCESS);
        }

        int maxof(int n args, ...){
                register int i;
                int max, a;
                va_list ap;

                va_start(ap, n args);
                max = va_arg(ap, int);
                for(i = 2; i <= n_args; i++) {
                        if((a = va_arg(ap, int)) > max)
                                max = a;
                }

                va_end(ap);
                return max;
        }

    void f(void) {
            int i = 5;
            int j[256];
            j[42] = 24;
            printf("%d\n",maxof(3, i, j[42], 0));
    }

あなたはここでより多くの詳細を見つけることができます

于 2010-03-03T07:36:32.760 に答える
3

int型の少なくとも2つの引数を取り、次に「...」で示されるいくつかのオプションの引数を取る関数メッセージをどこかに定義しました。(printfは、オプションの引数を取る別の関数です)。

オプションの引数には、 va_*関数を使用してアクセスできます。

于 2010-03-03T07:35:42.830 に答える
2

...は、配列または引数のシーケンスとして渡される最後の引数を表します。

于 2010-03-03T10:15:05.020 に答える
0

これは、可変引数の仮パラメーターです。構文上の観点から、可変数のパラメーター(xとyの少なくとも2つ、さらにはそれ以上)を渡すことができます。

于 2010-03-03T07:36:41.193 に答える