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 ++は仮パラメータの境界チェックを実行しないため、関数に関する限り、配列の長さは重要ではありません。