1

関数で渡された配列 'X' の長さを使用する必要があります。配列はメイン関数で作成されます。メイン関数から次を出力します。

std::cout << "\n" << sizeof(X);

利回り:400

配列 'X' は、X の長さが必要な関数に渡されます。関数から次を出力します。

std::cout << "\n" << sizeof(X);

結果: 8

私の配列には 100 個の float 要素があるため、400 を期待しています。sizeof() がメイン関数で呼び出されたときと同じサイズを返さないのはなぜですか? (プログラムの残りの部分は機能するため、配列 X には実際には 100 個の要素があることを保証します。)

助けてくれてありがとう!

4

3 に答える 3

2

C 配列は、暗黙的にポインターに縮小できます。sizeof正しく動作させるには、次のことを行う必要があります。

template<size_t N>
void func(char (&arr)[N])
{
/* sizeof(arr) == N in this scope */
}

または、 C++11 を使用できますstd::array

于 2013-11-10T17:17:16.263 に答える