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 estoconst 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". |
https://trucosinformaticos.wordpress.com/2010/05/02/como-usar-const-en-c/
No hay comentarios:
Publicar un comentario