-5

関数で事前定義されていない配列をオペランドとして渡すための構文は何ですか?

たとえば、次の関数があります。

void kilos(int percentage[2], char liquid[2][4]);

したがって、2 つの異なる配列を作成し、それらをオペランドとして渡すと、すべてが適切に機能します。関数の呼び出しの前に配列を作成したくない場合、これはどのように機能しますか? オペランドを分析し、配列を使用しない唯一の解決策はありますか?

関数を呼び出したいのですが、次のような関数を呼び出すときに配列を作成したいです。

kilos(int percent[2]={40,60}, char liq[2][4]={'wate','milk'})
4

3 に答える 3

1

C++ では、C++11 対応のコンパイラがあり、生の配列の代わりに使用する場合、初期化リストstd::vectorを使用できます。

 void kilos(const std::vector<int> percentage,
            const std::vector<std::string> liquid);

// ...

kilos({40, 60}, {"water", "milk"});
于 2013-03-20T13:15:21.540 に答える
0

次のように関数を呼び出す必要があります。

kilos((int[2]){40,60}, (char[2][4]){"wate", "milk"});

文字列リテラルを囲む二重引用符に注意してください。char[2][5]そして、null ターミネータを許可するには、おそらく 2 番目の配列が必要です。

于 2013-03-20T13:22:16.470 に答える
0

関数へのポインターを渡すことは、配列を渡すことと同じです。ポインターは、静的に割り当てられたバッファーまたは動的メモリー (new []または などmalloc) を指すことができます。

于 2013-03-20T12:48:17.767 に答える