C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で関数に配列を渡す


C ++では、配列全体を引数として関数に渡すことはできません。ただし、インデックスなしで配列の名前を指定することにより、配列へのポインタを渡すことができます。

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

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


  1. C /C++の多次元配列

    C / C ++では、多次元配列は簡単な言葉で配列の配列として定義されます。多次元配列では、データは表形式で(行の主要な順序で)格納されます。次の図は、次元が3 x 3x3の多次元配列のメモリ割り当て戦略を示しています。 アルゴリズム Begin    Declare dimension of the array.    Dynamic allocate 2D array a[][] using new.    Fill the array with the elements.    Print the ar

  2. C ++で配列を使用するにはどうすればよいですか?

    配列は、連続したメモリ位置に配置された同じタイプの一連の要素であり、一意の識別子にインデックスを追加することで個別に参照できます。 C ++で配列を使用するには、最初に配列を宣言する必要があります。たとえば、 int arr[10]; これにより、サイズ10のint型の配列が宣言されます。これにより、10個の整数を連続したメモリに格納できます。その要素のいずれかを参照するには、配列アクセス演算子を使用して、アクセスする要素のインデックスを指定する必要があります。 C ++配列のインデックスは0から始まります。したがって、配列arrには、インデックス0、1、2、... 9の要素が10個あります