1

C では、次のような可変引数関数を使用できます。

void abc(int x, .. )
{
}

そして、次のような可変数の引数でそれらを呼び出すことができます:

abc(1,2,3) or abc(1,2,3,4,5)

ただし、上記の関数呼び出しの両方で、abc既知のパラメーターを使用して可変引数関数を呼び出しました。前者は「1, 2, 3」、後者は「1, 2, 3, 4, 5」です。

私の質問は:

実行時にユーザーが入力した可変数の引数で可変引数関数を呼び出す方法はありますか?

たとえば、 ではmain()、ユーザーに特定の数の入力を入力してから、パラメーター p1、p2、p3 などを使用してそれらの入力を可変引数関数に渡すように求めています...

4

5 に答える 5

0

いいえ、これは不可能です。
コンパイラは、コンパイル中に適切なコードを生成し、識別子用のスペースを予約する必要があります。静的バイナリ ファイルを変更しようとしますが、これは不可能です。これが実際にva_args存在する理由であり、未知の量のパラメーターを渡すことができます。

于 2013-04-04T08:17:11.753 に答える