C++ Pasar arreglos a funciones

C++ 数组C++ Arreglos

En C++, puede pasar un puntero a un arreglo especificando el nombre del arreglo sin un índice.

En C++, al pasar un arreglo a una función, el tipo de arreglo se convierte automáticamente en tipo puntero, por lo que en realidad se pasa la dirección.

Si desea pasar un arreglo unidimensional como parámetro en una función, debe declarar el parámetro formal de la función de una de las siguientes tres maneras. Los resultados de estas tres formas de declaración son los mismos, porque cada una le indica al compilador que recibirá un puntero a entero. Del mismo modo, también puede pasar un arreglo multidimensional como parámetro formal.

Método 1

El parámetro formal es un puntero:

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

Método 2

El parámetro formal es un arreglo de tamaño definido:

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

Método 3

El parámetro formal es un arreglo de tamaño indefinido:

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

Ejemplo

Ahora, veamos la siguiente función, que toma un arreglo como parámetro y también pasa otro parámetro. Según los parámetros pasados, devuelve el promedio de los elementos del arreglo:

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:

Ejemplo

#include <iostream> using namespace std; // Declaración de la función double getAverage(int arr[], int size); int main () { // Arreglo de enteros con 5 elementos int balance[5] = {1000, 2, 3, 17, 50}; double avg; // Pasar un puntero al arreglo como parámetro avg = getAverage( balance, 5 ) ; // Mostrar el valor de retorno cout << "El promedio es:" << avg << endl; return 0; }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

平均值是: 214.4

Puede ver que, en lo que respecta a la función, la longitud del arreglo es irrelevante, porque C++ no realiza comprobaciones de límites en los parámetros formales.

C++ 数组C++ Arreglos

Otras extensiones