ポインタ

ZDNetのポインタ解説記事で勘違い (http://slashdot.jp/developers/08/04/01/0451222.shtml)

元ネタ->C/C++のポインタの機能--変数の場所(アドレス)(http://builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20370255,00.htm)
大笑い。いや「これはひどい」か(笑)。
エイプリルフールかと思ったら3/27の記事だ。
ポインタの指す「実体」の領域を考慮していないっつーのは、初心者レベルのミスだなぁ。
少なくとも、人に講釈垂れる人の書くコードじゃないわな。
修正されそうなので(すでに1ページ目は修正済みらしい)、ここに保存。


#include

int main( void ) {
int *n;
scanf( "%d", n ); /* *nの値をキーボードなどから入力(Enterで終了) */
printf( "%d\n", *n ); /* nの値を出力 */
return 0;
}

これ、間違い探しの問題として使えば、入門者の教育用に使えるよな(苦笑)。
しかし、こんな記事を頼まれてもいないのに校正してあげているコメント欄の中の人達は偉いなぁ。コメント欄の人に原稿料を払うべきだな(笑)。


で、最近は C のコードは書いてないんだけどイマドキの IDE*1 ならこういうコードに警告を出さないのかな?*2
実体の領域確保と参照の関係を意識する事は C だけじゃなくて Java とか C# とかのポインタ変数が無い*3言語でも重要なんだけど。

*1:統合開発環境

*2:昔は全く警告もエラーも出無しでビルド出来た。

*3:とされているけど、本当は全てのオブジェクト変数はポインタだ