next up previous contents
Next: ポインタによる配列要素へのアクセス Up: ポインタ Previous: ポインタ   Contents

ポインタとは

C言語では、 ポインタという表現が最も使われる用語の1つである。 また、C言語をマスターできるかどうかは、ポインタを理解したかどうかに大きく依存する。 ポインタとは、アセンブラでいうところのアドレス(メモリ上の格納番地)にあたる。 従って、ポインタを使うとメモリアドレス(番地)を介して データにアクセスできるということである。 データへのアクセスが速く行える反面、 正しいメモリアドレスを指示しなかった場合には、 プログラムが異常終了したり、間違った値を示すことがある。 C言語では、配列の要素へのアクセスをポインタによって行う方法がよく用いられる。

例えば、実数の1次元配列変数(変数名 fdata)のメモリ上の番地は、 仮に先頭のアドレスが0x0000833Dとすれば、 実数は32ビット(4バイト)のメモリ長なので、各要素のメモリ番地は下記のようになる。


番地 要素
0x0000833D fdata[0]
0x00008341 fdata[1]
0x00008345 fdata[2]

上記のメモリ番地は、実行時に定まるものなので、実行する度に異なるのが通常である。 ただし、配列の各要素間のメモリ番地の差は、そのデータの型の分だけになる

配列の要素アドレスは、要素を表現した先頭に&を付け、次のように表現する。


\begin{table}
\verb*+&変数名[要素番号]+
\end{table}

前述のfdateの例では、各要素の先頭に&をつけた値がメモリ番地になる。


&fdata[0] 0x0000833D
&fdata[1] 0x00008341
&fdata[2] 0x00008345

以下、メモリ番地を表示する簡単なプログラムを示す。


#include <stdio.h>
void main(){
float fdata[3];
int i;
for(i=0; i < 3; i++){
printf(”&fdata[%d] = %x \n”, i, &fdata[i]);
}
}



kojima hirohisa
2001-03-05