C で配列のサイズを決定するにはどうすればいいですか? 質問する

C で配列のサイズを決定するにはどうすればいいですか? 質問する

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);

おすすめ記事