イマドキのCやC++でヌルポインタってどう扱うの?

「そう言えばポインタとヌルポインタの比較ってどう書くのがベターなのかしらん?」と、小生が軽い気持ちで呟いた一言が、今宵も多くのプログラマのハートに火をつけたのであった… 目の前にある問題を解かずにはいられない…それがプログラマ…! わざわざ返信して頂いた諸先輩方、本当にありがとうございます。
4
hira @hira_kuni_45

@5mingame2 このページにある「適切に変換される」しくみはANSIの勧告に従っているコンパイラの場合であって、全てのコンパイラが従っている補償は無いと思います。(gccの最近の版は問題無いでしょうね~)※自分が読んだHowtoのソースは見つけられなかった・・

2011-03-10 01:15:28
池田公平 @hgodai

@5mingame2  話題に遅れてしまった! C++では、assert(ptr)が正しいです。!= NULLは論外、!= 0もよろしくないです。なぜならば、C++ではptrはoperator boolで評価されるから。

2011-03-10 03:52:30
池田公平 @hgodai

@5mingame2 @hira_kuni_45  0が適切なヌルポインタに変換されるというのは誤解で、 ポインタに対する == , != オペレータが適切な処理をしてくれているのです。

2011-03-10 03:54:06
池田公平 @hgodai

@5mingame2 @hira_kuni_45 気味が悪いのは、型に依存しないはずのCにおいてもoperator void*の定義が無理矢理されているこどですね。(それで0が実際のポインタに変換されているように振舞います)

2011-03-10 04:08:03
西山 信行 @5mingame2

@hgodai 先生ありがとうございます!ツイッターだと文字制限が厳しくて上手に書けません…^^; ので、是非次回の勉強会で掘り下げましょう!

2011-03-10 14:21:29
西山 信行 @5mingame2

やっぱCとC++は別の言語なんだな…と思った展開なのであった。

2011-03-10 14:22:53
西山 信行 @5mingame2

@marvelph ご指摘ありがとうございます。ほんと、まだまだ自分は言語を理解していないな…と感じました。

2011-03-10 14:25:58
西山 信行 @5mingame2

Cでのヌルポインタの話、ここの質問も興味深い。ちなみに自分もちゃんと説明できません…^^; http://okwave.jp/qa/q942749.html

2011-03-10 14:44:56
西山 信行 @5mingame2

ありがとうございます! 実は昨日別の方から教えてもらい、現在精読中です^^; QT @DARL_Japan そう言えば、このページ御存知ですか? http://www.kouno.jp/home/c_faq/

2011-03-10 14:50:09
池田公平 @hgodai

@5mingame2 ヌルポインタはC言語ではイタイ実装になっていたのがC++ではスマートに解決されているので両言語の違いがよく出ていて面白いですね。ネタにさせてください。

2011-03-10 16:52:37