0Pricing
C Academy · Aula

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.

  • register sugere armazenamento em um registrador, mas geralmente é ignorado
  • Não é possível obter o endereço de uma variável register
  • const torna um valor somente para leitura
  • A imutabilidade de ponteiros tem duas formas: valor somente para leitura e ponteiro constante
  • Use const generosamente 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

  1. auto e escopo local
  2. Variáveis static
  3. extern e global
  4. register e const
← Voltar para C Academy