ポインタ、メモリについて初心者の自分なりに解釈したことをまとめてみました。
##ポインタ
まず「ポインタとは」と調べた時、下記のように説明しているサイトがあった。
ポインタとは、何かの位置を指し示すための仕組みや道具などのこと。プログラミングでは、変数や関数などが置かれたメインメモリ上の番地などを格納する特殊な変数のことをポインタという。
正直、初心者の自分では何を行っているのかほとんど理解できなかった。
要するに、なりすましができる変数のこと。
例えば、東京都世田谷区OO-OOに両親男1人の3人家族が住んでいたとする。
値を変数に代入するのはこの家族の構成をコピーするようなもの。
つまり、大阪府大阪市OO-OOに両親男1人という家族構成の家族が住んでいるという設定になる。
新しい変数(大阪の家族)に変更を加えた時、大阪府大阪市OO-OOに女の子が一人増えたというような変更になる。
ポインタ変数の場合、アドレスを代入するので、新しい変数には東京都世田谷区OO-OOを代入し、そこには両親男1人の3人家族が住んでいるということがわかるというような仕組みになる。
ポインタ変数とただの変数の代入は同じように見えて異なる。
下記のようなコードに置き換えてみる。
int a = 3;
int b = 0;
int *p = NULL; //整数型のポインタ変数
p = &a; //これはポインタ変数pが変数aになりすますということ、値ではなくアドレスを代入している
b = a;
この場合、pとbの値は一緒だが、アドレスが異なる。
この場合、*pとbの値は一緒だが、アドレスが異なる。
つまり、家族構成は同じだが、pは東京、bは大阪ですよ、ということになる。
##メモリ
メモリというのは作業台のようなもの。
例えば、図書館に行って勉強する場合を想像する。
小さな机だと、様々な参考書を置くスペースがないので一回一回本棚に直して取りに行くというような作業をしなければいけなくなり、効率が悪い。
しかし、大きな勉強机があった場合、参考書を空いているスペースに置いていけば探しに行く時間も直しに行く時間も省くことができる。
この例をPCに置き換えると、机→メモリ、勉強→処理、というように置き換えられる。
メモリが大きければ、効率の良い処理を行うことができる。
ただし、机の上に参考書を置きすぎると勉強をするスペースがなくなってしまい、参考書の上で勉強するというようなことになってしまう。
PCも同じでメモリには制限があり、制限を超えてしまうと、一気に処理効率が低下してしまう。
<メモ>
IT用語を説明する際、横文字も多く知らない単語ばかりで、説明の説明を調べていかなければいけないことがよくあると思う。
わかりやすく説明をするときは擬人化した方が良い。
###参照サイト
Udemy 1週間で身につくC/C++言語
ポインタとは