Ponteiros para um único item com *T
Aponte exatamente para um valor.
Ponteiros para um único item com *T é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 1 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.
Um ponteiro aponta
Um ponteiro armazena o endereço de um valor que está em outro lugar da memória, em vez de armazenar o próprio valor. 📍
O tipo *T
Um ponteiro para um único item tem o tipo *T, em que T é aquilo para o qual ele aponta. Assim, *i32 significa um ponteiro para um único valor i32.
var p: *i32 = undefined;Obtendo um endereço
Use o operador & diante de uma variável para obter um ponteiro para ela. O resultado é o endereço onde esse valor está armazenado.
var x: i32 = 10;
const p = &x;Apenas um valor
Um ponteiro para um único item garante que se refere exatamente a um valor, não a um vetor. O compilador acompanha isso para você.
Ponteiros têm tamanho
Um ponteiro é apenas um endereço, portanto seu tamanho é o da palavra da máquina, não o tamanho de T. Apontar para uma estrutura enorme ainda custa um único endereço.
Mutável por padrão
Um *T simples permite ler e escrever o valor para o qual aponta. Mais tarde, você adicionará const para torná-lo somente leitura.
var n: i32 = 1;
const p: *i32 = &n;Ponteiros compartilham, não copiam
Passar um ponteiro para uma função compartilha o valor original, portanto as alterações feitas por meio dele ficam visíveis para quem chamou a função.
fn bump(p: *i32) void {
p.* += 1;
}Endereço de uma constante
Obter &x em uma constante fornece um *const i32, porque Zig não permite escrever por meio de um ponteiro para dados imutáveis.
const x: i32 = 5;
const p = &x;Ponteiros nunca são nulos
Um ponteiro comum de Zig nunca pode ser nulo. Se um valor puder estar ausente, você deverá usar um ponteiro opcional, como ?*T.
A inferência de tipos ajuda
Quando você escreve const p = &x, Zig infere o tipo do ponteiro a partir de x, então raramente é necessário escrever *i32 manualmente.
var score: u8 = 42;
const p = &score;Por que usar ponteiros
Os ponteiros permitem modificar um valor no próprio local e evitar a cópia de dados grandes, algo fundamental para o controle de baixo nível explícito de Zig.
Verificação rápida
Você quer que uma função altere a variável de quem a chamou. Qual deve ser o tipo do parâmetro?
Recapitulação
Um ponteiro para um único item *T armazena o endereço de exatamente um valor, é obtido com &, nunca é nulo e permite compartilhar dados em vez de copiá-los. 🎯
Perguntas Frequentes
A aula “Ponteiros para um único item com *T” é grátis?
Sim — o texto completo de “Ponteiros para um único item com *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 um único item com *T”?
Aponte exatamente para um valor. 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 1 de 4.
Quanto tempo leva a aula “Ponteiros para um único item com *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