1. ホーム
  2. c

[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?

2022-03-20 06:28:09

質問

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

つまり、配列が保持できる要素数?

どのように解決するのですか?

エグゼクティブサマリー

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

もう一つの利点は、簡単にパラメータ化できるようになったことです。 という配列名をマクロで取得します。

#define NELEMS(x)  (sizeof(x) / sizeof((x)[0]))

int a[17];
size_t n = NELEMS(a);