Zig Academy · Aula

Ponteiros para vários itens [*]T

Aponte para uma sequência de elementos.

Aula 3 de 413 etapas

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. 🎯

Grátis para começar

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

  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