Passagem de valores versus referências
Entenda como os argumentos chegam à sua função.
Passagem de valores versus referências é uma aula grátis de Zig Academy no CoddyKit. Esta é a aula 2 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.
Como os Argumentos São Passados
Quando você chama uma função, Zig precisa colocar seus dados dentro dela. Há duas formas: passar o próprio valor ou passar uma referência a ele. 🚚
Passar por Valor Faz uma Cópia
Por padrão, os argumentos primitivos são passados por valor: a função recebe sua própria cópia e não pode alterar o original.
fn addOne(n: i32) i32 {
return n + 1;
}As Cópias Permanecem Independentes
Como é uma cópia, as alterações dentro da função nunca afetam o chamador. Sua variável externa permanece exatamente como estava.
Os Parâmetros São Imutáveis
Os parâmetros de funções em Zig são imutáveis. Você não pode reatribuir um parâmetro dentro do corpo, o que mantém a intenção clara.
Passe um Ponteiro para Compartilhar
Para permitir que uma função altere seus dados, passe um ponteiro com *T. Assim, a função trabalha com seu valor real, não com uma cópia.
fn bump(n: *i32) void {
n.* += 1;
}Desreferencie para Acessá-lo
Dentro da função, use .* para ler ou escrever por meio do ponteiro. n.* += 1 atualiza o valor que o chamador ainda mantém.
Obtenha o Endereço com &
No local da chamada, passe um endereço usando &. Assim, bump(&count) permite que a função modifique count diretamente.
var count: i32 = 0;
bump(&count); // count is now 1Dados Grandes Preferem Referências
Para estruturas grandes, fazer cópias é desperdício. Passar um ponteiro const compartilha os dados com baixo custo, sem permitir alterações.
fn area(r: *const Rect) i32 {
return r.w * r.h;
}Um Ponteiro const Significa Somente Leitura
Um *const T permite que a função leia seus dados, mas nunca escreva neles. Você obtém velocidade sem abrir mão da segurança.
Slices Já São Visões
Um slice como []const u8 contém um ponteiro e um comprimento, portanto passá-lo compartilha os dados subjacentes sem fazer uma cópia completa.
Escolha com Base na Intenção
Passe por valor dados pequenos e somente para leitura; passe um ponteiro quando precisar alterar os dados ou quando eles forem grandes.
Verificação Rápida
Você quer que uma função altere a variável do chamador. Qual forma de parâmetro permite isso?
Recapitulação
Os valores são copiados e não podem alterar seus originais; os ponteiros os compartilham. Use *T para modificar e *const T para ler dados grandes rapidamente. 🎯
Perguntas Frequentes
A aula “Passagem de valores versus referências” é grátis?
Sim — o texto completo de “Passagem de valores versus referências” é 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 “Passagem de valores versus referências”?
Entenda como os argumentos chegam à sua função. 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 2 de 4.
Quanto tempo leva a aula “Passagem de valores versus referências”?
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
- Sintaxe de funções e tipos de retorno
- Passagem de valores versus referências
- Funções pub e visibilidade
- Recursão e vários retornos