0Pricing
C Academy · Lección

register y const

Indicaciones e inmutabilidad

register y const es una lección gratuita de C Academy en CoddyKit. Esta es la lección 4 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.

La sugerencia register

register sugiere mantener una variable en un registro de la CPU para mejorar la velocidad. Solo es una sugerencia; los compiladores modernos normalmente la ignoran.

#include <stdio.h>
int main(void) {
    register int i;
    int sum = 0;
    for (i = 0; i < 5; i++)
        sum += i;
    printf("sum = %d\n", sum);
    return 0;
}

No puede obtener su dirección

Como una variable register podría no residir en memoria, no puede obtener su dirección con &.

#include <stdio.h>
int main(void) {
    register int x = 10;
    printf("x = %d\n", x);
    return 0;
}

Por qué register rara vez se usa hoy

Los compiladores optimizadores ya colocan las variables de uso frecuente en registros. Actualmente, la palabra clave es sobre todo histórica.

#include <stdio.h>
int main(void) {
    int product = 1;
    for (register int i = 1; i <= 4; i++)
        product *= i;
    printf("product = %d\n", product);
    return 0;
}

El calificador const

const convierte una variable en de solo lectura después de su inicialización. Intentar cambiarla produce un error de compilación.

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

Las constantes documentan la intención

Usar const para valores fijos hace que el código sea más claro y protege contra cambios accidentales.

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

const con punteros

const int *p significa que el valor apuntado no puede cambiar a través de p. El puntero sí puede cambiar de dirección.

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

Puntero constante

int * const p significa que el puntero no puede cambiar, pero el valor al que apunta sí puede hacerlo.

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

Parámetros de función const

Marcar un parámetro como const garantiza que la función no lo modificará, lo que ayuda a quienes la llaman a razonar sobre su comportamiento.

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

Inmutabilidad por diseño

Prefiera const para cualquier valor que no deba cambiar. Esto permite detectar errores en tiempo de compilación.

#include <stdio.h>
int main(void) {
    const int LIMIT = 100;
    int x = 90;
    if (x < LIMIT)
        printf("under limit\n");
    return 0;
}

Combinar const y variables globales

Una variable global const es una constante compartida y segura, disponible en todo el archivo.

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

register y const juntos

Incluso puede marcar un contador de bucle de ambas formas, aunque aquí const significa que el cuerpo del bucle no debe modificarlo.

#include <stdio.h>
int main(void) {
    int sum = 0;
    for (int i = 0; i < 3; i++) {
        const int doubled = i * 2;
        sum += doubled;
    }
    printf("sum = %d\n", sum);
    return 0;
}

Comprobación rápida

Compruebe su comprensión de register y const.

Repaso: register y const

Ha aprendido sobre dos calificadores.

  • register sugiere almacenamiento en un registro, pero normalmente se ignora
  • No puede obtener la dirección de una variable register
  • const convierte un valor en de solo lectura
  • La constancia de los punteros tiene dos variantes: valor const frente a puntero const
  • Use const con generosidad para mejorar la seguridad

Preguntas frecuentes

¿La lección «register y const» es gratis?

Sí — el texto completo de «register y 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 «register y const»?

Indicaciones e inmutabilidad 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 4 de 4.

¿Cuánto tiempo toma la lección «register y 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. auto y ámbito local
  2. Variables static
  3. extern y global
  4. register y const
← Volver a C Academy