TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜29時限目〜 アドレスの仕組みについて・・・

〜目次〜

 

 

アドレスの仕組みについて

変数の値がコンピュータのメモリに記憶されることは、

すでに学びました。

C言語には、メモリの位置を直接あらわす

「ポインタ」という機能が用意されています。

ポインタはなかなかわかりにくい仕組みなので、

頑張って覚えていきます。

まずはじめに、メモリの位置を直接あらわす

アドレス(address:番地)

について学んでいきます。

C言語での「アドレス」とは、

メモリの場所を直接あらわすために使われる、

メモリ上の「住所」のことです。

 

変数のアドレスについて

しかし、「メモリ」や「アドレス」といっても、

イメージできないと思います。

変数の値が格納されているメモリのアドレスを知るには、

アドレス演算子(address operator)

の&を使います。

以下のようにして使います。

&変数名   (変数のアドレスをあらわします)

実際にアドレスを出力してみます。

以下のコードを入力してみてください。

sample64.c

f:id:YuyaTerayama:20180911022257p:plainーsample64の実行画面ー

変数aの値は7です。

変数aのアドレスは0x7ffeee3877b8です。

「&a」によって、

変数aの値がメモリ上の「どの位置」に記憶されているのか

を知ることができます。

アドレスを出力するには、

変換仕様として%pを使います。

0x7ffeee3877b8」という値が出力されていますが、

これが「アドレス」になります。

0x7ffeee3877b8というメモリの位置に格納されているということです。

これは実行状況により変化するので、

違った値が出力されると思います。

ここで大事なのは、

アドレスを使って、メモリ上の位置をあらわすことができる

ということなのです。

 

ポインタの仕組みについて

アドレスを使うコードを記述するために、

アドレスを格納する特殊な変数

を学んでいきます。

この変数のことを、

ポインタ(pointer)

と呼びます。

ポインタの使い方は原則として、

これまでの変数と同じです。

ポインタも使う前に「pA」などという名前を決めて宣言します。

ただし、ポインタをあらわす変数には、

「*」という記号をつけて宣言することになっています。

ポインタの宣言は以下の通りです。

型名 *ポインタ名;

実際にポインタに何かアドレスを格納する、

プログラムを入力してみます。

sample65.c

f:id:YuyaTerayama:20180911023505p:plainーsample65の実行画面ー

変数aの値は7です。

変数aのアドレスは0x7ffeed4eb7b8です。

ポインタpAの値は0x7ffeed4eb7b8です。

8行目でポインタpAに変数aのアドレスを、

格納するという作業ができています。

ポインタpAの値として出力される値は、

変数aのアドレスである、&aと同じになっています。

変数aとポインタpAの間には何かしらの「関係」ができた

と見ることもできます。

この「関係」のことを、

pAは変数aをさす

などといったりします。

変わった言い方ですが、

pAの値が、変数aの場所をさし示すようになった

と考えるとイメージしやすくなります。

 

今回は少し短いですが、

ここまでになります。

次回からポインタについてさらに詳しくやっていきます。

 

〜END〜