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バイト」のコピー
これが、処理速度アップにつながるらしい。

めも:開発時間短縮

短縮されるらしいけど、とりあえず理解することを放棄する。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい