【C言語】配列とポインタ
配列要素のアドレスを知る
[確認]
(実行結果)https://paiza.io/projects/xIUkTtzuXYrX0VmB4dGVng
変数と同じようにそれぞれの配列要素に&演算子を付けることで、要素のアドレスが出力できます
配列名の仕組みを知る
配列では「配列名」を記述しただけでも配列の先頭要素のアドレスを表すことができます
[確認]
(実行結果)https://paiza.io/projects/UY9gZY25CrTuaT_YglyJ3w
配列名から先頭要素のアドレスを知る
先ほどの内容から配列名は配列の先頭要素のアドレスを格納しているポインタと同じ働きをもつということが言えます。つまり配列名に間接参照演算子(*)をつけた場合にも配列の先頭要素の値をあらわすことができます。
[確認]
(実行結果)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が指している前の要素のアドレスを得る
[確認]
(実行結果)https://paiza.io/projects/DHyUvJ_l_I3-GK_4rgrkCg
※配列名を使うときの注意
配列名であらわされるポインタには、ほかの変数のアドレスを代入することができない
配列を引数として扱う
[確認]
(実行結果)※入力が80、60、55、22、75のときhttps://paiza.io/projects/BiTZv6i0KtC4MJcd6M9ESg
このように引数として配列を使用するときは、配列の先頭要素のアドレスを実引数として渡す。
ポインタを引数として使う
実引数として配列の先頭アドレスを渡すとき、仮引数としてポインタを記述できる。
[確認]
(実行結果)※入力が80、60、55、22、75のとき
https://paiza.io/projects/WdUxap-jpzMxAymkk0CLCA
ポインタに[]演算子を使う
[確認]
(実行結果)※※入力が80、60、55、22、75のときhttps://paiza.io/projects/E09M4Fog72_tlUlX4m_fZA
繰り返し文の中でpT [ i ]という表記を使うことによって、ポインタpTがさす配列の要素を順番に出力しています。このようにポインタと配列に関係がある場合は、ポインタと配列を同じように扱うことができるのです。
(未完成コード)
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただいております!