C++ 將陣列傳遞給函式



C++ 不允許將整個陣列作為引數傳遞給函式。但是,您可以透過指定陣列名稱而不指定索引來傳遞指向陣列的指標。

如果要將一維陣列作為引數傳遞給函式,則必須以以下三種方式之一宣告函式形式引數,並且所有三種宣告方法都會產生類似的結果,因為它們都告訴編譯器將接收一個整數指標。

方法一

形式引數作為指標如下:

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

方法二

形式引數作為大小固定的陣列如下:

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

方法三

形式引數作為大小不固定的陣列如下:

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++ 對形式引數不執行邊界檢查。

廣告