ポインタと配列
ポインタと配列は、相性がいいので、この組み合わせは、よく使われます。
配列をあらかじめ定義、初期化して、値を設定しておきます。 この配列の中の値を探したり、合計を出したり、平均値を出したり、 いろいろな使い方が出来ます。 配列のところでも、やりましたが、10日間の平均気温を出すプログラムを作ってみました。
#include <stdio.h>
float mean_tmp(int*, int); /* 関数の引数ポインタ・プロトタイプ宣言 */
int main( void)
{
/* 配列変数の初期化 */
int temp[10] = {30, 28, 25, 27, 32, 30, 28, 33, 26, 25};
int day;
day = sizeof(temp)/sizeof(int); /* 合計の日 */
float meantmp; /* 平均気温の変数 */
meantmp = mean_tmp(temp, day); /* 平均気温の計算 */
printf("平均気温=%0.2f", meantmp); /* 結果を画面出力 */
return 0;
}
/* 引数ポインタの関数定義・平均気温の計算 */
float mean_tmp(int *temp, int day)
{
int sum = 0; /* 10日間の合計気温変数 */
int i; /* ポインタを進めるためのインデックス */
float mean; /* 平均気温 */
for(i=0; i<day; i++)
{
sum = sum + *(temp + i); /* 10日間の合計気温を出す */
}
mean = (float)sum/day; /* 平均気温を計算 */
return mean;
}
|
平均気温を出す関数は、引数にポインタを指定して、ポインタを移動しながら、
値を拾っていきます。
「*(temp + i)」の意味は、ポインタ(整数型配列のアドレス)を
1つづつ進めて、その位置の値を拾ってゆきます。このような使い方は、配列では、
よく使われます。同様のことは、配列でも行えます。
