Uso de punteros

Hemos visto el uso de punteros de forma teórica, ahora toca la práctica.

Primeramente vamos a ver un ejemplo sencillo de cómo distinguir entre la dirección de memoria de una variable y su valor. Hasta ahora solo habíamos trabajado con los valores de las variables.

27-1

 

Creamos una variable llamada "num" a la que le damos el valor de 2. Y a través de dos printf mostramos su dirección de memoria y su valor. Para mostrar la dirección de memoria es necesario escribir "%p". 

Y en el nombre de la variable debemos poner "&" delante. Eso es lo que indica al programa que muestre la dirección de memoria en vez de su valor. 

El programa dará como resultado algo así:

27-3

 

Tened en cuenta que la dirección de memoria es variable, es decir, que seguramente cuando ejecutéis vosotros el programa saldrá otra diferente a la que estáis viendo ahora en pantalla.

 

Veamos otro ejemplo con punteros un poco más complejos, esta vez con dos variables. 

27-2

 

En este ejemplo crearemos variables tipo puntero. Lo que tenemos que hacer para indicar que es un puntero es ponerle un "*" antes del nombre de la variable, como ocurre con punt1 y punt2. Al ser "int" indicamos que esos punteros apuntarán a un tipo entero. 

Bien, creamos dos variables tipo int y dos punteros tipo int. Le damos valor a las variables num1 y num2. Luego, a los punteros le damos una dirección de memoria, no un valor.

punt1 = &num1; //punt1 apunta a num1
punt2 = &num2; //punt2 apunta a num2
 
¿Qué quiere decir esto? Que punt1 apuntará a num1, y que punt2 apuntará a num2. O sea, que apuntan a la dirección de memoria donde se guardan las variables num1 y num2 (de hecho, si mostramos la dirección de memoria de &num1 y &num2, veremos como son las mismas).
 
Ya solo nos queda por explicar el último printf, donde se muestra el valor que contiene cada puntero. Esto se muestra poniendo un "*" a la hora de mostrar por pantalla. Como apunta a un tipo int seguimos poniendo "%i" para mostrar su valor.
Como comprobaréis en el programa, los valores que contienen los punteros son 2 y 5 respectivamente, ya que son los valores que contienen las variables num1 y num2. 
¿Por qué tienen ese valor los punteros? Porque le hemos dado la dirección de memoria de las variables num1 y num2, por tanto los punteros apuntan allí, y tienen sus mismos valores.
 
El resultado del programa es el siguiente:
27-4
 
Todo esto resulta muy complejo al principio, es el tema más complicado del lenguaje C, y solo con el tiempo podréis ir asimilando y comprendiendo de mejor forma como funcionan. Por lo pronto, con haceros una idea es más que suficiente.
 
Y aquí el vídeo del funcionamiento del programa, con algunas modificaciones para entender mejor como funcionan los punteros:
Uso de punteros
¿Te gustó? Pues comparte ;-)
Conoce al autor

Daniel Pozo Chichon

Técnico en Desarrollo de Aplicaciones Informáticas (Grado superior)

Este sitio usa cookies para personalizar el contenido y los anuncios, ofrecer funciones de redes sociales y analizar el tráfico. Ninguna cookie será instalada a menos que se desplace exprésamente más de 600px. Leer nuestra Política de Privacidad y Política de Cookies. Las acepto | No quiero aprender cursos gratis. Sácame