0Pricing
C Academy · Lección

Variables const

Haga que los valores sean de solo lectura

Variables const es una lección gratuita de C Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C Academy incluye 4 lecciones en total.

Qué significa const

La palabra clave const indica al compilador que el valor de una variable no debe cambiar después de su inicialización.

Si intenta modificarlo posteriormente, la compilación falla. Esto protege los valores que deben permanecer fijos.

const int MAX_USERS = 100;

Declarar una const

Debe asignar el valor de una variable const al declararla, porque después no podrá asignárselo.

Aquí PI se inicializa una sola vez y se utiliza como cualquier variable normal para leer su valor.

#include <stdio.h>
int main(void) {
    const double PI = 3.14159;
    printf("%f\n", PI);
    return 0;
}

Intentar cambiar una const

Asignar un valor a una const después de su declaración provoca un error de compilación.

El compilador rechazaría la línea siguiente, que es exactamente la protección que buscamos.

const int LIMIT = 50;
/* LIMIT = 60; <- compile error */

const tiene tipo

A diferencia de una macro sin tipo, una variable const tiene un tipo real que el compilador comprueba.

Esto proporciona seguridad de tipos: el compilador sabe que RATE es un double y advierte sobre su uso incorrecto.

#include <stdio.h>
int main(void) {
    const double RATE = 0.05;
    double total = 200.0 * RATE;
    printf("%.2f\n", total);
    return 0;
}

const con punteros: datos

La constancia de los punteros tiene dos variantes. const int *p significa que los datos apuntados no se pueden modificar a través de p.

Aún puede cambiar p para que apunte a otro lugar, pero no puede escribir a través de él.

int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */

const con punteros: puntero

int *const p significa que el puntero no se puede reasignar, pero los datos sí se pueden modificar.

Lea las declaraciones de derecha a izquierda: «p es un puntero const a int».

int x = 5, y = 8;
int *const p = &x;
*p = 9;       /* allowed */
/* p = &y;    <- error: pointer is const */

Protección de los argumentos de una función

Marcar un parámetro puntero como const garantiza que la función no modificará los datos de quien la llama.

Esto documenta la intención y permite que el compilador detecte escrituras accidentales.

#include <stdio.h>
void show(const char *msg) {
    printf("%s\n", msg);
}
int main(void) {
    show("hello");
    return 0;
}

const en un cálculo

Un uso habitual es definir valores de configuración fijos, como una tasa impositiva o un factor de conversión.

Leer la constante mantiene clara la fórmula y concentra el valor en un solo lugar.

#include <stdio.h>
int main(void) {
    const double KM_PER_MILE = 1.609;
    double miles = 10.0;
    printf("%.2f km\n", miles * KM_PER_MILE);
    return 0;
}

const tiene una ubicación de memoria

Como un const es una variable real, ocupa memoria y puede obtener su dirección.

Esto difiere de una macro #define, que es una sustitución de texto pura y no tiene dirección.

#include <stdio.h>
int main(void) {
    const int N = 42;
    const int *p = &N;
    printf("%d\n", *p);
    return 0;
}

Ámbito y duración

Un const sigue las mismas reglas de ámbito que las variables ordinarias.

Si se declara dentro de una función, es local; si se declara fuera, es global. Este ámbito es otra ventaja frente a las macros cuyo alcance es todo el archivo.

#include <stdio.h>
const int GLOBAL_MAX = 1000;
int main(void) {
    const int local_min = 1;
    printf("%d %d\n", local_min, GLOBAL_MAX);
    return 0;
}

const y los números mágicos

Sustituir los números sin significado explícito del código por valores const con nombre elimina los «números mágicos».

Si el valor cambia, solo tiene que editar una línea en lugar de buscarlo por todo el programa.

#include <stdio.h>
int main(void) {
    const int SECONDS_PER_MIN = 60;
    int minutes = 5;
    printf("%d seconds\n", minutes * SECONDS_PER_MIN);
    return 0;
}

Comprobación rápida

Compruebe cuánto domina el comportamiento de const.

Resumen

Una variable const es un valor de solo lectura con tipo que el compilador protege contra modificaciones.

Tiene un tipo, un ámbito y una dirección, a diferencia de una macro. Con punteros, const puede aplicarse a los datos, al puntero o a ambos. A continuación compararemos esto con #define.

Preguntas frecuentes

¿La lección «Variables const» es gratis?

Sí — el texto completo de «Variables const» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C Academy, actualiza a CoddyKit PRO. El curso de C Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Variables const»?

Haga que los valores sean de solo lectura Practicas C Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C Academy?

No se requiere experiencia previa. C Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Variables const»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C Academy?

Sí. Cada lección de C Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Definir enums
  2. Valores y rangos de enums
  3. Variables const
  4. Constantes #define
← Volver a C Academy