C ++ Passaggio di matrici alle funzioni

C ++ non consente di passare un intero array come argomento a una funzione. Tuttavia, è possibile passare un puntatore a un array specificando il nome dell'array senza un indice.

Se vuoi passare un array monodimensionale come argomento in una funzione, dovresti dichiarare il parametro formale della funzione in uno dei seguenti tre modi e tutti e tre i metodi di dichiarazione producono risultati simili perché ognuno dice al compilatore che sta andando un puntatore intero da ricevere.

Way-1

Parametri formali come un puntatore come segue:

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

Way-2

Parametri formali come un array dimensionato come segue:

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

Way-3

Parametri formali come array non dimensionati come segue:

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

Ora, considera la seguente funzione, che prenderà un array come argomento insieme a un altro argomento e in base agli argomenti passati, restituirà la media dei numeri passati attraverso l'array come segue:

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;
}

Ora, chiamiamo la funzione sopra come segue:

#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;
}

Quando il codice precedente viene compilato insieme ed eseguito, produce il seguente risultato:

Average value is: 214.4

Come puoi vedere, la lunghezza dell'array non ha importanza per quanto riguarda la funzione perché C ++ non esegue il controllo dei limiti per i parametri formali.