0Pricing
Zig Academy · Aula

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 1

Dados 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

  1. Sintaxe de funções e tipos de retorno
  2. Passagem de valores versus referências
  3. Funções pub e visibilidade
  4. Recursão e vários retornos
← Voltar para Zig Academy