ポインタと配列
ポインタと配列は、相性がいいので、この組み合わせは、よく使われます。
配列をあらかじめ定義、初期化して、値を設定しておきます。 この配列の中の値を探したり、合計を出したり、平均値を出したり、 いろいろな使い方が出来ます。 配列のところでも、やりましたが、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つづつ進めて、その位置の値を拾ってゆきます。このような使い方は、配列では、
よく使われます。同様のことは、配列でも行えます。