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