C Pasar arrays a funciones

C Arrays

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

Método 1

El parámetro formal es un puntero (podrá aprender sobre punteros en el próximo capítulo):

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

Método 2

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

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

Método 3

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

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

Ejemplo

Ahora, veamos la siguiente función que toma un array como parámetro y además pasa otro parámetro. Según el parámetro pasado, devuelve el promedio de los elementos del array:

double getAverage(int arr[], int size) { int i; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }

Ahora, llamemos a la función anterior de la siguiente manera:

Ejemplo

#include <stdio.h> /*Declaración de la función*/ double getAverage(int arr[], int size); int main () { /*Array de enteros con 5 elementos*/ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /*Pasar un puntero al array como argumento*/ avg = getAverage( balance, 5 ) ; /*Salida del valor devuelto*/ printf( "El promedio es: %f", avg ); return 0; } double getAverage(int arr[], int size) { int i; double avg; double sum=0; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

平均值是: 214.400000

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

C Arrays

Otras extensiones