お前みたいなやつがいるから!
こっちは週末をつぶして、関数の長さが最低1000行からなるロジックにワークアラウンドを塗り重ねたようなプログラムをメンテするはめになる訳で
いやー、ここまで勘違いして解説記事をかける人も珍しいんじゃないですかね?。
int *n;
*n = 5; /* ポインタ変数nに値5を代入 */
いや、代入出来ないから。nが未初期化だから、メモリのどこさしてるか分かりませんって。
とか思っていたら
nが示しているのは、その値を記憶させるメモリ上のアドレスだ。それ自体は自動的に設定されるため、開発者が具体的なアドレスを設定する必要はない。
って解説してますね。
自動的に設定されません。この例だとnは自動変数だから宣言しただけなら不定値。開発者が具体的なアドレスを設定しないと、どこのメモリを書き換えるかは運任せ。
まさかとは思うけど「自動変数」ってのからそんな妄想を膨らませたんですかね?
解説の順番もまず変数があって、そのあとその変数のアドレスを取るためのポインタの解説ってなる気がするんですけど、この記事だと反対なんですよね。
なんかまずポインタの解説ありきで書いたような感じです。
例に挙げられているプログラムはコンパイルすれば「未初期化メモリの参照」あたりの警告が出るし、実行すればよっぽど運がよくないかぎり不正終了するはずなんですけど、やってないんでしょうねー。
やってないと言えばその昔CWMLで、実態がCGrafPort のGrafPortでも本物のGrafPortであってもgraPtr->portBitsをQuickDrawはちゃんと処理するって話題のときに、「構造体みてわかりましたー」ってことで(Bitmap*)&(CGrafPtr->pixMapHandle)とするサンプルを出したら、ここをGetPortPixMapだかで置き換えて動かなくて「ちゃんと試しましたか?」みたいな事をいってきたのがいたのを思い出しました。そのときは他の人が適当に答えてたので、なんの反論もせずに終わってましたけど
いまだにムカつきます。だから今言う。勝手に変更して動かないとかほざくな、と。
それはさておき、これ署名入りの記事なんですが今後仕事が減らないか、人ごとながら心配です。
![]() | プログラミング言語C++ (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series) Bjarne Stroustrup 長尾 高弘 アジソンウェスレイパブリッシャーズジャパン 1998-12 by G-Tools |
トラックバック(0)
このブログ記事を参照しているブログ一覧: お前みたいなやつがいるから!
このブログ記事に対するトラックバックURL: http://hogelab.net/mt4/mt-tb.cgi/1707


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