Variáveis const
Torne os valores somente leitura.
Variáveis const é uma aula grátis de C Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.
O que const Significa
A palavra-chave const informa ao compilador que o valor de uma variável não deve mudar após a inicialização.
Se você tentar modificá-lo depois, a compilação falhará. Isso protege valores que devem permanecer fixos.
const int MAX_USERS = 100;Declarando uma const
Você deve atribuir o valor de uma variável const ao declará-la, pois não poderá atribuí-lo depois.
Aqui PI é inicializado uma vez e usado como qualquer variável normal para leitura.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
printf("%f\n", PI);
return 0;
}Tentando Alterar uma const
Atribuir a uma const depois da declaração é um erro de compilação.
A linha abaixo seria rejeitada pelo compilador, que é exatamente a proteção desejada.
const int LIMIT = 50;
/* LIMIT = 60; <- compile error */const tem Tipo
Ao contrário de uma macro bruta, uma variável const tem um tipo real que o compilador verifica.
Isso oferece segurança de tipos: o compilador sabe que RATE é um double e avisa sobre usos incorretos.
#include <stdio.h>
int main(void) {
const double RATE = 0.05;
double total = 200.0 * RATE;
printf("%.2f\n", total);
return 0;
}const com Ponteiros: Dados
A característica const de ponteiros tem duas formas. const int *p significa que os dados apontados não podem ser alterados por meio de p.
Você ainda pode mover p para que aponte para outro lugar, mas não pode escrever por meio dele.
int x = 5;
const int *p = &x;
/* *p = 9; <- error: data is const */const com Ponteiros: Ponteiro
int *const p significa que o ponteiro em si não pode ser reatribuído, mas os dados podem ser alterados.
Leia as declarações da direita para a esquerda: "p é um ponteiro const para int".
int x = 5, y = 8;
int *const p = &x;
*p = 9; /* allowed */
/* p = &y; <- error: pointer is const */Proteção dos argumentos de função
Marcar um parâmetro de ponteiro como const garante que a função não modificará os dados do chamador.
Isso documenta a intenção e permite que o compilador detecte escritas acidentais.
#include <stdio.h>
void show(const char *msg) {
printf("%s\n", msg);
}
int main(void) {
show("hello");
return 0;
}const em um cálculo
Um uso comum são valores fixos de configuração, como uma taxa de imposto ou um fator de conversão.
Ler a constante mantém a fórmula clara e o valor em um único 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 tem uma localização na memória
Como uma const é uma variável real, ela ocupa memória e você pode obter seu endereço.
Isso é diferente de uma macro #define, que é uma substituição direta de texto sem endereço.
#include <stdio.h>
int main(void) {
const int N = 42;
const int *p = &N;
printf("%d\n", *p);
return 0;
}Escopo e tempo de vida
Uma variável const segue as mesmas regras de escopo que as variáveis comuns.
Declarada dentro de uma função, ela é local; declarada fora dela, é global. Esse escopo é outra vantagem em relação às macros com escopo de arquivo.
#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 e números mágicos
Substituir números escritos diretamente no código por valores const nomeados elimina os "números mágicos".
Se o valor mudar, você edita uma linha em vez de procurá-lo no programa inteiro.
#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;
}Verificação rápida
Verifique sua compreensão do comportamento de const.
Recapitulação
Uma variável const é um valor tipado e somente de leitura que o compilador protege contra alterações.
Ela tem um tipo, um escopo e um endereço, ao contrário de uma macro. Com ponteiros, const pode se aplicar aos dados, ao ponteiro ou a ambos. Em seguida, compararemos isso com #define.
Perguntas Frequentes
A aula “Variáveis const” é grátis?
Sim — o texto completo de “Variáveis const” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.
O que vou aprender em “Variáveis const”?
Torne os valores somente leitura. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C Academy?
Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Variáveis const”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C Academy?
Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.