Pasar arreglos a una función en C
Pasar arreglos a una función en C
En este tutorial, aprenderá a pasar matrices (matrices unidimensionales y multidimensionales) a una función en programación C con la ayuda de ejemplos.
En la programación C, puede pasar una matriz completa a funciones. Antes de aprender eso, veamos cómo puede pasar elementos individuales de una matriz a funciones.
Pasar elementos de matriz individuales
Pasar elementos de matriz a una función es similar a pasar variables a una función.
Ejemplo 1:Pase elementos individuales del arreglo
#include <stdio.h>
void display(int age1, int age2) {
printf("%d\n", age1);
printf("%d\n", age2);
}
int main() {
int ageArray[] = {2, 8, 4, 12};
// pass second and third elements to display()
display(ageArray[1], ageArray[2]);
return 0;
}
Salida
8 4
Aquí, hemos pasado parámetros de matriz al display()
funcionan de la misma manera que pasamos variables a una función.
// pass second and third elements to display()
display(ageArray[1], ageArray[2]);
Podemos ver esto en la definición de la función, donde los parámetros de la función son variables individuales:
void display(int age1, int age2) {
// code
}
Ejemplo 2:Pasar matrices a funciones
// Program to calculate the sum of array elements by passing to a function
#include <stdio.h>
float calculateSum(float num[]);
int main() {
float result, num[] = {23.4, 55, 22.6, 3, 40.5, 18};
// num array is passed to calculateSum()
result = calculateSum(num);
printf("Result = %.2f", result);
return 0;
}
float calculateSum(float num[]) {
float sum = 0.0;
for (int i = 0; i < 6; ++i) {
sum += num[i];
}
return sum;
}
Salida
Result = 162.50
Para pasar una matriz completa a una función, solo se pasa como argumento el nombre de la matriz.
result = calculateSum(num);
Sin embargo, observe el uso de []
en la definición de la función.
float calculateSum(float num[]) {
... ..
}
Esto informa al compilador que está pasando una matriz unidimensional a la función.
Pasar matrices multidimensionales a una función
Para pasar matrices multidimensionales a una función, solo se pasa a la función el nombre de la matriz (similar a las matrices unidimensionales).
Ejemplo 3:Pasar matrices bidimensionales
#include <stdio.h>
void displayNumbers(int num[2][2]);
int main() {
int num[2][2];
printf("Enter 4 numbers:\n");
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
scanf("%d", &num[i][j]);
}
}
// pass multi-dimensional array to a function
displayNumbers(num);
return 0;
}
void displayNumbers(int num[2][2]) {
printf("Displaying:\n");
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d\n", num[i][j]);
}
}
}
Salida
Enter 4 numbers: 2 3 4 5 Displaying: 2 3 4 5
Observe el parámetro int num[2][2]
en el prototipo de función y definición de función:
// function prototype
void displayNumbers(int num[2][2]);
Esto significa que la función toma una matriz bidimensional como argumento. También podemos pasar arreglos con más de 2 dimensiones como argumento de función.
Al pasar matrices bidimensionales, no es obligatorio especificar el número de filas en la matriz. Sin embargo, siempre se debe especificar el número de columnas.
Por ejemplo,
void displayNumbers(int num[][2]) {
// code
}
Lenguaje C