C 言語ポインタ完全制覇

シー ゲンゴ ポインタ カンゼン セイハ

C 言語ポインタ完全制覇の表紙
プログラミング
著者:
前橋和弥(マエバシ, カズヤ)
出版社:
技術評論社
出版日:
2017年12月
ISBN:
9784774193816
シリーズ:
新・標準プログラマーズライブラリ
在庫:
在庫あり
3(3 件 / 楽天ブックス)
中級者向け
C・C++・C#プログラミングポインターメモリ管理言語設計プログラミング基礎コンピュータアーキテクチャ低レベルプログラミングソフトウェア開発プログラミング理論

なぜ注目されているか

言及数
314位
総合543位 ↑ 6 ランクアップ 言及 9 件
02320222023202420252026

書籍紹介

C はなんでこんな言語に「なっちゃった」のか。そもそもこの悪名高いポインタとは何か。初心者が必ずひっかかる、配列とポインタのまぎらわしい文法とは。C はメモリを実際にどんなふうに使うのか。C の宣言は英語で読め。ポインタの真の使い方は。C の文法を深く知ることで見えてくること納得できること。

技書の森解説

『C 言語ポインタ完全制覇』 (前橋和弥 著、技術評論社、2017 年 12 月刊) は、C 言語のポインターと、それを取り巻く宣言の文法を正面から解き明かす解説書です。叢書は新 / 標準プログラマーズライブラリで、2001 年に刊行された同名書の改訂版にあたります。版元は勧めたい読者として、C 言語のポインターでつまずいた人や実は理解が曖昧な人、C 言語の自習者や再入門者を挙げています。ポインターの書き方は覚えたのに、なぜそう書くのかを説明できずにいる人に向いた一冊です。

2001 年刊からの改訂、C99 と C11 と 64 ビット環境への対応

版元の概要によれば、新版では ISO-C99 と C11 での扱いを追加し、64 ビットの OS を想定して全面的に内容を見直し、加筆と修正を加えています。目次にもその改訂が表れており、第 1 章では C の生い立ちから ANSI C (C89/90)、C95、C99、C11 までの規格の流れをたどります。可変長配列 (VLA)、フレキシブル配列メンバ、要素指示子付きの初期化、複合リテラルといった C99 の機能や、C11 の無名構造体と共用体を扱う項目も目次に並んでいます。

宣言を英語で読み、配列とポインターを分けて考える全 7 章

構成は第 0 章から第 6 章までの 7 章です。第 0 章で本書の狙いと対象読者を示し、第 1 章でメモリとアドレス、ポインター、配列の基礎を復習します。第 2 章「実験してみよう―C はメモリをどう使うのか」は、仮想アドレス、静的変数、自動変数 (スタック)、malloc () による動的な領域確保 (ヒープ)、アラインメント、バイトオーダーを確かめる章です。第 3 章「C の文法を解き明かす―結局のところ、どういうことなのか?」では、宣言を英語で読むという解読法、基本型と派生型からなる C の型モデル、左辺値、配列からポインターへの読み替え、const と typedef、関数へのポインターにおける混乱までを取り上げ、章の終わりの 3-6 節に「頭に叩き込んでおくべきこと―配列とポインタは別物だ!!」を置いています。第 4 章は配列とポインターのよくある使い方を集めた定石集、第 5 章は単語の使用頻度を数えるプログラムとドローツールのデータ構造という 2 つのケーススタディでポインターの真の使い方を示し、第 6 章は新しい関数群や落とし穴、イディオムを拾い集める章です。

C のポインターが難しく見える理由とメモリの見取り図

C 言語 のポインターがつまずきの種になりやすいのは、概念そのものより表記の側に原因があります。宣言に現れる `*` と式の中の `*` は同じ記号でありながら役割が違い、配列の名前は式の中ではほとんどの場合に先頭要素へのポインターへ読み替えられるため、配列とポインターが同じものに見えてしまいます。さらに宣言は変数名を中心に右と左へ読み進める構造になっていて、配列へのポインターや関数へのポインターが絡むと、型を左から順に読むだけでは意味が取れなくなります。

メモリ管理の責任も読み手にのしかかります。ガベージコレクション を備える言語では使わなくなった領域の解放をランタイムが引き受けますが、C ではプログラマー自身が malloc () で確保した領域の寿命を管理し、ポインターの指す先がまだ有効かどうかを把握し続けなければなりません。プログラムの記憶領域がコード、静的なデータ、スタック、ヒープに分かれる メモリレイアウト を具体的に思い描けると、ポインターの値がどこを指しているのか、関数から戻った後に使ってはいけない領域がどれなのかを判断しやすくなります。組み込み機器や OS、C で書かれた既存のライブラリに触れる仕事では、この判断が不具合の調査に直結します。

前提になるのは C の基本文法です。版元が自習者と再入門者を対象に挙げているとおり、プログラミングそのものを初めて学ぶための入門書ではありません。扱う規格は目次のとおり C11 までで、C++ のクラスやテンプレートを学びたい人の目的とも異なります。ポインターを使ったコードを写して動かせはしても、配列へのポインターや関数へのポインターが出てくるたびに手が止まる人、C で書かれたコードを読み解く必要がある人にとって、宣言の読み方と型の仕組みから配列とポインターの違いを整理し直せる本書は、あいまいだった理解を作り直す確かな足場になります。

言及した記事 (9 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: