C で配列のサイズをどのように決定しますか?
つまり、配列が保持できる要素の数はいくつですか?
ベストアンサー1
エグゼクティブサマリー:
int a[17];
size_t n = sizeof(a)/sizeof(a[0]);
完全な回答:
配列のサイズをバイト単位で確認するには、次のsizeof
演算子を使用します。
int a[17];
size_t n = sizeof(a);
私のコンピュータでは、int は 4 バイトの長さなので、n は 68 です。
配列内の要素数を決定するには、配列の合計サイズを配列要素のサイズで割ります。次のように、型を使用してこれを行うことができます。
int a[17];
size_t n = sizeof(a) / sizeof(int);
正しい答え (68 / 4 = 17) が得られますが、 のタイプが変更された場合、もa
変更し忘れると厄介なバグが発生します。sizeof(int)
したがって、推奨される除数はsizeof(a[0])
またはそれと同等でsizeof(*a)
、配列の最初の要素のサイズになります。
int a[17];
size_t n = sizeof(a) / sizeof(a[0]);
もう 1 つの利点は、マクロ内で配列名を簡単にパラメーター化して、次の結果を取得できることです。
#define NELEMS(x) (sizeof(x) / sizeof((x)[0]))
int a[17];
size_t n = NELEMS(a);