register e const
Dicas e imutabilidade.
register e const é uma aula grátis de C Academy no CoddyKit. Esta é a aula 4 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.
A dica de registro
register sugere que uma variável seja mantida em um registrador da CPU para ganhar velocidade. É apenas uma dica; os compiladores modernos geralmente a ignoram.
#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;
}Não é possível obter seu endereço
Como uma variável register talvez não fique na memória, não é permitido obter seu endereço com &.
#include <stdio.h>
int main(void) {
register int x = 10;
printf("x = %d\n", x);
return 0;
}Por que register é raro atualmente
Os compiladores otimizadores já colocam as variáveis usadas intensivamente em registradores. Hoje, essa palavra-chave é principalmente 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;
}O qualificador somente para leitura
const torna uma variável somente para leitura após a inicialização. Tentar alterá-la gera um erro de compilação.
#include <stdio.h>
int main(void) {
const int DAYS = 7;
printf("DAYS = %d\n", DAYS);
return 0;
}Constantes documentam a intenção
Usar const para valores fixos torna o código mais claro e protege contra alterações acidentais.
#include <stdio.h>
int main(void) {
const double PI = 3.14159;
double r = 2.0;
printf("area = %.2f\n", PI * r * r);
return 0;
}Somente para leitura com ponteiros
const int *p significa que o valor apontado não pode ser alterado por meio de p. O ponteiro em si ainda pode ser alterado.
#include <stdio.h>
int main(void) {
int x = 5;
const int *p = &x;
printf("*p = %d\n", *p);
return 0;
}Ponteiro constante
int * const p significa que o ponteiro não pode ser alterado, mas o valor para o qual ele aponta pode.
#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 função somente para leitura
Marcar um parâmetro como const garante que a função não o modificará, o que ajuda quem a chama a entender seu comportamento.
#include <stdio.h>
void show(const int n) {
printf("n = %d\n", n);
}
int main(void) {
show(42);
return 0;
}Imutável por projeto
Prefira const para qualquer valor que não deva mudar. Isso detecta erros no momento da compilação.
#include <stdio.h>
int main(void) {
const int LIMIT = 100;
int x = 90;
if (x < LIMIT)
printf("under limit\n");
return 0;
}Combinando constantes e variáveis globais
Uma variável global const é uma constante compartilhada e segura, disponível em todo o arquivo.
#include <stdio.h>
const int VERSION = 2;
int main(void) {
printf("VERSION = %d\n", VERSION);
return 0;
}Combinando registro e somente para leitura
É possível até marcar um contador de laço das duas formas, embora, nesse caso, somente para leitura signifique que o corpo do laço não pode alterá-lo.
#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;
}Verificação rápida
Verifique sua compreensão sobre armazenamento em registradores e valores somente para leitura.
Recapitulação: registradores e valores somente para leitura
Você aprendeu sobre dois qualificadores.
registersugere armazenamento em um registrador, mas geralmente é ignorado- Não é possível obter o endereço de uma variável
register consttorna um valor somente para leitura- A imutabilidade de ponteiros tem duas formas: valor somente para leitura e ponteiro constante
- Use
constgenerosamente para aumentar a segurança
Perguntas Frequentes
A aula “register e const” é grátis?
Sim — o texto completo de “register e 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 “register e const”?
Dicas e imutabilidade. 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 4 de 4.
Quanto tempo leva a aula “register e 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.
Todas as aulas deste curso
- auto e escopo local
- Variáveis static
- extern e global
- register e const