*C言語* 〜33時限目〜 配列要素のアドレスを知る・・・
〜目次〜
配列要素のアドレスをし知る
C言語では、
ポインタと配列の密接な関係を利用した、
コードを作成する場合があります。
アドレス演算子&を使って、
配列の各要素のアドレスを調べていくことにします。
配列とはメモリの中に値を格納するための仕組みでした。
変数と同じように、
配列の各要素に、&演算子を使うことができます。
つまり、配列の要素に&演算子を使うことで、
その要素の値が格納されているアドレスを知ることができます。
例として以下のようにします。
&test[0] (配列の先頭要素のアドレス)
&test[1] (配列の2番目の要素のアドレス)
実際に以下のコードを入力してみてみます。
sample71.c
ーsample71の実行画面ー
test[0]の値は99です。
test[0]のアドレスは0x7ffeeae937a0です
test[1]の値は70です。
test[1]のアドレスは0x7ffeeae937a4です。
変数と同じように、
それぞれの配列要素に&演算子をつけることで、
要素のアドレスが出力できています。
配列はメモリ上に連続して、
値を格納する箱が並んでいるイメージです。
配列名の仕組みについて
配列は、特別な書き方で配列要素のアドレスをあらわすことができます。
「配列名」を記述しただけで、
配列の先頭要素のアドレス
をあらわすことができるのです。
[ ]や添字をつけてはいけません。
&演算子も不必要です。
実際にコードを入力して確かめてみます。
sample72.c
ーsample72の実行画面ー
test[0]の値は99です。
test[0]のアドレスは0x7ffee258e7a0です
testの値は0x7ffee258e7a0です。 (配列の先頭要素のアドレスになっている)
実行画面をみてわかる通りに、
「test」の値が先頭要素である、「test[0]」の値と同じになっています。
配列名だけで、配列の先頭要素のアドレスを知ることができる
ということを確認できました。
配列名から先頭要素の値を知る
配列名が先頭要素のアドレスをあらわしていることから、
配列名は、配列の先頭要素のアドレスを格納している
ポインタと同じはたらきをもつ
ということが言えます。
配列名は、配列の先頭要素をさすポインタのように、
使うことができるのです。
なので、
ポインタに間接参照演算子*を使うことで、
それがさし示している変数の値を知ることができました。
配列名testに*をつけた場合にも、
同じように配列の先頭要素であるtest[0]の値を、
あらわすことができます。
実際に以下のコードを入力してみてみます。
sample73.c
ーsample73の実行画面ー
test[0]の値は99です。
test[0]のアドレスは0x7ffee97997a0です
testの値は0x7ffee97997a0です。
つまり*testの値は99です。
このように、
配列名は先頭要素のアドレスを格納したポインタと、
同じ扱いができるようになっています。
次回はポインタ演算の仕組みについてから、
学んでいきます。
〜END〜