標準プログラマーズ ライブラリシリーズC言語 ポインタ完全制覇
2001年1月10日紙版発売
前橋和弥 著
B5変形判/324ページ
定価2,508円(本体2,280円+税10%)
ISBN 4-7741-1142-2
書籍の概要
この本の概要
第一線で活躍する筆者によって,C言語において最大の難関と言われる「ポインタ」の真の使い方が見えてきます。もう一歩先へ進めなかった初心者はもちろん,ある程度経験を積んだプログラマにもぜひ読んでほしい画期的な1冊です。
こんな方におすすめ
- ポインタのところを重点的に学びたい方
- C言語をもう一度学び直したい方
目次
第0章 本書の狙いと構成 ―イントロダクション
- 0・1 本書の狙い
- 0・2 対象読者と構成
第1章 まずは基礎から ―予備知識と復習
- 1・1 Cはどんな言語なのか
- 1・1・1 たとえ話
- 1・1・2 Cの生い立ち
- 1・1・3 文法上の不備・不統一
- 1・1・4 ANSI C
- 1・1・5 Cのバイブル ―K
- 1・1・6 Cの理念
- 1・1・7 C言語の本体とは
- 1・1・8 Cは,スカラしか扱えない言語だった
- 1・2 ポインタについて
- 1・2・1 そもそも,悪名高いポインタとは何か
- 1・2・2 ポインタに触れてみよう
- 1・2・3 ポインタとアドレスの微妙な関係
- 1・2・4 ポインタ演算
- 1・2・5 ヌルポインタとは何か?
- 1・2・6 実践 ―swap関数
- 1・3 配列について
- 1・3・1 配列を使う
- 1・3・2 配列とポインタの微妙な関係
- 1・3・3 添字演算子[]は,配列とは無関係だ!
- 1・3・4 ポインタ演算という妙な機能はなぜある?
- 1・3・5 ポインタ演算なんか使うのはやめてしまおう
- 1・3・6 関数の引数として配列を渡す(つもり)
- 1・3・7 関数の仮引数の宣言の書き方
第2章 実験してみよう ―Cはメモリをどう使うのか
- 2・1 仮想アドレス
- 2・2 Cのメモリの使い方
- 2・2・1 Cにおける変数の種類
- 2・2・2 アドレスを表示させてみよう
- 2・3 関数と文字列リテラル
- 2・3・1 書き込み禁止領域
- 2・3・2 関数へのポインタ
- 2・4 静的変数
- 2・4・1 静的変数とは
- 2・4・2 分割コンパイルとリンク
- 2・5 自動変数(スタック)
- 2・5・1 領域の「使い回し」
- 2・5・2 関数呼び出しで何が起きるか?
- 2・5・3 可変長引数
- 2・5・4 再帰呼び出し
- 2・6 malloc()による動的な領域確保(ヒープ)
- 2・6・1 malloc()の基礎
- 2・6・2 malloc()は「システムコール」か?
- 2・6・3 malloc()で何が起きるか?
- 2・6・4 free()した後,その領域はどうなる?
- 2・6・5 フラグメンテーション
- 2・6・6 malloc()以外の動的メモリ確保関数
- 2・7 アラインメント
- 2・8 バイトオーダー
- 2・9 言語仕様と実装について ―ごめんなさい,ここまでの内容はかなりウソです
第3章 Cの文法を解き明かす ―結局のところ,どういうことなのか?
- 3・1 Cの宣言を解読する
- 3・1・1 英語で読め
- 3・1・2 Cの宣言を解読する
- 3・1・3 型名
- 3・2 Cの型モデル
- 3・2・1 基本型と派生型
- 3・2・2 ポインタ型派生
- 3・2・3 配列型派生
- 3・2・4 「配列へのポインタ」とは何か?
- 3・2・5 C言語には,多次元配列は存在しない!
- 3・2・6 関数型派生
- 3・2・7 型のサイズを計算する
- 3・2・8 基本型
- 3・2・9 構造体と共用体
- 3・2・10 不完全型
- 3・3 式
- 3・3・1 式とデータ型
- 3・3・2 左辺値とは何か ―変数の2つの顔
- 3・3・3 配列→ポインタの読み替え
- 3・3・4 配列とポインタに関係する演算子
- 3・3・5 多次元配列
- 3・4 続・Cの宣言を解読する
- 3・4・1 const修飾子
- 3・4・2 constをどう使うか? どこまで使えるか?
- 3・4・3 typedef
- 3・5 その他
- 3・5・1 関数の仮引数の宣言
- 3・5・2 空の[]について
- 3・5・3 文字列リテラル
- 3・5・4 関数へのポインタにおける混乱
- 3・5・5 キャスト
- 3・5・6 練習 ―複雑な宣言を読んでみよう
- 3・6 頭に叩き込んでおくべきこと ―配列とポインタは別物だ!
- 3・6・1 なぜ混乱してしまうのか
- 3・6・2 式の中では
- 3・6・3 宣言では
第4章 定石集 ―配列とポインタのよくある使い方
- 4・1 基本的な使い方
- 4・1・1 戻り値以外の方法で値を返してもらう
- 4・1・2 配列を関数の引数として渡す
- 4・1・3 可変長配列
- 4・2 組み合わせて使う
- 4・2・1 可変長配列の配列
- 4・2・2 可変長配列の可変長配列
- 4・2・3 コマンド行引数
- 4・2・4 引数経由でポインタを返してもらう
- 4・2・5 多次元配列を関数の引数として渡す
- 4・2・6 配列の可変長配列
- 4・2・7 変に凝る前に,構造体の使用を考えよう
- 4・3 反則技
- 4・3・1 可変長構造体
- 4・3・2 1から始まる配列
第5章 データ構造 ―ポインタの真の使い方
- 5・1 ケーススタディ1:単語の出現頻度を考える
- 5・1・1 例題の仕様について
- 5・1・2 設計
- 5・1・3 配列版
- 5・1・4 連結リスト版
- 5・1・5 検索機能の追加
- 5・1・6 その他のデータ構造
- 5・2 ケーススタディ2:ドローツールのデータ構造
- 5・2・1 例題の仕様について
- 5・2・2 各種の図形を表現する
- 5・2・3 Shape型
- 5・2・4 検討 ―他の方法は考えられないか?
- 5・2・5 図形のグルーピング
- 5・2・6 継承とポリモルフィズムへの道
- 5・2・7 ポインタの怖さ
- 5・2・8 で,結局ポインタってのは何なのか?
第6章 その他 ―落ち穂拾い
- 6・1 落とし穴
- 6・1・1 strncpy()について
- 6・1・2 「古い」Cでfloat型の引数を使ったら
- 6・1・3 printf()とscanf()
- 6・1・4 プロトタイプ宣言の光と影
- 6・2 イディオム
- 6・2・1 構造体宣言
- 6・2・2 自己参照型構造体
- 6・2・3 構造体の相互参照
- 6・2・4 構造体のネスティング
- 6・2・5 共用体
- 6・2・6 配列の初期化
- 6・2・7 charの配列の初期化
- 6・2・8 charへのポインタの配列の初期化
- 6・2・9 構造体の初期化
- 6・2・10 共用体の初期化
- 6・2・11 グローバル変数の宣言
参考文献
この本に関連する書籍
-
はじめて学ぶ C言語プログラミング 入門講座
本書は,プログラミングの経験がない人でも安心して読める,C言語の入門書です。各章で提示されるサンプルプログラムを実際に動かし,読み解くことで,C言語によるプロ...
-
C/C++プログラミングの「迷信」と「誤解」
C/C++プログラマーは大勢います。しかし,その多くは学校などでの基礎教育を経たら,もうすぐに実作業を通して言語の習得をしています。実は,そこに大きな落とし穴があ...
-
C言語撃退講座 〜 K&Rは置いて、俺の話を聞け
C言語は難しくない!ポインタは難関ではない! どうか多くの人にC言語を好きになってほしい,それが著者の願いだ。なぜC言語はプログラミング言語の覇者になったかご存...
-
改訂第5版 ANSI C対応 はじめてのC
C言語解説書の定番中の定番『はじめてのC』が6年ぶりの改訂を迎えました。変数などの基本項目から低水準入出力関数まで網羅した徹底的な解説は,お手軽なC言語入門書に...
-
C言語 ポインタが理解できない理由
「C言語はポインタがあるから難しい」と言われます。しかしポインタはそれほど難しいものではありません。ポインタを理解するにはちょっとしたコツが必要です。本書は,...