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

Índice:

Anonim

o principal diferença entre passagem por valor e passagem por referência é que, em uma passagem por valor, o valor do parâmetro é copiado para outra variável enquanto, em uma passagem por referência, o parâmetro real passa para a função.

Um programa de computador é um conjunto de instruções que direciona a CPU para realizar uma determinada tarefa. Existem vários conceitos em programação para escrever programas eficientes e eficazes. Um deles é a função, que é um grupo de instruções reutilizáveis. Em vez de escrever todas as instruções no mesmo programa, é possível dividi-lo em várias funções e chamá-las no programa principal. Isso torna os programas mais gerenciáveis ​​e fáceis de manter. Para isso, existem dois métodos de chamar uma função. Eles estão usando passagem por valor ou passagem por referência.

Passe por valor, passe por referência

O que é passagem por valor

Na passagem por valor, o valor de um parâmetro de função é copiado para outro local da memória. Ao acessar ou modificar a variável dentro da função, acessa apenas a cópia. Portanto, não há efeito no valor original.

Figura 1: Programa C com passagem por valor

No programa ilustrado acima, o valor da variável armazena o inteiro 5. O findNewValue é uma função. O valor é passado para essa função. Na função, o valor é então copiado para um novo local de memória chamado newValue. A função então retorna um inteiro. E, esse inteiro é armazenado na variável newValue da função principal. Finalmente, o novo valor é impresso no console.

Na função, o valor copiado para um novo local de memória é denominado newValue. As alterações são feitas nesse novo valor, não no valor original. Este método é denominado Passagem por Valor.

O que é passagem por referência

Na passagem por referência, o endereço da memória é passado para essa função. Em outras palavras, a função obtém acesso à variável real. Um exemplo é o seguinte.

Figura 2: Programa C com passagem por referência

O valor da variável armazena o inteiro 5. O findNewValue é uma função. O endereço do 'valor' do local da memória é passado para essa função. Assim, a função obtém esse valor. O newValue é um ponteiro. Ele aponta para o local da memória original denominado valor. A função adiciona 5 ao valor original apontado por newValue. Em seguida, o valor calculado é retornado e armazenado na variável newValue. Finalmente, o novo valor é impresso no console.

Nesse método, a localização da memória passa para a função. Portanto, as alterações são feitas no valor original. Portanto, esse método é denominado Passar por Referência.

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

Definição

A passagem por valor se refere a um mecanismo de cópia do valor do parâmetro da função para outra variável, enquanto a passagem por referência se refere a um mecanismo de passagem dos parâmetros reais para a função. Assim, esta é a principal diferença entre passagem por valor e passagem por referência.

Alterar

Na passagem por valor, as alterações feitas dentro da função não são refletidas no valor original. Por outro lado, na passagem por referência, as alterações feitas dentro da função refletem-se no valor original. Portanto, esta é outra diferença entre passagem por valor e passagem por referência.

Parâmetro real

Associação com Função

Outra diferença entre passagem por valor e passagem por referência é que, na passagem por valor, a função obtém uma cópia do conteúdo real enquanto, na passagem por referência, a função acessa o conteúdo da variável original.

Requisito de Memória

Além disso, a passagem por valor requer mais memória do que a passagem por referência.

Requisito de tempo

A exigência de tempo é outra diferença entre a passagem por valor e a passagem por referência. A passagem por valor requer mais tempo, pois envolve a cópia de valores, enquanto a passagem por referência requer menos tempo, pois não há cópia.

Conclusão

A principal diferença entre passagem por valor e passagem por referência é que, na passagem por valor, o valor do parâmetro é copiado para outra variável, enquanto na passagem por referência, o parâmetro real passa para a função.

Referência:

1. “Funções em C - Javatpoint.” Www.javatpoint.com, disponível aqui.

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