Diferença entre Chamada por valor e Chamada por referência

Diferença de chave - Chamada por valor vs Chamada por referência
 

Muitas linguagens de programação usam funções. Uma função é um conjunto de instruções para executar uma tarefa específica. O código principal pode ser dividido em várias funções e chamá-los. Existem duas maneiras de chamar uma função, como chamar por valor e chamar por referência. No método de chamada por valor, cópias de variáveis ​​são passadas para a função. Se houver uma alteração no valor da função, ela não altera o valor original. Na chamada por referência, as alterações da variável dentro da função refletem o valor original. o diferença chave entre chamada por valor e chamada por referência é que, na chamada por valor, a cópia das variáveis ​​é passada para a função e na chamada por referência, os endereços das variáveis ​​são passados ​​para a função.  Este artigo discute a diferença entre chamada por valor e chamada por referência.

CONTEÚDO

1. Visão geral e principais diferenças
2. O que é Chamada por Valor
3. O que é Chamada por Referência
4. Semelhanças entre Chamada por Valor e Chamada por Referência
5. Comparação lado a lado - Chamada por valor vs Chamada por referência em forma de tabela
6. Resumo

O que é Chamada por Valor?

Na chamada por valor, cópias de variáveis ​​são passadas para a função. A função pode alterar esse valor copiado, mas não altera o valor original. Este conceito pode ser facilmente entendido trocando o programa de dois números. Consulte o programa C abaixo, escrito usando o ambiente Code Blocks.

Figura 01: Programa para trocar dois números

De acordo com o programa abaixo, a variável 'a' tem o valor 20 e a variável 'b' tem o valor 30. Ao chamar a função swap (a, b), esses dois valores são passados ​​para a função swap. Na função de troca, 'a' é copiado para 'x' e 'b' é copiado para 'y'. Agora, 'x' está tendo o valor 20 e 'y' está tendo o valor 30. Usando a variável temp, os dois valores são trocados. Ao imprimir o valor de 'x' e 'y' dentro dessa função de troca, a saída fornecerá 30 para 'x' e 20 para 'y'. Quando a execução da função de troca termina, o controle retorna à função principal. Ao imprimir os valores de 'a' e 'b', na função principal, os resultados serão os valores originais. São 20 para 'a' e 30 para 'b'. As alterações feitas usando a função swap não refletem no programa principal.

Figura 02: Saída do programa de troca

'x' e 'y' dentro da função de troca têm os valores trocados que são 30 e 20, mas esses valores não podem ser usados ​​no programa principal. Mesmo que 'x' e 'y' tenham valores trocados, eles são variáveis ​​locais para trocar a função e não podem ser acessados ​​pela função principal. Para evitar esse problema, chamada por referência pode ser usada.

O que é chamada por referência?

Nesse método, os endereços das variáveis ​​são enviados para a função. Consulte o programa C abaixo, escrito usando o ambiente Code Blocks.

Figura 03: Troca de dois números usando ponteiros

De acordo com o exemplo abaixo, o valor de 'a' é 20 e o valor de 'b' é 30. Em vez de passar cópias de 'a' e 'b', o programador pode enviar os endereços de 'a' e 'b 'usando a função, swap (& a, & b).

Figura 04: Saída do programa de troca usando ponteiros

Na troca, a função deve usar ponteiros porque os endereços são passados ​​e esses endereços devem ser mantidos por ponteiros. Dentro da função, o endereço de 'a' é copiado para 'x' e o endereço de 'b' é copiado para 'y'. Usando a variável temp, os valores 'x' e 'y' são trocados. Nesta chamada pelo método de referência, as alterações dentro da função swap refletem no programa principal. Imprimir os valores de 'a' e 'b' no principal fornecerá os valores trocados. Agora, a saída de 'a' é 30 e 'b' é 20. Como a função está recebendo o endereço das variáveis, as alterações feitas dentro da função afetam os valores originais.

Qual é a semelhança entre chamada por valor e chamada por referência?

  • Esses dois métodos são usados ​​para chamar funções / métodos.

Qual é a diferença entre Chamada por valor e Chamada por referência?

Chamada por valor vs Chamada por referência

Na chamada por valor, cópias de variáveis ​​são passadas para a função, para que as alterações feitas dentro da função não modifiquem o valor original.. Na chamada por referência, o endereço das variáveis ​​é passado para a função, portanto, as alterações feitas nas variáveis ​​dentro da função modificarão o valor original.
 Modificação de valor
Na chamada por valor, o valor original não está mudando. Na chamada por referência, os valores originais estão mudando.

Sumário - Chamada por valor vs Chamada por referência

Chamada por valor e chamada por referência são métodos para chamar a função. A diferença entre chamada por valor e chamada por referência é que, na chamada por valor, as cópias das variáveis ​​são passadas para a função e na chamada por referência, os endereços das variáveis ​​são passados ​​para a função. O uso de chamada por valor ou chamada por referência depende da tarefa a ser executada.

Baixe a versão em PDF de Chamada por valor vs Chamada por referência

Você pode fazer o download da versão em PDF deste artigo e usá-la para fins offline, conforme nota de citação. Faça o download da versão em PDF aqui Diferença entre Chamada por valor e Chamada por referência

Referência:

1.Jaiswal, Haresh. "11 Chamada por valor x Chamada por referência." Youtube, YouTube, 24 de dezembro de 2015. Disponível aqui