STEP 4 - 配列 │ ├ 配列の宣言 ├ 配列要素の参照 ├ 配列の注意 ├ 多次元配列 └ 配列の初期化 ├ 一次元配列の初期化 └ 二次元配列の初期化 |
Written by Yuki. http://ftc.suki.net/ |
<配列の宣言> 型が同じで、共通の名前によって参照される変数の並びのこと。 型宣言子 配列名[要素数]; nt u[5]; ' VBのような最大値ではなく、要素の個数を書く。 ↑要素5の配列 ' つまり、VBの記述 +1の数字を書く事になる。 char ch[100]; ' 例えばこの場合、0〜99番までのキャラ型配列になる。
<配列要素の参照> []内の添え字により、参照する要素を指定する。 2番目の要素に数値を代入する。 u[1]=100; ' 宣言時以外は要素の番号で指定する。この場合、2番目に100を代入。 printf("%d\n",u[1]); ' 2番目の要素を表示。
<配列の注意> (1)配列の添え字は整数型の定数・変数であること。 int a[10]; i=3; a[i]=10; ' a[3]に 10を代入。 char ch=4; a[ch]=20; ' a[4]に 20を代入。 ※float等は使えない。必要な時は型キャストする。 (2)添え字は宣言した要素の範囲内であること。 int a[5]; ' a[0]〜a[4]を宣言。 a[10]=10; ' 添え字が範囲外。 a[-1]=-10; ' 添え字が負数。 ※範囲内かどうかチェックされない場合があるので、ループ等で添え字を操作する時は注意が必要。 (チェックされなかった場合、実行時に不正な処理で強制終了になり易い)
<多次元配列> 要素数の指定が複数ある配列。 型指定子 配列名[行要素数][列要素数]; int a[3][4]; ' 3×4の二次元配列 char ch[5][10]; ' 基本的には、5行×10文字。文字を扱う時に重要。 ※要素を追加して行く事によって、より多くの次元を持つ配列を宣言できるが、 その分、考え方が複雑になる。また、メモリを加速度的に大量消費してしまう。
<配列の初期化> (1)一次元配列の初期化 型指定子 配列名[要素数]={定数式1,定数式2,…}; ' 初期化する定数を中括弧で囲む。 ※一つ一つの定数はカンマで区切り、対応するそれぞれの要素を初期化する。 一次元配列を初期化するケースでは、配列の要素数を省略することができる。 int a[]={1,2,4,8,16,32,64,128}; ↑8が自動的に入る。 ※コンパイル時に初期化する定数の個数を数え、配列の要素数として扱う。 こうすると初期化する定数の個数を変更しやすくなり、 さらに初期化する定数の個数を数え間違える事を回避できる。 ・要素数と初期化定数の個数が異なる場合 初期化定数が多い場合 int a[3]={0,1,2,3,4}; ' 「初期化子の数が多多すぎます」となりエラーが出る。 初期化定数が少ない場合 int a[8]={0,1,2,3,4}; ' a[0]〜a[7]が用意され、足りない部分には'0'が入る。 ' この場合は、a[0,1,2,3,4,0,0,0]となる。 (2)二次元配列の初期化 型指定子 配列名[行要素数][列要素数]={ ' 全体を中括弧で括る。 {定数00,定数01,…定数0n}, ' 行毎に列要素を初期化。 {定数10,定数11,…定数1n}, {定数m0,定数m1,…定数mn} }; ' 全体を括る中括弧。この配列は a[m][n]である。 ※二次元配列を初期化する時、要素数を省略できる(但し行要素のみ)。 int a[][4]={ ' コンパイル時に、初期化子の数と列要素数から {0,1,2,3}, ' 行要素数を割り出す。この場合は a[3][4]になる。 {4,5,6,7}, {8,9,10,11} }; ※行要素を囲む中括弧は省略可能。二次元配列を初期化する時は、 行要素毎に改行して、視覚的に分かり易く記述する。
← ← Back to BeforeStep | Go to NextStep → → |