float *fp, fdata[3]; |
そして、次のようにしてポインタへ配列の先頭アドレスを代入する。
fp = &fdata[0]; |
fp = fdata; |
ポインタ変数に配列の先頭アドレスを代入すると、それ以降は配列要素fdata[0]の値は、
ポインタ*dpで参照することができる。
つまり、ポインタの先頭に*
を付けると実際の値になるわけである。
以下、同様に、fdata[1]. fdata[2]の値は、*(dp+1), *(dp+2)で参照することができる。
この表記から、ポインタは、インクリメント、デクリメント可能であることが類推される。
事実、可能であり、その場合には、ポインタは、要素番号が1つ大きい、
小さい要素のメモリ番地を示すことになる。
具体例として、メモリ番地を表示する先のプログラムをポインタを使って書き換えてみると、
以下のようになる。
#include <stdio.h> |
void main(){ |
float *fp, fdata[3]; |
for(fp = fdata, i=0; i < 3; i++, fp++){ |
printf(”&fdata[%d] = %x \n”, i, fp); |
} |
} |
上記の例では、ポインタの初期化処理とインクリメント処理を、for文の中で行っている。 このようなこともC言語では可能である。