TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜33時限目〜 配列要素のアドレスを知る・・・

〜目次〜

 

 

 

配列要素のアドレスをし知る

C言語では、

ポインタと配列の密接な関係を利用した、

コードを作成する場合があります。

アドレス演算子&を使って、

配列の各要素のアドレスを調べていくことにします。

配列とはメモリの中に値を格納するための仕組みでした。

変数と同じように、

配列の各要素に、&演算子を使うことができます。

つまり、配列の要素に&演算子を使うことで、

その要素の値が格納されているアドレスを知ることができます。

例として以下のようにします。

&test[0]    (配列の先頭要素のアドレス)

&test[1]    (配列の2番目の要素のアドレス)

実際に以下のコードを入力してみてみます。

sample71.c

f:id:YuyaTerayama:20180911151831p:plainーsample71の実行画面ー

test[0]の値は99です。

test[0]のアドレスは0x7ffeeae937a0です

test[1]の値は70です。

test[1]のアドレスは0x7ffeeae937a4です。

変数と同じように、

それぞれの配列要素に&演算子をつけることで、

要素のアドレスが出力できています。

配列はメモリ上に連続して、

値を格納する箱が並んでいるイメージです。

 

配列名の仕組みについて

配列は、特別な書き方で配列要素のアドレスをあらわすことができます。

「配列名」を記述しただけで、

配列の先頭要素のアドレス

をあらわすことができるのです。

[ ]や添字をつけてはいけません。

&演算子も不必要です。

実際にコードを入力して確かめてみます。

sample72.c

f:id:YuyaTerayama:20180911152318p:plainーsample72の実行画面ー

test[0]の値は99です。

test[0]のアドレスは0x7ffee258e7a0です

testの値は0x7ffee258e7a0です。   (配列の先頭要素のアドレスになっている)

実行画面をみてわかる通りに、

「test」の値が先頭要素である、「test[0]」の値と同じになっています。

配列名だけで、配列の先頭要素のアドレスを知ることができる

ということを確認できました。

 

配列名から先頭要素の値を知る

配列名が先頭要素のアドレスをあらわしていることから、

配列名は、配列の先頭要素のアドレスを格納している

ポインタと同じはたらきをもつ

ということが言えます。

配列名は、配列の先頭要素をさすポインタのように、

使うことができるのです。

なので、

ポインタに間接参照演算子*を使うことで、

それがさし示している変数の値を知ることができました。

配列名testに*をつけた場合にも、

同じように配列の先頭要素であるtest[0]の値を、

あらわすことができます。

実際に以下のコードを入力してみてみます。

sample73.c

f:id:YuyaTerayama:20180911152849p:plainーsample73の実行画面ー

test[0]の値は99です。

test[0]のアドレスは0x7ffee97997a0です

testの値は0x7ffee97997a0です。

つまり*testの値は99です。

このように、

配列名は先頭要素のアドレスを格納したポインタと、

同じ扱いができるようになっています。

 

次回はポインタ演算の仕組みについてから、

学んでいきます。

 

〜END〜