const y static
static, usado en una variable local, significa que se inicializa solo una vez y mantiene su valor entre llamadas — a diferencia de una variable local normal, que se recrea desde cero cada vez que se ejecuta su función.
#include <stdio.h>
void increment() {
static int count = 0;
count++;
printf("%d\n", count);
}
int main() {
increment();
increment();
increment();
return 0;
}1 2 3
const: una promesa que el compilador hace cumplir
const marca una variable como inmodificable después de la inicialización — y a diferencia de un comentario o una convención de nombres, el compilador realmente la hace cumplir. Esto es genuinamente lo que gcc reporta — capturado de una ejecución real, no escrito para parecer plausible:
#include <stdio.h>
int main() {
const int max = 100;
max = 200;
printf("%d\n", max);
return 0;
}main.c: In function ‘main’:
main.c:5:9: error: assignment of read-only variable ‘max’
5 | max = 200;
| ^A continuación: manejo de errores en C — por qué no hay exceptions, y la convención de código de retorno que C usa en su lugar.
Practice exercise
Escribe una función increment() con un static int count que empiece en 0, le sume 1 y lo imprima. Llama a increment() tres veces.