Chamada por Referência x Chamada por Valor: Diferença e Comparação

As funções podem ser invocadas de duas maneiras em um programa. Um método é chamado por referência e o próximo método é chamado por valor. Esses métodos podem ser diferenciados com base no tipo de valores que são passados ​​para os parâmetros.

Os parâmetros que são usados ​​neles são chamados de parâmetros reais. Eles são usados ​​em muitas linguagens de programação como C, C++ e Java.

Principais lições

  1. A chamada por referência passa o endereço de memória de uma variável para uma função, enquanto a chamada por valor envia uma cópia do valor da variável.
  2. Com a chamada por referência, as alterações feitas dentro de uma função afetam diretamente a variável original, enquanto a chamada por valor deixa a variável original inalterada.
  3. A chamada por referência é mais eficiente em termos de memória do que a chamada por valor, mas pode levar a efeitos colaterais indesejados se não for gerenciada com cuidado.

Chamada por Referência x Chamada por Valor

O vinagre branco, usado para limpar ou cozinhar, é feito pela fermentação do álcool destilado, resultando em um líquido límpido e de sabor acentuado. O vinagre de maçã é feito pela fermentação dos açúcares das maçãs e tem um sabor mais suave e levemente adocicado, usado em molhos para salada e marinadas.

Chamada por Referência x Chamada por Valor

A chamada por método de referência é usada para acessar o argumento real que é a chamada da função. Isso significa que as alterações são feitas no parâmetro somente depois que o argumento é passado.

Ele usa a mesma alocação de memória usada nos parâmetros reais. Ao chamar uma função, ao invés de copiar as variáveis, o próprio endereço é utilizado na chamada por referências.

Chamada por valor é uma sub-rotina que passa os dados reais dos parâmetros que são usados ​​na sub-rotina.

Neste método, quando você chama uma função, você está passando o valor para a variável dos argumentos na função chamada para que a função chamada trabalhe no valor. Essa alteração não será refletida na função chamada.

Tabela de comparação

Parâmetros de comparaçãoChamada por referênciaChamada por valor
VariávelA variável é passada.A cópia da variável é passada.
Valor variávelAs alterações feitas afetarão a função externa.As alterações feitas não afetarão a função externa.
Valor originalEstá modificado.Não é modificado.
SegurançaArgumentos reais não são seguros.Argumentos reais são seguros.
DefiniçãoEle usa uma variável própria para passar.Ele usa a cópia da variável para passagem.

O que é Chamada por Referência?

É um método usado para passar argumentos para uma função. Para armazenar o endereço das variáveis, são usadas variáveis ​​de ponteiro. Nesse método, os argumentos reais não são seguros.

Leia também:  IIS vs Apache: diferença e comparação

Modificações acidentais podem ser feitas. É importante lidar com as operações de argumento com cuidado. Isso ajuda a evitar alterações feitas por engano.

Ele não criará nenhum dado duplicado, pois contém apenas um valor para que possa salvar espaço de memória. Se uma pessoa ler o código, ela não poderá descobrir se os valores modificados neste código não são.

Nesse método, uma garantia vitalícia é um grande problema. Isso se tornará um perigo se você trabalhar com programas multithread e lambdas. Para declarar chamada por referência, você deve passar um endereço.

Chamada por referência quando se trata de programação C. Ele acessa diretamente os itens de dados e executa as funções neles. Mas você deve ter cuidado, pois os ponteiros estão envolvidos nele.

Se você conhece o status específico do item de dados, chame pelo id do método de referência perfeito. Modificar uma cópia dos dados não fará nada de útil

A chamada por referência tem perigos que a chamada por valor não tem. Você pode inadvertidamente reatribuir um valor a um ponteiro e perdê-lo na memória.

O que é chamada por valor?

Neste método, alterações feitas dentro da função do parâmetro não terão efeito no argumento. O programa de troca atua como o melhor exemplo de programa de chamada por valor.

Ele explica que nenhuma alteração é feita no valor, mesmo que sejam alterados dentro da função. Em Java, a chamada por método de valor significa chamar o método com seu parâmetro como um valor.

Neste método, os parâmetros são armazenados em diferentes locais de memória. Se você fizer qualquer alteração dentro do parâmetro de localização real do chamador, não será afetado.

Este método é melhor porque o valor original não é modificado. Mas você não pode fazer nenhuma alteração nas variáveis ​​reais. Os argumentos reais estarão seguros neste método, pois você não pode fazer nenhuma alteração acidentalmente. 

Leia também:  SATA vs eSATA: Diferença e Comparação

Este método conserva os dados, pois não altera a variável original. Aqui os argumentos são variáveis. Alterar uma variável em um corpo de função não é direto. Às vezes, expressões complexas podem funcionar como argumentos.

Não é eficiente em termos de memória, pois duas cópias são criadas para a mesma variável. Se o tamanho dos dados for grande, o método call-by-value não os tratará. Nesse caso, os programadores devem ir para a chamada pelo método de referência. 

Principais diferenças entre chamada por referência e chamada por valor

  1. O valor original é modificado na chamada por referência. Por outro lado, na chamada por valor o valor original não é modificado.
  2. A chamada por referência é suportada por linguagens de programação, mas não é padrão. Por outro lado, chamar por valor funciona como padrão em linguagens de programação.
  3. Na Chamada por referência, qualquer alteração feita na variável também afetará a variável fora da função. Por outro lado, na chamada por valor, qualquer alteração feita na variável não afetará a variável fora da função.
  4. A chamada por referência permite fazer alterações no valor da variável. Por outro lado, a chamada por valor não permitirá que você faça alterações.
  5. Na chamada por referência, será passado um endereço do valor. Mas na chamada por referência será passada uma cópia do valor. 
Referências
  1. https://www.jstor.org/stable/3857812
  2. ftp://prog.vub.ac.be/education/EMOOSE/ReuseSlides/merge-papers/Jackson&al1994-semanticDiff.pdf

Última atualização: 22 de julho de 2023

dot 1
Um pedido?

Eu me esforcei tanto para escrever esta postagem no blog para fornecer valor a você. Será muito útil para mim, se você considerar compartilhá-lo nas mídias sociais ou com seus amigos/família. COMPARTILHAR É ♥️

Deixe um comentário

Quer salvar este artigo para mais tarde? Clique no coração no canto inferior direito para salvar em sua própria caixa de artigos!