第一に、基本的な誤りが結構多い。
例えば、continue文を「ループの先頭に戻る制御構造」と説明していたり(正しくはループの終わりへ分岐)、配列を初期値付きで宣言するにはstaticを付けなければならないとしていたりする(本書はANSI Cの解説書のため、staticは不要)などである。
第二に、使用に十分な注意を要するような技法が、ほとんど説明なしに掲載されている部分がある。
例えば、幅の決まらない二次元のint配列を、引数を介して関数に渡すという練習問題が載っており、解答として、関数側の引数をintへのポインタとして宣言しておいて、そこに二次元配列をキャスト付きで渡す方法が示されている。
また、文字列を反転させる関数を作る例題では、staticなchar配列を関数内で確保し、その先頭要素へのポインタを戻り値として返す方法を、解答としている。
読者がこのような“行儀の悪い”用法を定石だと思い込むと、後々、キャストやポインタを不適切に乱用する癖が付いてしまいかねない。
第三に、混乱を招くような表現が多々見られるのも気になる。
本書では、配列名は「配列の先頭アドレスを持つポインタ定数と考えることができ」ると説明されている。しかし、この説明では“配列へのポインタ”との違いが分からず、かえって理解を妨げることにもなりえると思う。
私は河西氏の書籍を何冊か持っているが、見易さや親しみやすさという点では、どれも非常に優れていると感じている。
しかし、本書に関しては、その特長を台無しにするようなまずい記述が目立つ。特に、上述の第二・三項のような問題点は、C言語の根本を誤って理解させてしまうことにもなりかねず、かなり重大である。
内容的に古くなっている部分も多く、抜本的な改訂が望まれる。
この本を見て2年ほど授業がありましたが、パソコンをあまり使えなかった人でも
授業を通してC言語のプログラミングができるようになりました。
自分も、プログラミングを行いたいと思い高校に入学しましたが、
この本で一通りのC言語でのプログラミングが行えるようになしました。
この本はC初心者にもすごく判りやすく、内容もしっかりしています。
それでいて分厚くありません。
これだけの内容としては薄い方かと思います。
私がCを勉強し始めた頃、本当にお世話になった一冊です。
是非おすすめします。