ポインタの配列を利用することで長さの異なる配列を管理することができる. 2 次元配列を使った場合との相違点を理解せよ.
教科書の手順に従い,トップダウンにプログラムを設計する. 第3タスク分解まで理解したらリスト 7.14 を入力し,実行せよ. 疑似コードとプログラムの対応を確認せよ.多次元配列では第一添字 以外の添字サイズは指定する必要がある(p. 217参照)ことに注意. 以下の初期化で 2 次元配列 deck の要素は全て 0 で初期化される. 配列要素数より少ない値で初期化した場合,残りが 0 で初期化される (p.188 参照)ことを利用している.乱数の使い方は p.143 5.9 節 を参照.
プログラム部分 1
int deck[4][13] = {0};
データ同様,プログラムの実行コードもメモリ中に格納される. 配列名が配列が格納されているメモリ位置の先頭アドレスであるのと同様に, 関数名は関数の実行コードが格納されるメモリ位置の先頭アドレスである. 関数へのポインタを逆参照するには '*' 演算子を使用する.優先順位に注意せよ. 例えば関数へのポインタが compare 変数に格納されている場合,その関数を使う場合は 必ず括弧を付けて (*compare) と書くことを推奨する.
リスト 7.9 のプログラムが降順にデータをソートするように bubbleSort 関数を書き直せ.
関数へのポインタは配列に関数へのポインタを格納し,呼び出される関数を切り替える ときによく利用される.そのサンプルプログラムであるリスト 7.18 を入力し, 実行せよ.
第 2 回課題「ポインタ/オフセット表記」 を提出せよ.