input, output
フォーマット付き入出力

9 章

9.8

フィールド幅は % と変換指定子の間に書く.リスト 9.5 とその出力を見比べて 理解せよ.

表示する制度を指定することもできる.これにより表示が変わっても, プログラム内で扱われている数値が変わるわけではないことに注意せよ.

アスタリスク(*)を用いることで,フィールド幅,制度を可変にできる.

9.9

printf 関数のフォーマットで使えるフラグを説明する.

9.10

エスケープシーケンスの出力法を説明する.

9.11

scanf の入力フォーマットを説明する.ほとんど printf の場合の説明 で理解できるが異なるポイントに注意せよ.

10章

構造体,共用体,ビット操作,列挙体について説明する.

10.1

構造体は配列と異なり,違った方のデータをまとめて記憶することができる.

10.2

自分と同じ構造体へのポインタをメンバとして含むことができる.そのような構造体を 自己参照構造体とよぶ.連結リスト(→12章) などで利用する.

構造体変数は他の型の変数と同じように宣言し,使用する.

構造体を定義するときに 変数を宣言することもできる. この記法のときは構造体タグを省略して変数だけ使うことができるが,省略は 行わないほうが良い.

構造体に対して行ってもよい操作は,

だけである.

構造体メンバはメモリの中に連続して格納されるとは限らない. 構造体の各メンバが等しくても途中の使用していない領域が 等しいとは限らない.ことため,構造体同士の比較は構文エラーとしている.

10.3

構造体の初期化方法について説明する.

10.4

構造体変数 a の suit メンバは a.suit でアクセスできる.これが基本のアクセス方法である.

構造体変数はメモリサイズが大きい場合が多いので,ポインタで扱うことが多い. 例えばソートなどでは構造体変数ごと入れ替えるよりポインタを並べ替えてソート するほうが効率的である. aPtr が a を指すポインタであるとする.すなわち aPtr = &a であるとする. aPtr の指す変数すなわち a は *aPtr であるから,その suit メンバは (*aPtr).suit でアクセスできる.このような「ポインタを実体化してメンバにアクセス」 することは頻繁に行われるので aPrt->suit という等価な記法が用意されている.

リスト 10.1 を入力し,実行せよ.

10.5

構造体を関数へ渡すと値呼び出しとなり,すべてのメンバがコピーされる. 構造体を参照呼び出しで渡すと効率がいいのでよく使われる.

10.6

typedef struct card Card; と書くと,この構造体の変数を戦前するのに struct card と書くかわりに Card と書けるようになる.以降, Card を ある変数型として使える.typedef 分で構造体を定義し,構造体の型も同時に定義 することもできる.

10.7

構造体を利用したカード混合,分配シミュレーションについて説明する.

第 3 回課題「構造体」 を提出せよ.


Updated in November 26, 2007, schedule, Yamamoto Hiroshi