C ++ Pasando matrices a funciones
C ++ no permite pasar una matriz completa como argumento a una función. Sin embargo, puede pasar un puntero a una matriz especificando el nombre de la matriz sin un índice.
Si desea pasar una matriz unidimensional como argumento en una función, tendría que declarar el parámetro formal de la función en una de las siguientes tres formas y los tres métodos de declaración producen resultados similares porque cada uno le dice al compilador que un puntero entero va para ser recibido.
Camino-1
Parámetros formales como puntero de la siguiente manera:
void myFunction(int *param) {
.
.
.
}
Camino-2
Parámetros formales como una matriz de tamaño de la siguiente manera:
void myFunction(int param[10]) {
.
.
.
}
Camino-3
Parámetros formales como una matriz sin tamaño de la siguiente manera:
void myFunction(int param[]) {
.
.
.
}
Ahora, considere la siguiente función, que tomará una matriz como argumento junto con otro argumento y, según los argumentos pasados, devolverá el promedio de los números pasados a través de la matriz de la siguiente manera:
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;
}
Ahora, llamemos a la función anterior de la siguiente manera:
#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;
}
Cuando el código anterior se compila y se ejecuta, produce el siguiente resultado:
Average value is: 214.4
Como puede ver, la longitud de la matriz no importa en lo que respecta a la función porque C ++ no realiza ninguna comprobación de límites para los parámetros formales.