「C言語 ポインタ完全制覇(第2版)」正誤表


このページは、拙著「ポインタ完全制覇(第2版)」の正誤表のページです。

あまり増えないことを祈ります。

日付順のインデックス


p.25 2行目

誤)

その後、1998年(後述するANSI Cの正式な規格化のちょっと前)に

正)

その後、1988年(後述するANSI Cの正式な規格化のちょっと前)に

p.102 1行目

誤)

「関数へのポインタ」に読み替えらるので、

正)

「関数へのポインタ」に読み替えらるので、

p.114 List2-6 12行目

誤)

 12:         movl    -20(%rbp), %ed  ← aの内容を%edxにセット

正)

 12:         movl    -20(%rbp), %edx ← aの内容を%edxにセット


p.163 ふたつめの注

誤)

K&Rのdeclでも付けていませんし、

正)

K&Rのdclでも付けていませんし、

p.226 ⑩の英語的表現

誤)

pointer to function(int)) returning void

正)

pointer to function(int) returning void

p.258 Lis4-13 read_line.cの106行目

誤)

  if (line == NULL) {

正)

  if (*line == NULL) {

malloc()の戻り値は*lineに格納しているのですから、NULLチェックも*lineで行わなければなりません。


p.315 ふたつめのコード片

誤)

typedef enum {
    FILL_NONE,    /* 塗りつぶさない */
    FILL_SOLID,   /* べた塗り */
} FillPattern;

正)

typedef enum {
    FILL_NONE,    /* 塗りつぶさない */
    FILL_SOLID    /* べた塗り */
} FillPattern;

列挙型の末尾のカンマは、C99では合法ですがANSI C(C89/C90)では文法違反です。

この部分のコードがANSI Cだとうたっているわけではないですが、C99とも言っていないので、正誤表にあげておきます。


p.326 リスト5-17 Shape.hの17行目

p.315と同様です。


p.330 コード片

誤)

void (*draw_shape_func_table)(Shape *shape)[] = {

正)

void (*draw_shape_func_table[])(Shape *shape) = {

draw_shape_func_tableの型は「(Shapeへのポインタを引数に取る)関数へのポインタの配列」なので、 当然こうなります。本書のテーマ的に、ここで間違えてはいけないだろうというミスでした。申し訳ありません。

「わからない人は第3章を読み返しましょう」とか書いてあるのが我ながら余計に痛いです。

p.331の5行目にもvoid (*draw_shape_func_table)(Shape *shape)[]の記述がありますが、 こちらも同様に間違いです。


著者のWebページトップはこちら

ご意見、ご質問、不具合連絡等は掲示板にお願いいたします。