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.
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
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.
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.
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. |
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.
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
1.Jaiswal, Haresh. "11 Chamada por valor x Chamada por referência." Youtube, YouTube, 24 de dezembro de 2015. Disponível aqui