書籍をつつく33−C言語ポインタ完全制覇。最強のポインタ本2008-10-04 Sat 10:44
前回C言語に関する書籍をレビューしたから、今回はC言語の難所ポインタを解説している良書を紹介するピィヨ♪
C言語ポインタ完全制覇 (標準プログラマーズライブラリ) これ以上のポインタ書は存在しないピヨ♪先ずは目次を見よう♪ 【目次】
第0章 本書の狙いと構成 ―イントロダクション
* 0・1 本書の狙い
* 0・2 対象読者と構成
第1章 まずは基礎から ―予備知識と復習
* 1・1 Cはどんな言語なのか
o 1・1・1 たとえ話
o 1・1・2 Cの生い立ち
o 1・1・3 文法上の不備・不統一
o 1・1・4 ANSI C
o 1・1・5 Cのバイブル ―K
o 1・1・6 Cの理念
o 1・1・7 C言語の本体とは
o 1・1・8 Cは,スカラしか扱えない言語だった
* 1・2 ポインタについて
o 1・2・1 そもそも,悪名高いポインタとは何か
o 1・2・2 ポインタに触れてみよう
o 1・2・3 ポインタとアドレスの微妙な関係
o 1・2・4 ポインタ演算
o 1・2・5 ヌルポインタとは何か?
o 1・2・6 実践 ―swap関数
* 1・3 配列について
o 1・3・1 配列を使う
o 1・3・2 配列とポインタの微妙な関係
o 1・3・3 添字演算子[]は,配列とは無関係だ!
o 1・3・4 ポインタ演算という妙な機能はなぜある?
o 1・3・5 ポインタ演算なんか使うのはやめてしまおう
o 1・3・6 関数の引数として配列を渡す(つもり)
o 1・3・7 関数の仮引数の宣言の書き方
第2章 実験してみよう ―Cはメモリをどう使うのか
* 2・1 仮想アドレス
* 2・2 Cのメモリの使い方
o 2・2・1 Cにおける変数の種類
o 2・2・2 アドレスを表示させてみよう
* 2・3 関数と文字列リテラル
o 2・3・1 書き込み禁止領域
o 2・3・2 関数へのポインタ
* 2・4 静的変数
o 2・4・1 静的変数とは
o 2・4・2 分割コンパイルとリンク
* 2・5 自動変数(スタック)
o 2・5・1 領域の「使い回し」
o 2・5・2 関数呼び出しで何が起きるか?
o 2・5・3 可変長引数
o 2・5・4 再帰呼び出し
* 2・6 malloc()による動的な領域確保(ヒープ)
o 2・6・1 malloc()の基礎
o 2・6・2 malloc()は「システムコール」か?
o 2・6・3 malloc()で何が起きるか?
o 2・6・4 free()した後,その領域はどうなる?
o 2・6・5 フラグメンテーション
o 2・6・6 malloc()以外の動的メモリ確保関数
* 2・7 アラインメント
* 2・8 バイトオーダー
* 2・9 言語仕様と実装について ―ごめんなさい,ここまでの内容はかなりウソです
第3章 Cの文法を解き明かす ―結局のところ,どういうことなのか?
* 3・1 Cの宣言を解読する
o 3・1・1 英語で読め
o 3・1・2 Cの宣言を解読する
o 3・1・3 型名
* 3・2 Cの型モデル
o 3・2・1 基本型と派生型
o 3・2・2 ポインタ型派生
o 3・2・3 配列型派生
o 3・2・4 「配列へのポインタ」とは何か?
o 3・2・5 C言語には,多次元配列は存在しない!
o 3・2・6 関数型派生
o 3・2・7 型のサイズを計算する
o 3・2・8 基本型
o 3・2・9 構造体と共用体
o 3・2・10 不完全型
* 3・3 式
o 3・3・1 式とデータ型
o 3・3・2 左辺値とは何か ―変数の2つの顔
o 3・3・3 配列→ポインタの読み替え
o 3・3・4 配列とポインタに関係する演算子
o 3・3・5 多次元配列
* 3・4 続・Cの宣言を解読する
o 3・4・1 const修飾子
o 3・4・2 constをどう使うか? どこまで使えるか?
o 3・4・3 typedef
* 3・5 その他
o 3・5・1 関数の仮引数の宣言
o 3・5・2 空の[]について
o 3・5・3 文字列リテラル
o 3・5・4 関数へのポインタにおける混乱
o 3・5・5 キャスト
o 3・5・6 練習 ―複雑な宣言を読んでみよう
* 3・6 頭に叩き込んでおくべきこと ―配列とポインタは別物だ!
o 3・6・1 なぜ混乱してしまうのか
o 3・6・2 式の中では
o 3・6・3 宣言では
第4章 定石集 ―配列とポインタのよくある使い方
* 4・1 基本的な使い方
o 4・1・1 戻り値以外の方法で値を返してもらう
o 4・1・2 配列を関数の引数として渡す
o 4・1・3 可変長配列
* 4・2 組み合わせて使う
o 4・2・1 可変長配列の配列
o 4・2・2 可変長配列の可変長配列
o 4・2・3 コマンド行引数
o 4・2・4 引数経由でポインタを返してもらう
o 4・2・5 多次元配列を関数の引数として渡す
o 4・2・6 配列の可変長配列
o 4・2・7 変に凝る前に,構造体の使用を考えよう
* 4・3 反則技
o 4・3・1 可変長構造体
o 4・3・2 1から始まる配列
第5章 データ構造 ―ポインタの真の使い方
* 5・1 ケーススタディ1:単語の出現頻度を考える
o 5・1・1 例題の仕様について
o 5・1・2 設計
o 5・1・3 配列版
o 5・1・4 連結リスト版
o 5・1・5 検索機能の追加
o 5・1・6 その他のデータ構造
* 5・2 ケーススタディ2:ドローツールのデータ構造
o 5・2・1 例題の仕様について
o 5・2・2 各種の図形を表現する
o 5・2・3 Shape型
o 5・2・4 検討 ―他の方法は考えられないか?
o 5・2・5 図形のグルーピング
o 5・2・6 継承とポリモルフィズムへの道
o 5・2・7 ポインタの怖さ
o 5・2・8 で,結局ポインタってのは何なのか?
第6章 その他 ―落ち穂拾い
* 6・1 落とし穴
o 6・1・1 strncpy()について
o 6・1・2 「古い」Cでfloat型の引数を使ったら
o 6・1・3 printf()とscanf()
o 6・1・4 プロトタイプ宣言の光と影
* 6・2 イディオム
o 6・2・1 構造体宣言
o 6・2・2 自己参照型構造体
o 6・2・3 構造体の相互参照
o 6・2・4 構造体のネスティング
o 6・2・5 共用体
o 6・2・6 配列の初期化
o 6・2・7 charの配列の初期化
o 6・2・8 charへのポインタの配列の初期化
o 6・2・9 構造体の初期化
o 6・2・10 共用体の初期化
o 6・2・11 グローバル変数の宣言
参考文献
ボクはこの本を読むまでポインタを分かっているつもりだったけど、読んだら目から鱗が落ち、驚愕の余り羽も抜けたピヨ♪ボクがこの本を買ったきかっけは、ポインタになんでこんなにページ数が要るのか?と興味が湧いたからなんだ。でも読んだら分かったピヨ。このページ数は当たり前だとね。ポインタは当初ボクが「アドレスだろ」って考えた以上の意味があったんだ。C言語の配列にあのような秘密があったとは・・・Javaにもポインタがあったとは・・・など色々分かるピヨ♪ この本はポインタが分からない人、ポインタの操作にある程度自信が人、C++使いにお勧めするピヨ♪えっ?何でC++なのかって?それはなねぇ、C++はCの上で構築されているから、Cを深く知ることはC++の根源を知る事を意味しているんだ。つまり、かなり熟練の技術者で、なおかつ日常的にポインタを使っている人以外はこの本をお勧めって事だね♪ あと、C言語でOS実装する人にも役立つピヨ♪価格も安いから少しでも興味がある人は買ってみよう♪ |
この記事のコメント お、この本はC言語始めたときに最初に買った本です。
前橋氏の本は物を作りながら話すのでわかりやすいですよね。C++で同様のアプローチを取っている本が案外少なくてAccelerated C++ぐらいしか思いつかなかったりします。どちらも名著ですよね。 でも前橋氏の本であれば体当たり学習C言語の方が良い本だと思います。 あおいたんコメント有難う。
「体当たり学習C言語」は知りませんでした。 なので今Amazonの説明を読みました。 ともてよさそうな本ですね。 前橋氏は凄いピヨ♪
2008-10-06 Mon 13:00 | URL | インドリ #-[ 内容変更]
|
コメントの投稿 |
||
|
|
||
| 管理者だけに閲覧 | ||
|
|
||
この記事のトラックバック
C言語ポインタ完全制覇 (標準プログラマーズライブラリ)
どうしてここまでC言語のポインタが複雑になったか?
この本はC言語誕生... …
2009-05-21 Thu 17:57 もぼなもな書房
|
|
| 無差別に技術をついばむ鳥 |
|