いらっしゃいませ。
こちらでは、私の日々の記録や思っていることを書いております。
本ブログについての重要事項は[広報モード]に記載されておりますので、
広報モードカテゴリの内容は必ずご覧ください。

また、はてなダイアリー・はてなブログによるリンクより辿って来た方は、
ホームページはこちらですので、
そちらもご覧ください。
一般的な雑談やご要望などはホームページにある「カフェ」(掲示板)にお願いします。
日記に対するコメントは一番近い話題が書かれている日のトピックスのコメント欄に、お願いします。
触れてある内容に近い話題であるならそちらに書き込んでも構いませんが、日記にコメントしていいかどうかわからない場合は、掲示板に書いても構いません。
ホームページにはゲストブックもございますので、足跡をよろしくお願いいたします。

記事内の動画を再生する際には、最新の QuickTime Player(無料)が必要です。

研修

今日は、C言語でいまいち感覚のつかめなかったポインタの勉強です。
「ポインタがどうなって…だから、アドレスがこうなって(@_@)???」
といつもはなってしまうところなのですが、

呼び出し側:アドレス(&a)---   変数( a)  ←
         ↓        |    ↑
         →引渡し→↓ (直接参照) ↑←参照←
              ↓   |              ↑
受け取り側:        → 変数( b) ---ポインタ(*b)


この図のおかげでかなり関係が理解できました。
つまり、普段は変数を直接受け取る場合は普通に変数の中身(呼び出し側の a)を渡し、それを受け取り側が「変数b」としてそのまま使うということです。
そして、問題のa自体を引き渡したいときはどうすればいいかというと、このままでは中身だけしか渡せないので、呼び出し側はその場所(つまり変数 aのアドレス&a)を渡すわけです。さて、受け取り側はどうするかというと、変数 bとして受け取ったものはアドレスであるので、その中身を使うときはポインタの内容(つまり、変数 b=アドレスの中身*b)を見ればいいのです。この場合は(変数 b=アドレス&a)→(変数 a=ポインタ*b)となっているのある。このとき、bはポインタとして使っているので、受け取り側の引数宣言は*bとなります。(もちろん、渡されたものはbの中に格納されます。)


この概念を押さえればポインタをかなり使いこなせるのではないでしょうか?