Ponteiros para vários itens [*]T
Aponte para uma sequência de elementos.
Ponteiros para vários itens [*]T é uma aula grátis de Zig 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 Zig Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Zig Academy inclui 4 aulas no total.
Apontando para uma sequência
Às vezes, um ponteiro não aponta para um único valor, mas para o início de uma sequência de valores dispostos na memória. 🧱
O tipo [*]T
Um ponteiro para vários itens é escrito como [*]T. O asterisco dentro dos colchetes significa que ele aponta para uma quantidade desconhecida de valores T consecutivos.
var run: [*]u8 = undefined;Nenhum comprimento associado
Ao contrário de uma fatia, um ponteiro para vários itens não contém comprimento. Somente você precisa saber quantos elementos é seguro acessar.
Indexando como um vetor
Você pode indexar um ponteiro para vários itens com colchetes; assim, run[2] alcança o terceiro elemento avançando na memória.
const third = run[2];Aritmética de ponteiros
Adicionar algo a um ponteiro para vários itens move-o por elementos inteiros; portanto, run + 1 aponta para um T adiante, não para um byte adiante.
const next = run + 1;Um contra vários
Um *T aponta exatamente para um valor e não pode ser indexado; um [*]T aponta para vários e permite indexação e aritmética.
De onde eles vêm
Ponteiros para vários itens aparecem com frequência ao interagir com C, que passa um ponteiro simples para um buffer cujo comprimento é acompanhado separadamente.
Sem verificação de limites
Como o comprimento é desconhecido, a indexação de um ponteiro para vários itens não verifica os limites. Ler além do permitido resulta em comportamento indefinido.
Prefira fatias
Quando você controla o código, uma fatia []T é mais segura porque reúne o comprimento. Use [*]T principalmente nas fronteiras com C.
De ponteiro para fatia
Quando souber a quantidade, associe um comprimento com ptr[0..n] para transformar um ponteiro para vários itens em uma fatia segura, com verificação de limites.
const view = run[0..n];Existem variantes com sentinela
Zig também possui formas terminadas por sentinela, como [*:0]u8, um ponteiro cuja sequência termina em um valor conhecido, como um byte zero.
var cstr: [*:0]const u8 = "hi";Verificação rápida
Compare uma fatia []T com um ponteiro para vários itens [*]T. O que falta ao ponteiro para vários itens?
Recapitulação
Um ponteiro para vários itens [*]T endereça uma sequência de valores, permite indexação e aritmética, não tem comprimento e deve ser convertido em uma fatia sempre que possível. 🎯
Aprenda Zig com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Ponteiros para vários itens [*]T” é grátis?
Sim — o texto completo de “Ponteiros para vários itens [*]T” é 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 para vários itens [*]T”?
Aponte para uma sequência de elementos. 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 3 de 4.
Quanto tempo leva a aula “Ponteiros para vários itens [*]T”?
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
- Ponteiros para um único item com *T
- Desreferenciando com ptr.*
- Ponteiros para vários itens [*]T
- Ponteiros constantes e alinhamento