8350x.net

主に備忘録

【備忘録】ポインタの基本中の基本

time 2016/12/02

C言語のポインタについて最初の最初から備忘録としてまとめていきます。この記事は随時追記していきます。備忘録ですのでわかりにくいと思いますが、そこはご容赦ください。

そもそもポインタとは

ポインタはC言語を理解する上で欠かせない重要な存在。しかしここでつまずく学習者も多い。ここでは自分なりにポインタを勉強して理解したことを自分なりにまとめた。

ポインタとは簡単に言うと変数を格納するメモリのアドレス(番地)である。

実際には他にもあるがそれは追々。

zu10-3
引用:http://www9.plala.or.jp/sgwr-t/c/sec10.html  (2016年12月2日閲覧)

変数などを宣言するとメモリ上に領域が確保される。例えばint型の変数は4バイトのメモリ領域を確保するし、double型は8バイトの領域を確保する。その宣言した変数が格納されているメモリの番地を示すのがポインタである。

ポインタは変数の場所を表す変数と考えるとわかりやすい。

ポインタのコード内での扱い方

まず、ポインタを宣言する。

ポインタを宣言する時は名前の前に*をつける。

 

その後変数を宣言する。

 

その後、ポインタに変数variableのアドレスを代入する。

ここではポインタpointerの前に*を付けないことに注意する。

また変数variableの前に&がついているが、この&は変数variableのアドレス(メモリ上で確保されている領域の番地)を返すものである。

 

ポインタpointerが指し示す変数に10を代入する。

*はポインタpointerが指し示す変数を返すものである。ちなみに上のコードは

と同じ意味である。

 

また、ポインタをprintfする時には変換指定子(int型変数の%dみたいなやつ)は%pで表す。

まとめ

1

pは変数vのメモリ上の場所を示すポインタであり、&vも変数vのメモリ上の場所を示すポインタである。よってこれを実行すると2つのprintfの結果は同じである。

2

*pはポインタpを指し示す変数であり、vもポインタpを指し示す変数である。よってこれを実行すると2つ目のprintfの出力結果が10になる。

down

コメントする




CAPTCHA


*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください