0Pricing
C Academy · Aula

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.

Todas as aulas deste curso

  1. Definindo enums
  2. Valores e intervalos de enums
  3. Variáveis const
  4. Constantes #define
← Voltar para C Academy