Cprogramming-c-passing-arrays-to-functions

提供:Dev Guides
移動先:案内検索

Cで関数の引数として配列を渡す

1次元配列を関数の引数として渡す場合、次の3つの方法のいずれかで仮パラメーターを宣言する必要があります。3つの宣言メソッドはすべて、整数ポインターが行くことをコンパイラーに伝えるため、同様の結果を生成します受信する。 同様に、多次元配列を仮パラメータとして渡すことができます。

Way-1

ポインタとしての仮パラメータ-

void myFunction(int *param) {
   .
   .
   .
}

ウェイ2

サイズ付き配列としての形式パラメータ-

void myFunction(int param[10]) {
   .
   .
   .
}

方法-3

サイズなし配列としての形式パラメータ-

void myFunction(int param[]) {
   .
   .
   .
}

今、別の引数と一緒に引数として配列を取り、渡された引数に基づいて、次のように配列を介して渡された数値の平均を返す、次の関数を考えます-

double getAverage(int arr[], int size) {

   int i;
   double avg;
   double sum = 0;

   for (i = 0; i < size; ++i) {
      sum += arr[i];
   }

   avg = sum/size;

   return avg;
}

さて、次のように上記の関数を呼び出しましょう-

#include <stdio.h>

/*function declaration*/
double getAverage(int arr[], int size);

int main () {

  /*an int array with 5 elements*/
   int balance[5] = {1000, 2, 3, 17, 50};
   double avg;

  /*pass pointer to the array as an argument*/
   avg = getAverage( balance, 5 ) ;

  /*output the returned value*/
   printf( "Average value is: %f ", avg );

   return 0;
}

上記のコードを一緒にコンパイルして実行すると、次の結果が生成されます-

Average value is: 214.400000

ご覧のとおり、Cは仮パラメーターの境界チェックを実行しないため、関数に関する限り、配列の長さは重要ではありません。