C言語のポインター
2012/08/07
知りたいのは「ポインターの使い方」じゃなくて、「ポインター」について。
よって、以下に「ポインターの使い方」には一切触れていない。
ポインターとは
ポインターとは、「変数のアドレスを記憶する変数」のこと。
初心者のためのポイント学習C言語「第10章 ポインタ」が理解しやすかった。
めも
以下は、自分の分かる単語に置き換えた内容。
変数は部屋みたいなものっぽい。
「変数の値」が「部屋の住人」。
「変数のアドレス」が「部屋の場所(住所・建物名・階数、端から何番目等)」。
「変数名」が「部屋番号や部屋の名前(「椿の間」とか)」。
「変数の値」が「部屋の住人」。
「変数のアドレス」が「部屋の場所(住所・建物名・階数、端から何番目等)」。
「変数名」が「部屋番号や部屋の名前(「椿の間」とか)」。
この「変数のアドレス」を格納するための変数が「ポインター」になる。
ポインターを使う目的
ポインターを使う目的は「省メモリ化・処理速度アップ・開発時間短縮」のため。
「C 言語にポインタがある理由は省メモリ化・高速化・開発作業の省力化ですAdd Star」が理解しやすかった。
めも:省メモリ化
変数を別の変数にコピーするとその分、メモリが必要になる。
それを防ぐことが省メモリ化につながる。
たとえば、変数「a, b, c, d」があり、別に出力用の変数「p」がある。
条件によっては「p=a」だったり「p=b」だったりする。
ポインターを使わない場合、変数「a, b, c, d, p」の5つ分のメモリが必要。
型にもよるけど「BigData」だったら「100キロバイト」が5つ。
合計500,000byte(500kbyte)
ポインターを使う場合、変数「a, b, c, d」とアドレス保存用の「p」の5つ分のメモリが必要。
ただし、アドレス保存用の「p」はアドレスの保存なので「4バイト」程度。
合計400,004byte(約400kbyte)
めも:処理速度アップ
上記の流れだと
・ポインターを使わない場合、「100キロバイト」のコピー
・ポインターを使う場合、「4バイト」のコピー
これが、処理速度アップにつながるらしい。
めも:開発時間短縮
短縮されるらしいけど、とりあえず理解することを放棄する。