ポインタを使用することにより消費メモリーの節約、無駄な記述の削減、処理速度の向上に繋がるメリットがあります。
ポインタと配列は相性が良く1つのポインタ変数で配列のすべての要素の値を取得し、配列のすべての要素をダイレクトに操作することが出来ます。
変数と同じように配列にもアドレスがあります。
配列の各要素に「& 演算子」をつけることでそれぞれのアドレスを知ることが出来ます。
例1:
int test [3];
& test[0] → test
& test[1]
& test[2]
配列の先頭要素においては配列名を記述するだけで先頭のアドレスを知ることが出来ます。
ポインタに配列のアドレスを代入させることで、アドレス経由で配列の各要素にアクセスできるようになります。
アクセス方法として2パターンあります。
① 配列と同じように[ ]を使用しアクセス
② * (間接参照演算子)を使用しアクセス
例2:
int *p ← int型ポインタp
p = test ← 例1の配列testの先頭アドレスを代入
① ②
p[0] = *p pが指している要素の値
p[1] = *(p+1) pが指している要素の1つ先の要素の値
p[2] = *(p+2) pが指している要素の2つ先の要素の値
また、配列名は先頭要素のアドレスを持つことからポインタのように使うことが出来ます。
例3:
*test ← testが指している要素の値
*(test + 1) ← testが指している要素の1つ先の要素の値
*(test + 2) ← testが指している要素の2つ先の要素の値
このように配列とポインタは密接な関係があることが分かります。
<難易度>
配列、ポインタ、アドレスについての理解が求められる為、難易度は高いです。
<感想・アドバイス>
配列とポインタの基本を理解した上で、アドレスが何を指しているのかをイメージすることを心掛けましょう。