C言語ポインタ完全制覇

ポインタの「正体」が分かる

誰もがつまづくであろうポインタ、その正体を異常に分かりやすく解説します。

読み進むにつれ、C言語の謎が徐々に解けて来る、良書の中の良書

私も学生時代これを読んで、ようやくポインタを理解出来ました。
そしてプログラミングの成績が一気に上がったのは良い思い出です。

C言語の基礎はやったけど…

C言語の基礎は一応学んだけど、ポインタメモリ関係がよく分からん!
そんな人にぜひとも読んで欲しい一冊です。

ポインタがなぜ分かりにくいのか?

を、我々凡人プログラマー目線で説明してくれます。

また「読み物」感覚の軽い文体なので、堅苦しい技術書とは違って、睡魔を召喚しません。
著者のユーモア、ノリとツッコミのセンスも、なかなかのものです。

ポインタと配列の微妙な関係

本書では、やたら単純なテストプログラムを見ながら、ポインタの仕組みに迫ります。
結局ポインタとは「アドレスの入れ物」なんですが、それを実際に目で確かめられるのが嬉しいです。

また、よく混乱する配列とポインタの関係も詳しく解説しています。

配列とポインタは全く別物なんですが、ある事情により同一視できるケースもあります。
本書はそういったルールと例外を明快に教えてくれます。

私は学生時代、これで目からウロコがドッカンドッカン落ちました。
まあ知ってしまえば結構シンプルなんですが。

なぜ分かりにくい?が分かる

他にも本書は、C言語の謎を丁寧に解き明かしてくれます。

例えば関数にポインタが絡んでくる宣言。↓こんなやつ。

int  ( *hoge( int a, float ( *b )( int c ) ) )( float d );

うわっ分かりにくい!と思った人は正常です。

ちなみに正解は、以下のようになります。

まず、これは関数プロトタイプ宣言です。
だから hoge は 関数です。

hoge の戻り値は、関数へのポインタです。
  どんな関数へのポインタ?→ int を返し、引数が float関数だよ

hogeの引数は、2つあります。
  1つ目 int
  2つ目 関数へのポインタ
    どんな関数へのポインタ?→ float を返し、引数が int の関数だよ

なんというか関数やポインタという単語が、ゲシュタルト崩壊を起こしますね…

しかし本書にあるコツを使えば、こんな複雑な宣言文も読めるようになります。

他にも

  • 宣言と式の違い
  • シンタックスシュガーとは
  • スタックとヒープ
  • バイトオーダとアライメント
  • 空の[ ]の意味

などなど…ポインタを通じて、Cの言語仕様をより深く理解できます。

アマとプロの違い

本書はC言語の「分かりにくさ」を紹介しながら、設計思想にも踏み込んでいます。
タイトルではポインタを強調してますが、実の所こっちがメインと言っても良いです。

表面的な文法だけではなく、設計思想とコンパイラの事情も理解すれば

なぜこう書くのか?

が具体的に分かってきます。

私の考えでは、プロとアマの違いはここにあると思います。

「とりあえず動けばいいや」レベルから脱却し、内部の動きをイメージできる。

プロのプログラマーは、そういった深い階層の知識が必須です。
(それを知らない人もかなり見ましたが…怖い怖い)

だから、いつも設計思想を意識する習慣をつけましょう!

そのプロへの入り口として、本書は最適だと言えます。

おまけ
同じ著者さんのセンス・オブ・プログラミング!もオススメです。
プログラミングを「組む力」が上がります。

C言語ポインタ完全制覇

10

分かりやすさ

10.0/10

普遍性

10.0/10

コストパフォーマンス

10.0/10

なるほ度

10.0/10

Points

  • ポインタの正体が分かる
  • C言語を深く理解できる
  • 紛らわしい仕様を整理できる
  • Cの設計思想が分かる
  • なぜ動くか?が分かる

Notes

  • 歯に衣着せぬ文章だけど怒らないでね
  • ユーモアが分かる人に

Kuniaki Ebata 登録者

大学中退(文系)の専門卒 日本で唯一のプログラミング書籍評論家 プログラマーで現役のスキー国体選手です 頭と体を動かすのが大好きなフレンズなんだね 専門学校で先生もやってます プログラミングは21歳から 貴族じゃない独身 持病:重度うつ病(薬とサポートのおかげで何とか生きてます) 教え子をゲーム業界へどんどん送り込み、世界を面白くする野望を実現中 プログラミングが上達するメルマガやってます ここを見たゲーム業界の卒業生へ 新作が出たら、連絡するか現物を送ってくれると嬉しいです ただし18禁・CERO-Dの場合は、厳重に梱包の上、品名をパソコン部品にて送る事(だいじ) このページが参考になった方へ ぜひSNSやブログでシェアして欲しいです お願いします(少し上にボタンあります) 最近Google先生が中身の無い「いかがでしたか?」サイトを優遇するので困っています助けて下さい(>_<) シェアしてくださった方には 小冊子 プログラミング書籍が10倍わかる読み方(pdf) を差し上げます こちらからご報告頂くか、こっそりDMを送って下さい