皆さんこんばんにちは、ユウです。
今回はC言語のポインタについて紹介していきます。
ポインタは個人的に、C言語の基礎の中で一番ややこしいと感じている部分です。
ですので、今回の記事はゆっくりめに読んでいってほしいと思います。
今回もコードはコピペでOKです。
ただし、ファイルを作って必ずコードを実行するようにして下さい。
以前の記事は以下にリンクを張っているので、興味がある方は足を運んで下さい。
それでは、はじめて行きたいと思います。
ポインタについて
実行結果
出力される値は異なっていて大丈夫です。
<解説>
ここではコードだけではなく、ポインタ自体の説明を行っていきたいと思います。
aやbなどの変数は変数名とデータ型の情報を持ち、メモリに保存されます。
メモリとは、コンピュータ上で数値や文字などの値を保存しておく装置です。
そして、アドレスとはメモリ上のどこに保存されているかを指し示す番地となります。
このアドレスは、&(アドレス)演算子と呼ばれるものを使用することで、アドレスを確認する事ができます。
今回の私の実行結果は上記のようになっていますが、皆さんとメモリ環境は違うので値は異なるかと思います。
ですが、基本的に16進数で表記されるかと思います。
データ型は種類により、大きさが異なります。
int 型は2バイト、float 型は4バイト、double型は8バイトといった感じです。
当然、この大きさが大きいほどメモリを占める割合は大きくなります。
ポインタ変数
実行結果
<解説>
7行目・・・ポインタ変数の宣言
ポインタは変数と同様に、あらかじめ指定しておく必要があります。
変数と異なる部分は前に「*」がつくことです。
「*」は *(間接参照)演算子というものです。
ポインタとは、ある変数に格納されているアドレスを記憶しておくための変数です。
この「*」を用いることにより、ポインタに格納されているアドレスから、そこに格納されている変数の値を所得できます。
9、10行目・・・ポインタ変数に変数のアドレスを代入
a,bのアドレスをポインタ変数に代入します。
ここで代入することで、aとbのそれぞれが2つ存在しているようになります。
aとaptr、bとbptrといった感じで、これらはそれぞれ同じアドレスを持っているということになります。
12行目・・・ポインタ変数による計算
「*」でポインタ変数に格納されている値を取り出しています。
9,10行目でaptrにはaのアドレスが、bptrにはbのアドレスが代入されています。
このアドレスの値を参照しているので、aptrはaと同じ値をもちbptrはbと同じ値になります。
ですので、ここではaptrには1200,bptrには800が代入されています。
最後に
今回はC言語のポインタについて紹介してきました。
ポインタはメモリについて少し理解しないと難しい面があります。
ですが、ポインタを使う事で、関数などで変数のアドレスを引数として渡すことができたりなどします。
覚えると意外と楽に使えるのでぜひ、覚えるようにして下さい!
今回はこれで以上となります。
最後まで読んでいただきありがとうございました!
C言語学習についてまとめている記事があるので、そちらの方も見て下さると嬉しいです。