K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[2164] c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:f_ki
2019/03/25 17:29:45

Link:
はじめまして。
C言語ポインタ完全制覇(初版 第一刷)の内容についていくつか確認させていただきたいです。

C言語勉強中、アセンブリ言語については全く知らない身なので、見当外れな質問でしたら申し訳ないです。

p.114 List2-6 12行目
コメントとの対応を考えると、%edではなく%edxではないでしょうか。

p.226 10の後の英語的表現
英文の2行目最後のfucntion(int)の後に閉じ括弧)がありますが、不要ではないでしょうか。

[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2166] Re:c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:(ぱ)こと管理人
2019/03/27 01:20:56

Link:
>はじめまして。

はじめまして。読んでいただきありがとうございます。

>p.114 List2-6 12行目
>コメントとの対応を考えると、%edではなく%edxではないでしょうか。

そうですね。オリジナルのソースを見ると%edxになっているので、
編集段階で(矢印を入れたときに?)xが消えてしまったようです。
確認不足でした。申し訳ありません。

>p.226 10の後の英語的表現
>英文の2行目最後のfucntion(int)の後に閉じ括弧)がありますが、
>不要ではないでしょうか。

こちらもそのとおりです。申し訳ありません。

ご指摘ありがとうございました。後ほど正誤表に入れさせていただきます。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2167] Re:c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:f_ki
2019/03/27 21:55:06

Link:
お忙しい中ご返信ありがとうございます。

度々申し訳ないのですが、確認させていただきたい所がございます。

P.297 List 5-14 11行目で、for文の終了条件にposとあるのですが、これは pos != NULL ではないでしょうか。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2169] Re:c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:(ぱ)こと管理人
2019/03/28 00:12:29

Link:
>P.297 List 5-14 11行目で、for文の終了条件にposとあるのですが、
>これは pos != NULL ではないでしょうか。

Cでは0以外は全部真なので、条件式にposと書いてもpos != NULLと書いても
意味は同じです。
Cプログラマは使いがちな書き方ではありますが、p.57の「ポインタ演算なんか
使うのはやめてしまおう」のところで『「一見してわかりにくいように見える」なら、
やっぱり書くべきではないでしょう』とか書いてる本としては
ちょっとダブルスタンダードっぽいかな、とは我ながら思わなくもないです (^^;
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2171] Re:c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:f_ki
2019/03/28 14:41:19

Link:
書籍の中の補足でNULLマクロは処理系によって定義のされ方が違うと書かれていましたが、(void*)0であっても0であってもNULLは真偽値で言えば偽が返る値ということですね。

本日読了しました。初心者だったので4章以降の実践的な部分は難しく感じる部分もありましたが、何度も読み返していくことでかなりの部分を理解できたと思います。
入門書を読んだだけで理解が曖昧だったポインタや配列、変数の分類や構造体などのC言語の文法についても改めて整理できました。本書のテーマはC言語のポインタですが、結果的にはC言語の文法全体に触れるような構成になっているのはそれだけC言語とポインタが深く広く結びついているということですね。

長くなりましたが技術書ながらとても読みやすく勉強になる本でした。質問にも丁寧に答えていただきありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[2172] Re:c言語ポインタ完全制覇(改訂版)に関する質問
返信


投稿者:(ぱ)こと管理人
2019/04/02 01:25:35

Link:
返信が遅れて申し訳ありません。

>書籍の中の補足でNULLマクロは処理系によって定義のされ方が違うと書かれていましたが、
>(void*)0であっても0であってもNULLは真偽値で言えば偽が返る値ということですね。

その通りです。これについてはC FAQに記載がありました。

http://www.kouno.jp/home/c_faq/c5.html#3
| 5.3:
| ポインターがヌルポインターでないかどうかのテストの省略形 「if(p)」は有効なのか? 
| ヌルポインターの内部表現が0でない場合は どうなるのか。
| A:
| C言語が式のブール値を必要とする場合(if、while、forやdo文において、
| また&&、||、!、?:演算子と共に使う場合)、0と比較して等しい場合は偽の値が
| 産み出され、その他の場合は真が産み出される。すなわち
|
|    if(expr)
|
| と書いたらいつも、「expr」がどんな式かにかかわらずコンパイラは必ず
|
|    if((expr) != 0)
|
| と書かれたように基本的には動作する。
[ この投稿を含むスレッドを表示] [ この投稿を削除]