この投稿では、Cでアレイのサイズを見つけるために利用できるいくつかの選択肢の概要を説明します。

1.sizeof演算子

標準的な方法は、 sizeof Cスタイルのアレイのサイズを見つける演算子。 The sizeof アレイの演算子は、アレイが占有する合計メモリをバイト単位で返します。アレイ要素の総数を決定するための秘訣は、アレイが占める合計メモリを各要素のサイズで割ることです。これは、以下のCで示されています。

ダウンロード  コードを実行する

 
簡単にし、コードの可読性を向上させるために、以下に示すように、それからMACROを構築することをお勧めします。

ダウンロード  コードを実行する

 
私たちはそれを知っています アレイはポインタに減衰します パラメータが次のように宣言されているかどうかに関係なく、引数として関数に渡された場合 int[] か否か。したがって、上記のアプローチは静的配列でのみ機能しますが、動的に割り当てられた配列では失敗します。 関数パラメータ どちらもポインタを必要とするためです。

ダウンロード  コードを実行する

2.ポインタ演算の使用

秘訣は、式を使用することです (&arr)[1] - arr アレイを取得するには arr サイズ。両方 arr&arr 同じメモリ位置を指しますが、どちらもタイプが異なります。

  1. arr タイプがあります int* アレイの最初の要素へのポインタに減衰します。したがって、アレイのサイズに関する知識はなくなります。
  2. &arr タイプのポインタになります int (*)[n]、つまり、のアレイへのポインタ n ints。そう、 &arr アレイ全体を指し、 *(&arr + 1) (また &arr)[1])アレイの次のバイトを指します。

これは、Cでのポインター演算の動作方法のために機能します。 int によって進められます sizeof(int) 1ずつインクリメントする場合。同様に、 int[n] によって進められます sizeof(int[n])、これはアレイ全体のサイズです。

ダウンロード  コードを実行する

これで、sizeof演算子とポインター演算を使用してCでアレイのサイズを見つけることができます。

 
続きを読む:

C++でアレイの長さを見つける