Sobre inicialización de punteros...

Sobre inicialización de punteros...

de Javier Schandy -
Número de respuestas: 0

Un problema común al trabajar con punteros es olvidarnos de inicializarlos. El puntero es una variable en la que se almacena la dirección de memoria en donde se encuentra otra variable. Si nosotros declaramos un puntero y a continuación intentamos acceder a la variable a la que apunta, vamos a tener un funcionamiento inesperado porque no tenemos la certeza de adónde está apuntando. Esto puede hacer que leamos o escribamos valores en un lugar de memoria que se está utilizando para otra cosa. Los punteros se inicializan asignándoles la dirección de memoria de otra variable creada previamente.


¿A qué viene esto? El módulo de temperatura que utilizamos en los laboratorios tiene una función setFlag que recibe un puntero cómo parámetro. Internamente lo que hace es igualarlo a otro puntero del módulo donde se indica si hay una medida de temperatura lista.


Si nosotros declaramos un puntero y se lo pasamos a la función setFlag, estamos en la situación descrita al principio y no tenemos certeza de dónde se está escribiendo el valor de la bandera. La forma correcta de usar esta función es creando una variable (por ejemplo de tipo char), y pasándole a la función setFlag su dirección de memoria (utilizando &).


Si tienen dudas pueden contestar en el foro y las intentaremos aclarar.


Saludos,

Javier