【C言語】配列とポインタ

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

画像1

[確認]

画像2

(実行結果)https://paiza.io/projects/xIUkTtzuXYrX0VmB4dGVng

変数と同じようにそれぞれの配列要素に&演算子を付けることで、要素のアドレスが出力できます


配列名の仕組みを知る

配列では「配列名」を記述しただけでも配列の先頭要素のアドレスを表すことができます

画像3

[確認]

画像4

(実行結果)https://paiza.io/projects/UY9gZY25CrTuaT_YglyJ3w


配列名から先頭要素のアドレスを知る

先ほどの内容から配列名は配列の先頭要素のアドレスを格納しているポインタと同じ働きをもつということが言えます。つまり配列名に間接参照演算子(*)をつけた場合にも配列の先頭要素の値をあらわすことができます。

画像5

[確認]

画像6

(実行結果)https://paiza.io/projects/MzlTdO6Oc3nrmtLfO9gm8w

[point!]
test、&test[0]・・・配列の先頭アドレス
*test、test[0]・・・配列の先頭要素の値


ポインタの演算のしくみを知る

ポインタが配列と密接な関係を持つときポインタに対して次のような演算を行うことができます。
※p、p1、p2をポインタとする

(演算子)(ポインタ演算の例)
 +   p+1    pが指している要素の次の要素のアドレスを得る
 ー   pー1    pが指している要素の次の要素のアドレスを得る
     p1-p2   p1とp2の間の要素数を得る
 ++  p++    pが指している次の要素のアドレスを得る
 --  p--    pが指している前の要素のアドレスを得る

画像7

[確認]

画像8

(実行結果)https://paiza.io/projects/DHyUvJ_l_I3-GK_4rgrkCg

※配列名を使うときの注意
配列名であらわされるポインタには、ほかの変数のアドレスを代入することができない


配列を引数として扱う

[確認]

画像9

(実行結果)※入力が80、60、55、22、75のときhttps://paiza.io/projects/BiTZv6i0KtC4MJcd6M9ESg

このように引数として配列を使用するときは、配列の先頭要素のアドレスを実引数として渡す。


ポインタを引数として使う

実引数として配列の先頭アドレスを渡すとき、仮引数としてポインタを記述できる。

画像10

[確認]

画像11

(実行結果)※入力が80、60、55、22、75のとき
https://paiza.io/projects/WdUxap-jpzMxAymkk0CLCA

ポインタに[]演算子を使う

画像12

[確認]

画像13

(実行結果)※※入力が80、60、55、22、75のときhttps://paiza.io/projects/E09M4Fog72_tlUlX4m_fZA

繰り返し文の中でpT [ i ]という表記を使うことによって、ポインタpTがさす配列の要素を順番に出力しています。このようにポインタと配列に関係がある場合は、ポインタと配列を同じように扱うことができるのです。


(未完成コード)

https://paiza.io/projects/9529I7VmuiyqXX939l_23g

よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただいております!