+ 1
Can anyone please explain what is function with array parameter and function that returns to array ?
Related to pointer
2 Antworten
+ 4
Una función que recibe un array debe recibir, también, el número de elementos que lo forman para poder recorrerlo dentro de la función. Supongamos:
int array[] = { 30, 40, 50 }; // Tiene 3 elementos
Le puedes entregar este array a una función tal que así:
f(array, 3);
o, de una forma más libre de errores:
f(array, sizeof(array)/sizeof(array[0]));
La definición de dicha funcion f podría ser:
void f(int un_array[], unsigned n_elem) {
for(unsigned n = 0; n < n_elem; ++n)
printf("%d\n", un_array[n]);
}
Ahora bien. Si el array es multidimensional C debe conocer el tamaños de todas las dimensiones menos de de una, la razón es porqué debe saber cómo están ordenados los datos en memoria, pero también porqué dado que un array en verdad pasa un puntero de él mismo la dimensión que indica el número de elementos totales que tiene no se pasa. En código, supongamos:
int array[5][3][4];
Se pasaría a la función tal cómo antes:
f(array, 5);
o
f(array, sizeof(array)/sizeof(array[0]));
El prototipo de la función debería ser:
void f(int un_array[][3][4], unsigned n_elem);
Por otra parte una función no puede devolver un array porqué es un tipo de variable automática y ésta desaparece al terminar la función.
Pero siempre puedes recibir un array de argumento y modificarlo. Otra opción es hacer un tipo de dato estructura que contenga un array, como las estructuras se copian el array, cuando salga encapsulado, será copiado. También puedes crear un array en el heap mediante malloc y devolver su puntero, pero entonces deberás acordarte de liberarlo en algún momento.
+ 1
Gracias