で裸の配列を渡すことによって意味する何を、私は次のように宣言された関数に遭遇しました:いくつかの古いコードはC++
void f(int (&a)[5]);
私は、アレイが「裸」であると言われてきました。どういう意味ですか?手段int(&a)[5]
で裸の配列を渡すことによって意味する何を、私は次のように宣言された関数に遭遇しました:いくつかの古いコードはC++
void f(int (&a)[5]);
私は、アレイが「裸」であると言われてきました。どういう意味ですか?手段int(&a)[5]
タイプint (&a)[5]
は、「の配列への参照(名前はa
)」を意味します。この型を使用すると、関数の配列を最初の要素へのポインタに壊さずに配列に渡すことができます。
関数パラメータとしてintへのポインタの代わりに5-intの参照を使用すると、情報を失うことなく配列を渡すことができます。 std::begin(a)
とstd::end(a)
のようなものは、配列への参照では動作しますが、intへのポインタでは動作しません。一方、動的に割り当てられた配列を持つ配列への参照を使用することは不可能です。
void f(int (&a)[5]);
は真にサイズ5
の配列への参照であり、他のサイズの配列を渡すことはできません。