Espero que no halláis tenido ningún problema programando la calculadora haciendo uso de funciones creadas por vosotros mismos. Si no es así, mandadme un correo con el programa que os da problemas, intentaré ayudaros.
Capítulo 10: punteros
Si os ha costado lo que hemos hecho hasta ahora, preparaos porque viene lo peor, los punteros. Son una herramienta muy, muy potente, que nos permitirá hacer muchísimas cosas, cobrarán mucha importancia en el desarrollo de juegos y de cualquier otra aplicación. Un puntero nos permite acceder a una dirección de memoria (RAM) de nuestro ordenador, esto los hace herramientas potentes pero peligrosas, ya que si tocamos donde no debemos o cometemos errores programando podemos bloquear el sistema.
Este tema lo trataremos en las próximas entregas ya que se hace muy largo y pesado, así que tened paciencia, leed esta guía varias veces y practicad mucho.
– Los datos y los programas se almacenan en memoria principal
Distingamos entre memoria secundaria y principal. La secundaria es nuestro disco duro, pen drive etc y la primaria es nuestra memoria RAM. Todos los programas en ejecución junto con sus instrucciones y variables se almacenan en la memoria principal. Ésta está formada por bloques cuyo tamaño se llama longitud de palabra.
Cuando declaramos una variable lo que hace el ordenador es reservarle un sitio (el tamaño depende del tipo de variable) para almacenarla. Los bloques de memoria están numerados con una dirección. Como tu y yo tenemos una dirección donde vivimos, los bloques de memorias igual, son como casas, tienen una dirección. Si el cartero busca una casa y no tiene dirección pues no la encuentra, igual pasa con las variables, se guardan en un bloque de memoria numerado. Cada vez que se ejecute el programa se le asignará un lugar distinto a cada variable ya que de la gestión de memoria se encarga el Sistema Operativo, no nosotros ni nuestro programa.
Podemos saber en qué direcciones guarda nuestro ordenador las variables, para ello usaremos el operador &. Veamos un ejemplo, en la realidad no lo hacemos así (no hemos tocado los punteros aún), pero esto os dará una idea sobre las direcciones de memoria y las variables:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
a = 10;
printf( «Dirección de a = %p, valor de a = %in», &a, a );
a = 2;
printf( «Dirección de a = %p, valor de a = %in», &a, a );
system(“pause”);
return 0;
}
Para mostrar la dirección de una variable usamos %p, ésta se mostrará en hexadecimal. No hay que confundir la dirección de a con el valor de a, este programita nos lo aclara. Podemos cambiar el valor de a, pero la dirección no cambia.
Hasta aquí la explicación previa antes de meternos con punteros. Sería bueno que probaráis a cambiar cosas de este programa y a repasar esta introducción ya que los conceptos deben quedar CLARÍSIMOS. De aquí hasta que terminemos punteros avanzaremos poco a poco ya que son difíciles de comprender y su aprendizaje requiere la realización de muchos ejercicios. Lo siento chicos, pero si queréis programar videojuegos hay que pasar por esto.
Anímo que ya estamos más cerca. Ir a todas las guías de Programación.