Page今回は小ネタでお送りします。ポインタの躓きやすい点の後半部分が何を問題にしているのか分からずしばらく悩んでしまった。頭が悪くてゴメンペコン。言語において「参照」のことは忘れよう。言語に「参照」は存在しない。言語ではお馴染みの)ポインタを使うわけだ1。したがって,コーディングを行う際はインスタンスの値とアドレッシングを常に頭に入れながら進めるとハマりにくい。分からないならコードを書いてみればいいのだ。最初に紹介した記事を参考に実際にコードを書いてみようか。内容を標準出力に出力する関数を返す。ポインタ型になっているのがポイントである(洒落ちゃったてへぺろ)。これを使って以下のコードを書いてみる。0x40a0e8などと出力される。型が暗黙的に変換されていることに注意してほしい。構文を使うとどうなるか。制御ブロックを追加して比較してみよう。}}これを実行するとこうなる。そのものではないことが分かる。ループの中で使い回されていていることも分かる。a.GenFunc()()}と実質的に同じなのだ2。}}の実行結果がどうなるか容易に想像がつくだろう。ループの中で上書きされているのである。0x40c140となる。0x40a0e8となる。言語の教科書と言ってもいいだろう。その筋の人々には「バイブル」と呼ばれる名著(当時は)。PA-APIv5)参照とポインタの決定的な違いは,参照は「機能」だがポインタは「値」である,という点であろう。値なのでポインタ自身をインスタンスとして表現し得るし「ポンタへのポインタ」みたいな記述もできる。この辺の感覚が掴めないと苦労するかもしれない。言語が全盛だった頃もポインタで躓く人は割といたからなぁ。