現在研修で新入社員にC言語を教えてるのですが、やっぱポインタは鬼門。 分かってしまえばどーってことないのだけど、あの特殊な文法は迷わせるよね。 特にポインタ変数を宣言するときは int *a;って宣言して で、「ポインタはアドレスだよ」と習うので、 aのアドレスを表示させようとして printf("%p", *a); // ERRORと書いてコンパイラに怒られてしまってどうしようもなくなってしまったり。 ただ文法もそうなのだけど、それ以上に概念がつかめない人が多いこともわかった。 特に今は大学で「プログラムやってました!」って人も MATLABでシミュレーションだったりWeb系の言語だったりで メモリを叩いたりする経験がないことが多いので いきなり「これがメモリの中身で、そのなかにアドレスが振られててさー」と言っても イメージすることが難しいみたい。 で、どう説明するものかお風呂の中でボー
![僕なりにポインタの説明を考えてみた。 - what you see is what you get](https://cdn-ak-scissors.b.st-hatena.com/image/square/e2662420fd7f7ad62b474612b7452ca664cc5170/height=288;version=1;width=512/http%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fk%2Fkeisukekatsuki%2F20110518%2F20110518050001.png)