miércoles, 6 de enero de 2016

Variable constante

Objetivo:Realizar la investigación para ver para que sirve esta función para aplicarlo en cada uno de nuestros programas y podamos sacarlos de una mejor manera.

Variables constantes

Una variable declarada const no se puede cambiar, es decir, es una constante. No obstante, la palabra const sólo se tiene en cuenta durante el tiempo de compilación. El compilador emite un error cuando encuentra una instrucción que quiere asignar un valor a una constante, pero físicamente el valor de una constante puede estar guardado en la memoria RAM y cuesta poco asignar otro valor a esta posición mediante un uso malintencionado de punteros y casts.
Cuando un compilador optimiza el código ejecutable, entonces puede optar por noleer el valor de la memoria sino incrustarlo directamente en las instrucciones del procesador. Así es posible que el valor en la memoria RAM cambie pero el programa sigue con el valor que el compilador determinó durante la compilación. No obstante, la dirección de la constante sigue siendo válida aunque el ejecutable no lee de ahí.
Tener una representación física en la memoria es lo que distingue una variable declarada const de constantes definidas por enum o #define. Es decir, puedo hacer esto
const int c = 5;
const int* p = &c;  // p apunta a la dirección de c. *p vale 5.
pero no puede hacer esto
enum { CONSTANTE_ENUM };
const enum* pe = &CONSTANTE_ENUM // Error de compilación
Esto es porque una constante de enum sola no tiene tipo sino sólo representa unvalor. Lo que convierte un enum en un tipo es el conjunto de los valores de que está formado.
La cosa es aún más complicada con los #define. Es una directiva del preprocesador que reemplaza un texto por otro antes de que el código llegue al compilador. Quiere decir, los nombres de las macros definido por #define no existen para el compilador.
#define CONSTANTE 5
int a = CONSTANTE;  // El compilador ve "int a = 5".
Bibliografia: 
https://trucosinformaticos.wordpress.com/2010/05/02/como-usar-const-en-c/

No hay comentarios:

Publicar un comentario