1 関数引数とポインタ

   1.2 配列データの受け渡し
 同様な考え方で、配列のデータを関数に受け渡すことも可能です。
#include <stdio.h>
#define  NUM 5  /* データ数 */

int total(int array[ ]); /* 関数のプロトタイプ宣言 */

int main(void){
   int  i;
   int  data[NUM];

   for(i = 0; i < NUM; i++) data[i] = i+1;  /* データ入力 */
   printf("%d\n", total(data));               /* データの総和を表示 */
}

int total(int array[ ]){
   int  i;
   int  sum = 0;  /* データの総和を入れる変数 */

   for(i = 0; i < NUM; i++){
        sum = sum + array[i];
   }
   return(sum);   /* データの総和を返す */
}
 上記のように、呼び出し側の関数内では、配列の先頭アドレスを実引数として渡し、受け側関数の仮引数は、array[ ] のように添字を除いた形で宣言します。これにより、受け側関数内で、その配列の内容を参照することができるようになります。もちろん、main() 関数内の配列 data[ ] と total() 関数内の配列 array[ ] はメモリ上で同一のデータ列を指しており、array[ ]のデータの修正は、 main() 関数内の data[ ] に直接影響を及ぼすことになります。