8.5) Paso de Punteros a una función.
     
     

     A menudo los punteros son pasados a las funciones como argumentos. Esto permite que datos de la porción de programa en la que se llama a la función sean accedidos por la función, alterados dentro de ella y luego devueltos al programa de forma alterada. Este uso de los punteros nos permite una equivalencia con los pasos por referencia (o por dirección o por posición), en contraposición a los pasos por valor (como vimos en el capítulo 6).
     
     

     NO OLVIDEMOS QUE:
     
     
     

    Modificador
    Significado
    *
    Indica un puntero
    ( )
    Indica una función
    [ ]
    Indica un array

     
     

     En el paso de argumetos por referencia la función invocadora trasfiere una dirección de memoria y la función invocada declara su argumento formal como un puntero para recibir dicha dirección de memoria.
     

     
     
     
    La variable del argumento formal o puntero de la función invocada está apuntando a una zona de memoria que pertenece a la función invocadora, esto es, a la memoria local de dicha función.
       
    la función invocada, a través de su variable puntero, puede acceder libremente a esta zona de memoria apuntada, pudiendo realizar cualquier cambio en las variables contenidas en dicha zona,
       
    una vez terminada la ejecución de la función invocada se sabe que su memoria local se libera. Dado que su argumento formal contiene una dirección de memoria, lo que se libera es justamente la variable puntero que contiene dicha dirección pero no la zona de memoria asociada a dicha dirección; es decir, el puntero dejará de apuntar a la zona de memoria pero dicha memoria seguirá estando reservada.

     
     
     

     Ejemplo: Se muestra a continuación la suma de un array con argumentos puntero, dicha suma se realiza en una función que llama el programa principal, y dicha función nos devuelve con return el resultado de dicha suma, anteriormente se realiza un paso IMPORTANTE, al pasarle el array por parámetros.
     
     



 
 
 
 

     
     
     Cuando los punteros son usados como argumentos de una función, es necesario tener cuidado con la declaración de los argumentos formales dentro de la función. Los argumentos formales que sean punteros deben ir precedidos por un asterisco. Si una declaración de función está incluida en la parte llamante del programa, el tipo de dato de cada argumento que corresponda a un puntero debe ir seguido de un asterisco. (Esto se vio en el capítulo 6).

     
     
     
     

     Ejemplo: En este problema vamos a enseñar como un valor pasado a un función puede ser devuelto variado, y conservando el valor que se obtuvo dentro de la función sin usar la palabra return. También se compara con otra función que tiene el paso de las variables por valor, o sea, no se conservan fuera de la función los valores que se obtuvieron dentro.
     

       
     
     
     
     
     

    Ejemplo: Para acabar con esta sección se muestra un ejemplo en el que variamos un array dentro de una función y devolvemos dicho array variado a la función que le llamó.