お前みたいなやつがいるから!

| | コメント(1) | トラックバック(0)

こっちは週末をつぶして、関数の長さが最低1000行からなるロジックにワークアラウンドを塗り重ねたようなプログラムをメンテするはめになる訳で

C/C++のポインタの機能--参照渡しのような処理

いやー、ここまで勘違いして解説記事をかける人も珍しいんじゃないですかね?。

int *n;
*n = 5; /* ポインタ変数nに値5を代入 */

いや、代入出来ないから。nが未初期化だから、メモリのどこさしてるか分かりませんって。
とか思っていたら

nが示しているのは、その値を記憶させるメモリ上のアドレスだ。それ自体は自動的に設定されるため、開発者が具体的なアドレスを設定する必要はない。

って解説してますね。
自動的に設定されません。この例だとnは自動変数だから宣言しただけなら不定値。開発者が具体的なアドレスを設定しないと、どこのメモリを書き換えるかは運任せ。
まさかとは思うけど「自動変数」ってのからそんな妄想を膨らませたんですかね?

解説の順番もまず変数があって、そのあとその変数のアドレスを取るためのポインタの解説ってなる気がするんですけど、この記事だと反対なんですよね。
なんかまずポインタの解説ありきで書いたような感じです。

例に挙げられているプログラムはコンパイルすれば「未初期化メモリの参照」あたりの警告が出るし、実行すればよっぽど運がよくないかぎり不正終了するはずなんですけど、やってないんでしょうねー。

やってないと言えばその昔CWMLで、実態がCGrafPort のGrafPortでも本物のGrafPortであってもgraPtr->portBitsをQuickDrawはちゃんと処理するって話題のときに、「構造体みてわかりましたー」ってことで(Bitmap*)&(CGrafPtr->pixMapHandle)とするサンプルを出したら、ここをGetPortPixMapだかで置き換えて動かなくて「ちゃんと試しましたか?」みたいな事をいってきたのがいたのを思い出しました。そのときは他の人が適当に答えてたので、なんの反論もせずに終わってましたけど
いまだにムカつきます。だから今言う。勝手に変更して動かないとかほざくな、と。

それはさておき、これ署名入りの記事なんですが今後仕事が減らないか、人ごとながら心配です。

475611895Xプログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series)
Bjarne Stroustrup 長尾 高弘
アジソンウェスレイパブリッシャーズジャパン 1998-12

by G-Tools

トラックバック(0)

このブログ記事を参照しているブログ一覧: お前みたいなやつがいるから!

このブログ記事に対するトラックバックURL: http://hogelab.net/mt4/mt-tb.cgi/1707

コメント(1)

KOBA Author Profile Page:

みてきた

・読者から突っ込み
・編集部員と著者、協議の上「誤解を招く表現があった」と記事を修正
・問題の箇所が直ってない <<< いまここ

アチャー

コメントする

このブログ記事について

このページは、nakが2008年3月31日 16:06に書いたブログ記事です。

ひとつ前のブログ記事は「あれがAirだ」です。

次のブログ記事は「APC007を試すの巻」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

    
Powered by Movable Type 4.01a