C配列


C 言語は、同じ型の要素の固定サイズの連続コレクションを格納できる array データ構造をサポートしています。配列は一連のデータを格納するために使用されますが、多くの場合、同じ型の一連の変数と考えられます。

配列の宣言は、number0、number1、...、number99 などの個別の変数を宣言するのではなく、数値などの配列変数を宣言し、numbers[0]、numbers[1]、 ... 、個々の変数を表す数値[99]。配列内の特定の要素には、インデックスを介してアクセスできます。

すべての配列は連続したメモリ位置で構成されます。最も低いアドレスは最初の要素に対応し、最も高いアドレスは最後の要素に対応します。

1050.jpg

配列の宣言

C で配列を宣言するには、以下に示すように要素の型と要素の数を指定する必要があります:

type arrayName [ arraySize ];

これは 1 次元配列と呼ばれます。 arraySize はゼロより大きい整定数である必要があります。type は有効な C データ型であればどれでも構いません。たとえば、10 個の要素を含む double 型の配列 balance を宣言するには、宣言ステートメントは次のようになります。

double balance[10];

これで、balance は double 型の数値を 10 個保持できる使用可能な配列になります。

配列の初期化

C では、配列を 1 つずつ初期化することも、次のように初期化ステートメントを使用することもできます:

double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};

中括弧 { } の間の値の数は、次の数を超えることはできません。配列宣言時に角括弧内に入れる中括弧 { } 間の値 [ ] で指定した要素の数。

配列のサイズを省略した場合、配列のサイズは初期化時の要素数になります。したがって、次の場合:

double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};

前のインスタンスで作成したものとまったく同じ配列を作成します。以下は、配列内の要素に値を割り当てる例です。

balance[4] = 50.0;

上記のステートメントは、配列内の 5 番目の要素の値を 50.0 に割り当てます。すべての配列には、最初の要素 (ベース インデックスとも呼ばれる) として 0 のインデックスが付けられ、配列の最後のインデックスは、配列の合計サイズから 1 を引いたものになります。以下は、上で説明した配列のグラフィック表現です。

1051.jpg

配列要素へのアクセス

配列要素には、配列名とインデックスによってアクセスできます。要素のインデックスは、配列名の後に角括弧で囲まれています。例:

double salary = balance[9];

上記のステートメントは、配列の 10 番目の要素の値を給与変数に割り当てます。次の例では、上記の 3 つの概念、つまり配列宣言、配列代入、配列アクセスを使用しています:

#include <stdio.h> int main (){   int n[ 10 ]; /* n 是一个包含 10 个整数的数组 */   int i,j; 
   /* 初始化数组元素 */         
   for ( i = 0; i < 10; i++ )   {
      n[ i ] = i + 100; /* 设置元素 i 为 i + 100 */   }   
   /* 输出数组中每个元素的值 */   for (j = 0; j < 10; j++ )   {
      printf("Element[%d] = %d\n", j, n[j] );   } 
   return 0;}

上記のコードをコンパイルして実行すると、次の結果が生成されます:

Element[0] = 100Element[1] = 101Element[2] = 102Element[3] = 103Element[4] = 104Element[5] = 105Element[6] = 106Element[7] = 107Element[8] = 108Element[9] = 109

C での配列の詳細な説明

C では配列は非常に重要なので、配列についてさらに詳しく知る必要があります。以下に、C プログラマーが知っておく必要がある配列に関連する重要な概念をいくつか示します。

概念 説明
多次元配列 C は多次元配列をサポートします。多次元配列の最も単純な形式は 2 次元配列です。
関数に配列を渡す インデックスなしで配列名を指定することで、配列へのポインターを関数に渡すことができます。
関数から配列を返すC では、関数から配列を返すことができます。
配列へのポインタインデックスなしで配列名を指定することで、配列の最初の要素へのポインタを生成できます。