教養のためのC言語学習と参考書
パタヘネでは所々MIPSとC言語とを読み比べながら学ぶ箇所がある。
アルゴリズムは別としてコード自体は文法的に簡潔であるため読めなくはないのだけれども、これまでC言語についてまとまった時間を割いて勉強したことがなかったので、今後の学習効率向上やスキルに幅を持たせるために少し立ち止まって勉強してみた。
学習に当たっては以下の本を読んだ。内容の整理というより書評になってしまった。
やさしいC
- 作者: 高橋麻奈
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/08/30
- メディア: 単行本
- この商品を含むブログ (6件) を見る
プログラミングを独学し始めた時期に手を出した本のうちの一冊でこの機会に再読。
練習問題を通して文法をバランス良く学ぶことができる。
後述のC言語教科書は文法をそこまで細かく解説しないので、概要を掴むのに役立つ。
C言語教科書 入門編
- 作者: 川俣晶
- 出版社/メーカー: 日経BP社
- 発売日: 2009/03/25
- メディア: 単行本
- クリック: 4回
- この商品を含むブログ (5件) を見る
コマンドラインの使い方や処理系の違いといった環境面の解説が手厚く、またバイナリ・テキスト、文字コードといったデータの取り扱いやバブルソートを例にしたアルゴリズムへの示唆が自然に含まれておりC言語だけでなくプログラミング初学者におすすめできると思った。
ただ、環境としてはWindows前提なのでmacを使っている人は適宜、読み替える必要がある。
C言語を試用するという面ではかなりの充実度だが、構文をきっちりかっきり抑えたい人には物足りないかもしれないので別途、上述の『やさしいC』などの文法寄りの参考書と読み合わせると理解が深まると思う。
C言語教科書 上達編 誰でもわかる!C言語ベテラン技
- 作者: 川俣晶
- 出版社/メーカー: 日経BP社
- 発売日: 2010/01/21
- メディア: 単行本
- 購入: 1人 クリック: 3回
- この商品を含むブログ (4件) を見る
『C言語教科書 入門編』の続編でビット操作や様々なキャストを通して各データ型のバイト数とメモリ配置への意識が向上する一冊。 また、「第7章 言語仕様」のコンパイルエラーは発生しないけれども、結果が保障されない「副作用」の未定義的な観点は心に留めておく必要がある。
C言語ポインタ完全制覇
- 作者: 前橋和弥
- 出版社/メーカー: 技術評論社
- 発売日: 2001/01
- メディア: 単行本
- 購入: 22人 クリック: 147回
- この商品を含むブログ (75件) を見る
a[i]とi[a]が同じ値を示すといった、かなり極端な書き換え例を通して配列とポインタの文法上の考え方、読み替え方がとにかくよくわかる。 さらに「第2章 実験してみようーCはメモリをどう使うのか」ではパタヘネの実行ファイルのメモリ配置周りの解説に記憶域期間の具体的な視点を付与してくれる。 const修飾子や、関数ポインタ・ポインタの配列といった複雑なポインタ宣言の読解の仕方や利用に当たってのメリットも解説している。かなり有名な定番中の定番。
メモ
『C言語教科書 入門編』で以下のようなサンプルコード(一部抜粋)がある。
このコードをコンパイルした実行ファイルに空ファイルをリダイレクトで標準入力として渡したときにのみ分岐の内に入ることを意図しているようだが、実際に実行する(MinGWでコンパイル)と内容のあるファイルでも分岐の内に入ってしまう。feof関数はFILE構造体(sdtinをはじめとした標準ストリームはFILE構造体のポインタ)のファイル終了表示子を参照するため、この動作は正しいように思われる。詳しくはファイル終了表示子やgets(今となっては実用皆無であるが)、feof関数がどのように実装されているか、処理系の定義であるstdio.hを見れば良いのだろうが、制御文字を含めた入出力系はどの範囲をどういう勉強をすればいいか整理してから取り掛かりたいので一旦は課題に留めておく。