研修
今日は、C言語でいまいち感覚のつかめなかったポインタの勉強です。
「ポインタがどうなって…だから、アドレスがこうなって(@_@)???」
といつもはなってしまうところなのですが、
呼び出し側:アドレス(&a)--- 変数( a) ← ↓ | ↑ →引渡し→↓ (直接参照) ↑←参照← ↓ | ↑ 受け取り側: → 変数( b) ---ポインタ(*b)
この図のおかげでかなり関係が理解できました。
つまり、普段は変数を直接受け取る場合は普通に変数の中身(呼び出し側の a)を渡し、それを受け取り側が「変数b」としてそのまま使うということです。
そして、問題のa自体を引き渡したいときはどうすればいいかというと、このままでは中身だけしか渡せないので、呼び出し側はその場所(つまり変数 aのアドレス&a)を渡すわけです。さて、受け取り側はどうするかというと、変数 bとして受け取ったものはアドレスであるので、その中身を使うときはポインタの内容(つまり、変数 b=アドレスの中身*b)を見ればいいのです。この場合は(変数 b=アドレス&a)→(変数 a=ポインタ*b)となっているのある。このとき、bはポインタとして使っているので、受け取り側の引数宣言は*bとなります。(もちろん、渡されたものはbの中に格納されます。)
この概念を押さえればポインタをかなり使いこなせるのではないでしょうか?