[C con Clase] Cómo se pasa un arreglo por parámetro?

Steven Davidson srd4121 en njit.edu
Mar Abr 29 06:22:23 CEST 2008


Hola David,

David Reza wrote:
> Disculpen la pregunta, tal vez sea muy tonta pero, ¿cómo se pasan los 
> arreglos por parámetro y cómo sería el prototipo de una función que 
> tiene como parámetro un arreglo?
> 
> Yo pienso que sería así:
> 
> //Prototipo con un parámetro que recibirá un arreglo
> tipo funcion (tipo []);
> 
> //Definición de la función
> tipo funcion (param[])

Aquí, pienso que, contradices lo que expusiste anteriormente para la 
"sintaxis" de la función. Debería ser,

tipo funcion ( tipo param[] )

> {
>     cuerpo de la función
> }
> 
> //Llamada a la función
> ...
> int arreglo[3];
> ...
> funcion(arreglo[]);

Casi. Fíjate en el tipo, queremos 'int []'. Sin embargo, el símbolo [] 
tiene cierta dualidad. Cuando es usado para declarar un array, [] es un 
declarador. Esto es diferente a cuando lo usamos para acceder a un 
elemento del array, el cual se convierte en operador.

Como no estamos declarando 'arreglo', porque ya lo hemos hecho, entonces 
se trata de un operador. Obviamente, esto no es lo que quieres aparte de 
que el operador [] es binario, y por tanto necesitarías otro operando.

Dicho todo esto, la forma apropiada es pasando 'arreglo' nada más. Esto es,

funcion( arreglo );


Existe otra explicación, pero no sé si has visto el tema de punteros, ya 
que existe una relación muy estrecha entre punteros y arrays.


Espero que esto te ayude.

Steven





Más información sobre la lista de distribución Cconclase