C ++ nie pozwala na przekazanie całej tablicy jako argumentu do funkcji. Można jednak przekazać wskaźnik do tablicy, określając nazwę tablicy bez indeksu.
Jeśli chcesz przekazać tablicę jednowymiarową jako argument w funkcji, musisz zadeklarować parametr formalny funkcji na jeden z następujących trzech sposobów, a wszystkie trzy metody deklaracji dają podobne wyniki, ponieważ każda z nich informuje kompilator, że zmierza wskaźnik liczby całkowitej do odbioru.
Sposób-1
Parametry formalne jako wskaźnik w następujący sposób -
void myFunction(int *param) {
.
.
.
}
Sposób-2
Parametry formalne jako tablica o rozmiarach w następujący sposób -
void myFunction(int param[10]) {
.
.
.
}
Droga-3
Parametry formalne jako tablica bez rozmiaru w następujący sposób -
void myFunction(int param[]) {
.
.
.
}
Rozważmy teraz następującą funkcję, która weźmie tablicę jako argument wraz z innym argumentem i na podstawie przekazanych argumentów zwróci średnią liczb przekazanych przez tablicę w następujący sposób -
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;
}
Teraz nazwijmy powyższą funkcję w następujący sposób -
#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;
}
Kiedy powyższy kod jest kompilowany i wykonywany razem, daje następujący wynik -
Average value is: 214.4
Jak widać, długość tablicy nie ma znaczenia, jeśli chodzi o funkcję, ponieważ C ++ nie sprawdza granic pod kątem parametrów formalnych.