【解決方法】なぜ sizeof(x) / sizeof(x と書くのか[0]) C++ で配列のサイズを決定するために単に sizeof(x) を記述する代わりに


sizeof() 演算子は配列のサイズをどのように計算しますか

私が試したこと:

配列のサイズを計算するために sizeof(x) を書きましたが、期待した出力が得られませんでした。

解決策 1

sizeof パラメータによって使用されるバイト数を返します。配列の場合は、各要素のサイズに要素の数を乗算した値です。

これを試して:

C
#include <stdio.h>

int main()
{
    int arr[10];
    printf("%lu:%lu\n", sizeof(arr), sizeof(arr[0]));

    return 0;
}

そして、結果「40:4」が得られます。配列の合計は 40 バイトのメモリを使用し、配列内の 10 個の要素はそれぞれ 4 バイトを使用します。

解決策 2

小さな追加: あなたが書いた式、

C
sizeof( x ) / sizeof( x[0] )

配列内の項目数を計算するために使用されます。 これは、 _countof マクロは VisualStudio C++ で実行されます。

3 つの式とその結果を要約すると、 int x[8] :

sizeof(x)               size in bytes of x             : 32
sizeof(x[0])            size in bytes of one item of x : 4
sizeof(x)/sizeof(x[0])  number of items in x           : 8

コメント

タイトルとURLをコピーしました