2

配列を値でC++関数に渡すことは可能ですか?

もしそうなら、どうすればいいですか?

4

4 に答える 4

6

配列とは生の配列を意味する場合、答えは「いいえ」です。CまたはC++のいずれかで値を渡すことはできません。

どちらの言語も回避策を提供しており、structその配列をラップしてそのオブジェクトを渡すことができます。例:

struct MyArray { int a[100]; };
...
struct MyArray obj; // `obj.a[]` is the array of your interest
foo(obj);  // you have passed the `a[]` by value

C ++では、このような構造体はstd::vectorとの形式ですぐに利用できますstd::array

于 2013-03-12T11:27:54.517 に答える
4

絶対:

void foo(std::array<int, 42> x);
于 2013-03-12T11:20:18.040 に答える
0

通常、配列を関数に渡すと、配列は に減衰しpointerます。配列の (開始) アドレスを暗黙的に関数に渡します。したがって、実際には配列を値で渡すことはできません。va_args内容を値渡ししたい場合は使ってみませんか?

于 2013-03-12T11:21:09.280 に答える
0

はい、できます。引数としてポインタを使用して実装できますが、関数本体では、copy mothord (正確な名前は思い出せません) を使用してコピーできます。

于 2013-03-12T11:24:20.630 に答える