Si necesitamos almacenar un valor en una variable que nunca será cambiado el lenguaje C nos permite definir una constante.
const int impuesto=21;
La definición como constante del identificador impuesto asegura que cualquier intento de asignarle otro valor generará un error cuando compilemos el programa:
impuesto=25;
Se pueden definir constantes de cualquier tipo de dato que nos provee el lenguaje C
Una constante a diferencia de una macro ocupa un espacio durante la ejecución del programa:
#define PI 3.1416 const float pi=3.1416
Es importante notar que pi reserva espacio para un valor float durante la ejecución del programa, en cambio la macro PI cuando compilamos se sustituye todas las partes que aparece PI por el valor 3.1416
Problema 1:
Definir constantes de distinto tipo e imprimir sus valores.
Programa: programa200.c
Hemos definido 9 constantes de distinto tipo.
En el momento que se define la constante debemos iniciar su valor por asignación:
const short int v1=30000;
Inclusive si definimos una constante de tipo registro también debemos inicializarla inmediatamente:
const struct persona per1={"juan",18};
Si intentamos luego de inicializar una constante cambiar su valor se produce un error cuando queremos compilar el programa:
per1.edad=15;
Modificador const en los parámetros de una función
Cuando un parámetro no debe ser modificado es conveniente agregarle el modificador const para evitar que por descuido le asignemos un valor.
Problema 2:
Cargar un vector de 5 enteros y luego imprimirlo.
Programa: programa201.c
La función de imprimir tiene el objetivo de mostrar el contenido del vector y no modificarlo, es conveniente agregarle el modificador const al parámetro vec:
void imprimir(const int vec[CANTIDAD]) { int f; for(f=0;f<CANTIDAD;f++) { printf("%i ",vec[f]); } }
Si por error queremos asignarle valores a las componentes del vector luego cuando lo compilemos al programa se generará un error sintáctico:

Si consultamos el código fuente del sistema operativo Linux veremos que utiliza el modificador const en numerosas funciones:

No hay comentarios:
Publicar un comentario