SSブログ

今まで見たポインタの解説で最も間違っているもの [プログラミング]

これはひどい。書いてる人がどこをどう間違っているかは、あとでまじめに検討するとして、
http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm
ここ↑のページの最後のプログラムが明らかに間違っている。他も間違っているんだろうけど、とても読む気がしない。
内容が書き換えられる可能性が大なので、リストだけこちらに引用させていただく。
    #include 

    int main( void ) {
      int *n;
      *n = 5;   /* ポインタ変数nに値5を代入 */
      printf( "%d\n", *n );  /* ポインタ変数nが持つ値(5)の出力 */
      return 0;
    }

アドレス不定なポインタ変数の参照先への代入。もっとも恐るべき類のバグ。
ポインタの解説記事のはずなのに・・・

・・・はてなにもブックマークされてた
http://b.hatena.ne.jp/entry/http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm
「コンパイル通らない」とコメントに書いてる人もいるけど、それってどの処理系? FreeBSD 7.0 (gcc 4.2.1) ではコンパイル通るよ。動かすと Segmentation fault になるけど、ちゃんと動いちゃう処理系もあると思うよ。だから、コンパイルして動かしてないだろ!といういのは言いすぎだと思うが。
nice!(0)  コメント(5)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 5

noritan

$ gcc -W -O x.c
x.c: In function `main':
x.c:4: warning: `n' might be used uninitialized in this function

gccは、オプションをつけないと、Warningを出さないみたいです。
それはそれで、問題かも。

by noritan (2008-03-31 09:44) 

wakatono

最初のうちに掲載されてたコードは、stdio.hの指定が「タグ」と勘違いされてて見えませんでした。
なので、単にコピペしただけだとコンパイルすら出来ませんw
by wakatono (2008-03-31 13:30) 

nakagami

noritan さん
Cコンパイラがシンタックスチェックをほとんどしないで、 lint というツールが別に必要だった時代を考えたら、Warning 出ないくらい大した問題じゃないですよ。
by nakagami (2008-03-31 17:05) 

nakagami

wakatonoさん
>・・・stdio.hの指定が「タグ」と勘違いされてて見えませんでした。
おーっ、なるほど!ブクマコメントの意味がようやくわかりました。
それはそれで(記事ではなくシステムに)問題がありそうな。
by nakagami (2008-03-31 17:14) 

hoacits

negative side effects of cialis https://acialisd.com/ - Cialis Cephalexin 500 Mg Side Effects <a href=https://acialisd.com/#>where can i buy cialis on line</a> nerve pain shooting cialis
by hoacits (2020-07-05 13:12) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0