C言語の配列とポインタについて
C言語の配列とポインタについてわからないことがあります。
以下のソース例は、10個の値の平均値を求めるプログラムです。
コメントを挟んだ部分が疑問点です。
【ソース例】
#include <stdio.h>
int getaverage(int *data);
int main(void)
{
int average,array[10] = {15,78,98,15,98,85,17,35,42,15};
average = getaverage(array);
printf("%d\n",average);
return 0;
}
int getaverage(int *data)
{
int i,average = 0;
for (i = 0;i < 10;i++) {
average += data[i]; /*ポインタ変数なのに? */
}
return average / 10;
}
【実行例】
49
このdata[i]はポインタ変数であり、
配列arrayの i 番目の要素であるarray[i]の"アドレス"
が代入されているはずだと思うのですが、
なぜ通常の整数変数であるaverageと数値計算が出来、正しい結果が出たのでしょうか?
あたかもdata[i]には、
array[i]の"アドレス"ではなく、
array[i]の"メモリの中身"が代入されているようです。
どういうことでしょうか?
回答よろしくお願いします。
お礼
回答ありがとうございます(*_*)