0Pricing
Zig Academy · Aula

Ponteiros constantes e alinhamento

Expresse acesso somente para leitura e organização na memória.

Ponteiros constantes e alinhamento é uma aula grátis de Zig 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 Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.

Acesso somente para leitura

Muitas vezes, você quer compartilhar um valor, mas promete não alterá-lo. Um ponteiro const concede acesso de leitura e proíbe escritas.

O tipo *const T

Escreva um ponteiro para dados imutáveis como *const T. Você pode lê-los por meio dele, mas atribuir algo ao destino gera um erro de compilação.

const x: i32 = 5;
const p: *const i32 = &x;

Constante acompanha &

Obter o endereço de um valor constante produz automaticamente um *const T, portanto a imutabilidade é preservada pelo tipo.

const v: u8 = 9;
const p = &v; // *const u8

Mutável converte para constante

Um *T é convertido livremente para *const T, pois remover a permissão de escrita é sempre seguro. O inverso não é permitido.

var n: i32 = 1;
const ro: *const i32 = &n;

Por que preferir const

Aceitar um parâmetro *const T indica aos chamadores que você fará apenas leituras, o que torna as funções mais confiáveis.

fn show(p: *const i32) void {
    // read only
}

O que significa alinhamento

Todo tipo tem um alinhamento: o limite de endereço em que ele deve estar. Um u32 geralmente precisa de um endereço divisível por quatro.

Consultar com @alignOf

O recurso integrado @alignOf(T) retorna o alinhamento exigido por um tipo em bytes, assim como @sizeOf retorna seu tamanho.

const a = @alignOf(u32);

Alinhamento no tipo

Você pode indicar o alinhamento de um ponteiro no tipo usando align, como em *align(4) u8, para exigir um limite específico.

var p: *align(4) u8 = undefined;

Por que o alinhamento importa

O hardware lê dados alinhados mais rapidamente, e algumas CPUs geram um erro de hardware ao acessar dados desalinhados. Zig acompanha o alinhamento no tipo para manter isso correto.

Alinhamento acima e abaixo do necessário

Um ponteiro pode prometer um alinhamento mais forte que o padrão, mas você não pode enfraquecê-lo sem uma conversão explícita como @alignCast.

Constante e alinhamento juntos

Os dois combinam naturalmente: um *const align(8) T é um ponteiro somente para leitura que também garante um limite de oito bytes.

Verificação rápida

Você escreve uma função que precisa apenas ler o valor por trás de um ponteiro. Que tipo de parâmetro expressa melhor essa intenção?

Recapitulação

Um ponteiro *const T compartilha dados somente para leitura e é convertido a partir de *T, enquanto o alinhamento, consultado por meio de @alignOf e align(n), mantém o acesso à memória correto e rápido. 🎯

Perguntas Frequentes

A aula “Ponteiros constantes e alinhamento” é grátis?

Sim — o texto completo de “Ponteiros constantes e alinhamento” é 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 Zig Academy, atualize para CoddyKit PRO. O curso de Zig Academy inclui 4 aulas no total.

O que vou aprender em “Ponteiros constantes e alinhamento”?

Expresse acesso somente para leitura e organização na memória. Você pratica Zig 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 Zig Academy?

Nenhuma experiência prévia é necessária. Zig 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 “Ponteiros constantes e alinhamento”?

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 Zig Academy?

Sim. Cada aula de Zig 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. Ponteiros para um único item com *T
  2. Desreferenciando com ptr.*
  3. Ponteiros para vários itens [*]T
  4. Ponteiros constantes e alinhamento
← Voltar para Zig Academy