Programa tu videojuego #10-3

Bien, espero que llevéis el asunto de los punteros de buena manera, repito que es algo muy importante en programación, sobre todo en el lenguaje C (es una de sus herramientas más potentes). Hoy veremos como usar los punteros como parámetros de una función.

Repito que cuando le pasamos a una función un parámetro, éste se copia dentro del ámbito de la variable, es decir, cuando cambiemos su valor, fuera de nuestra función la variable no se verá modificada. Si la pasamos como un puntero (le indicamos su dirección de memoria) sí podemos modificarla. Durante la función podemos acceder al contenido de esa posición de memoria y cambiar lo que haya. Recordad que para acceder a la dirección de memoria de una variable usamos el operador *.

Hay dos maneras de pasar los parámetros a una función:

– Paso por valor: se hace una copia de la variable, la nueva variable sólo tendrá vigor en la función, no existirá fuera de ella, con lo cual, si la modificamos, no se verá modificada fuera.

– Paso por referencia: se le pasa la dirección de memoria de una variable. De esta manera podemos acceder a su contenido y modificar su valor.

Veamos un ejemplo de uso de esta herramienta:

#include <stdio.h>

#include <stdlib.h>

void suma(int *a, int b);

int main(void){

int a,b;

a = 5;

b = 3;

suma(&a, b);

printf(“La suma de a y b es = %i\n”, a);

system(“pause”);

return 0;

}

void suma(int *a, int b){

*a = *a + b;

}

Veamos el código con detenimiento. Primero está la cabecera de la función suma, no devuelve nada pero recibe dos parámetros, el primero es la dirección de memoria de un entero y el segundo un entero normal y corriente. En la función principal declaramos dos enteros y les damos valor, después llamamos a suma y le pasamos los parámetros. Usamos & con a, para enviar su dirección de memoria, b lo mandamos como siempre. En la implementación de la función suma cada vez que queramos usar el valor de a usaremos el operador * (accedemos al contenido de la dirección de la variable a). Si usamos a simplemente estaremos usando la dirección de memoria.

Es algo complicado, lo sé, repasad mucho esta entrega ya que es muy importante. Más adelante mandaré ejercicios pero mientras podéis intentar crear funciones que hagan algo y usad punteros.

Números anteriores de “Programación de videojuegos”.

%title

    el 22.10.08

 

Especiales