腕時計の沼、オーディオの沼、PCの沼。『タクジの沼』
プログラムで計算に使う値を保持しておくには、変数を使います。 変数とは、メモリ上で値を記憶する領域に付けた名前。 C言語では、メモリ上に領域を確保するには変数の宣言という作業が必要です。
データ型 変数名;
配列とは、同じ種類のデータを複数まとめて扱うことのできる変数です。
データ型 配列名[個数];
※変数と配列の一番の違いは、配列は[]の中に記述した個数分のデータを同じ名前で扱うことができます。
int dat[5]; ↓ dat[0] dat[1] dat[2] dat[3] dat[4] []を添え字演算子、[]の中に記述した数値をインデックスまたは添え字と呼びます
for文のカウンタと組み合わせて使用すると、効率よくすべての要素にアクセスすることができます。 カウンタの初期値を0、カウンタの増分を1にすると、処理を実行するたびにカウンタは0→1→2→3→4のように変化します。
カウンタ < 要素数
[例]
for ( i = 0; i < 100; i++ )
変数や配列を宣言すると、メモリ上のどこかに値を保持するための領域が確保されます。
このアドレスは &変数名 で調べることができます。
※配列はメモリ上に連続して確保されます。
確保した領域の大きさはsizeof演算子で調べることができます。
データ型 配列名[] = { 値1, 値2, 値3, … }; 配列に代入する初期値は{}で囲む。値の区切りはカンマ(,)
宣言した要素数よりも初期値が多いとエラーとなります。 逆に少ないと、足りない部分に0が代入されます。 要素数が初期値の数よりも優先されます。
for文を配列のインデックスに使うと、すべての要素にアクセスすることができます。
for ( i = 0; i < 配列の要素数; i++ ){ 配列[i]の処理; }
表形式のデータをそのまま扱うことのできる配列のことを指します。 配列がさらに縦方向に並んだものです。
int dat[5][4]; /* dat[行のインデックス][列のインデックス] */
※要素数が4個の配列を5つ用意するという考え方
二次元配列でのメリット
int dat[2][3] = { { 値00, 値01, 値02 }, { 値10, 値11, 値12 } }; 要素数が3個の配列を2つ用意
※初期値を代入するときに行数と列数を省略するとエラーになります。
[例]
int dat[][] = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
二次元配列は要素数(列数)がn個の配列をx行文確保したもの。 行数を省略した場合、列数と代入する初期値の数から自動的に行数を判断します。
[例] int dat[][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10} }; 列数が5個、初期値の数が10なので、2行*5列の二次元配列
まとめると以下の通りです。
すべての要素にアクセスするには、二重の繰り返し構造を利用します。 外側の繰り返しは、行方向のループで内側の繰り返しは列方向のループになります。
for ( i = 0; i < 行数; i++ ){ for ( j = 0; j < 列数; j++ ){ 配列[i][j]に対する処理; } } ※改行コードを、列方向のループをすべて終了した後に出力