0

sizeof() について疑問があります。配列で使用されるバイト数がわかります。私の質問は、配列が定義されていないが宣言されている場合はどうなるかです。

例:

float array[3];
int p = sizeof(array);
4

3 に答える 3

5

によって生成される値はsizeof、実行時に発生するものではなく、型のみに依存します1

つまり、名前にもかかわらず、初期値が 3 の単一のfloat array(3);float を定義するだけなので、と同等です。int p=sizeof(array);int p = sizeof(float);

編集:(編集された質問に対応するため):はい、float array[3];3つの浮動小数点数の配列を定義するため、int p = sizeof(array);と同等ですint p = 3 * sizeof(float);


1 C++ の場合。C99 の時点で、C の状況は多少異なります (ただし、当面の問題とは無関係です)。

于 2012-08-27T18:59:22.443 に答える
1

sizeof() は配列で使用されるバイト数を提供しません。定義が不完全で部分的に正しくありません。

http://en.cppreference.com/w/cpp/language/sizeof言います:

「sizeof( type) -- 型のオブジェクト表現のサイズをバイト単位で返します」

また、float array[3] は、他の人が指摘したように、3 つの要素を持つ float の配列を宣言する正しい方法です。

最後に、 sizeof( array) は 12 を返しますが、 sizeof( array) は 4 つの要素で宣言した場合は 16 を返し、 sizeof( array) は float の代わりに 5 つの double の配列を宣言した場合は 40 を返します。システム。もちろん、データ型に使用されるバイト数はシステムごとに異なる場合があります。

于 2012-08-27T19:09:14.977 に答える
1

このコードを使用する場合、浮動小数点数の配列を宣言していません

 float array(3);

値が 3 の arrayというfloat 変数を単純に作成しました。この変数で sizeof を呼び出すと、float のサイズが返されます。ちゃんと宣言してたのか

float float_array[3];

と呼ばれるとsizeof(float_array)、期待する値が得られます-3*sizeof(float)

于 2012-08-27T19:03:21.580 に答える