C ++ Przekazywanie tablic do funkcji

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.


Language