Está en la página 1de 2

 

5.5)Paso de arrays a funciones.

Un array puede ser pasado como argumento


a una función, permitiendo por
consiguiente que el array
completo sea pasado a la función. Pero en cambio,
la manera en que
se pasa una variable ordinaria a una función es muy
distinta a la
forma en como se pasa un array.

Para pasar un array a una función, el


nombre del array debe aparacer sólo,
sin corchetes ni índices, como un argumento actual dentro de la
llamada a la
función. El correspondiente argumento formal se escribe
de la misma
manera, pero debe ser declarado como un array dentro de la
declaración de
argumentos formales.

Cuando se declara un array unidimensional como un argumento formal,


el
array se escribe con un par de corchetes cuadrados vacios. El tamaño
del
array no se especifica dentro de la especificación formal
de argumentos.

Se precisa tener algún cuidado cuando se escriben declaraciones


de
funciones que incluyen especificaciones de tipos de argumentos. Si alguno
de
los argumentos es un array, el tipo de datos de cada array debe estar
seguido
por un par de corchetes, indicando así que el argumento
es un array. En el
caso de prototipos de funciones, un par de corchetes
vacios debe seguir al
nombre de cada argumento array.

Similarmente, si la primera línea de una definición


de función incluye
declaraciones formales de argumentos, cada nombre
de array que aparezca
como un argumento formal debe estar seguido por un
par de argumentos
vacíos.

Cuando un array se pasa como argumento de una función, los


valores de los
elementos del array no son pasados a la función ,
sino que el nombre del
array se interpreta como una dirección del
primer elemento del array, la
dirección de memoria conteniendo el
primer elemento del array. Esta
dirección se asigna al correspondiente
argumento formal cuando se llama a
la función. El argumento formal
se convierte por tanto en un puntero al
primer elemento del array.

Los argumentos pasados de esta manera se dice que son pasados por
referencia en vez de por valor.

Cuando se hace una referencia a un elemento del array dentro de la


función ,
el índice del elemento se añade al valor
del puntero para indicar la dirección
del elemento especificado.
Por tanto, cualquier elemento del array puede ser
accedido dentro de la
función.

Además, si un elemento del array es alterado dentro de la


función, esta
alteración será reconocida en la porción
del programa desde la que ha sido
llamada (en realidad, en todo el ámbito
de la definición del array).

El hecho de que un array pueda ser modificado globalmente dentro


de una
función proporciona un mecanismo adecuado para mover multiples
datos de
o desde una función a la porción llamante del programa.
Simplemente se
pasa el array a la función y se alteran sus elementos
dentro de ella. O, si el
array debe ser preservado, se copia el array (elemento
por elemento) dentro
de la porción llamante del programa, se pasa
la copia a la función y se
realizan las alteraciones.

El programador debe tener cierto cuidado al alterar un array dentro


de una
función ya que es muy fácil alterarlo de forma no
intencionada fuera de la
función.

También podría gustarte