Cplusplus-cpp-passing-arrays-to-functions

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

C ++関数への配列の受け渡し

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, sum = 0;
  double avg;

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

   return avg;
}

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

#include <iostream>
using namespace std;

//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
   cout << "Average value is: " << avg << endl;

   return 0;
}

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

Average value is: 214.4

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