Qual é a diferença entre chamada por valor e chamada por endereço

Índice:

Anonim

o principal diferença entre chamada por valor e chamada por endereço é que, na chamada por valor, os valores dos parâmetros reais são copiados para os parâmetros formais da função, enquanto na chamada por endereço, os endereços dos parâmetros reais são copiados para o parâmetro formal da função.

Uma função é um conjunto de instruções que executa uma determinada tarefa várias vezes. Em vez de escrever todas as instruções do programa dentro do método principal, podemos dividir o programa em várias funções e chamá-las quando necessário. Além disso, isso torna o programa reutilizável e mais fácil de ler. Existem dois tipos de argumentos relacionados às funções: parâmetros reais e formais. Os parâmetros reais são os valores que passam para a função ao invocá-la, enquanto os parâmetros formais são as variáveis ​​dentro das funções que recebem valores ao chamar a função. Dois métodos para chamar uma função em linguagens de programação como ‘C’ são chamada por valor e chamada por endereço.

Chamada por valor, chamada por endereço, funções

O que é chamada por valor

Uma função executa a tarefa definida e retorna a resposta. Se o tipo de retorno for nulo, ele executará a tarefa e não retornará nenhum valor. Na chamada por valor, os argumentos reais são copiados para os parâmetros formais da função. A função usa os valores nos parâmetros formais, não os parâmetros reais. Portanto, os valores originais não mudam. Um exemplo é o seguinte.

Figura 1: Programa com chamada por valor

No exemplo acima, existem dois valores inteiros no método principal como ‘a’ e ‘b’. A função de troca obtém esses dois valores. Dentro da função, o valor ‘a’ é copiado para xe o valor b é copiado para y. Portanto, x é 10 ey é 20. Dentro da função, a variável temp ajuda a trocar esses dois valores. Agora x é 20 ey é 10. Depois de executar a função, o controle volta para a função principal. Ao imprimir 'a' e 'b', ele imprime os valores originais, ou seja, 10 para 'a' e 20 para 'b'. Portanto, isso é chamado por valor. Nesse caso, o valor real não muda. Mas, a mudança reflete apenas dentro da função.

O que é chamada por endereço

Outro nome para chamada por endereço é chamada por ponteiros. O método de chamada por endereço copia os endereços dos argumentos em parâmetros formais. A função usa os endereços para acessar os valores reais. Portanto, as alterações feitas dentro da função refletem nos valores originais. Um exemplo é o seguinte.

Figura 2: Programa com chamada por endereço

No exemplo acima, existem dois inteiros no programa principal como ‘a’ e ‘b’. Os endereços de 'a' e 'b' passam a funcionar. A função obtém esses endereços. A variável temp ajuda a trocar os dois valores. Como a função opera nos valores reais usando os endereços, as alterações dentro da função são visíveis no programa principal. Portanto, embora os valores reais 'a' e 'b' sejam 10 e 20, agora o valor 'a' é 20 e o valor 'b' é 10.

Diferença entre chamada por valor e chamada por endereço

Definição

Chamada por valor é uma forma de passar argumentos para uma função, copiando os valores reais dos argumentos em parâmetros formais da função, enquanto Chamada por ponteiro é uma maneira de passar argumentos para uma função copiando os endereços dos argumentos para os parâmetros formais de a função.

Funcionalidade

Na chamada por valor, os valores dos parâmetros reais são copiados para os parâmetros formais da função. No entanto, na chamada por endereço, os endereços dos parâmetros reais são copiados para o parâmetro formal da função. Assim, a funcionalidade é a principal diferença entre chamada por valor e chamada por endereço.

Efeito nos valores originais

Outra grande diferença entre chamada por valor e chamada por endereço é seu efeito sobre os valores originais. Chamada por valor não afeta os valores originais, enquanto Chamada por endereço afeta os valores originais.

Conclusão

A principal diferença entre chamada por valor e chamada por endereço é que, na chamada por valor, os valores dos parâmetros reais copiam para os parâmetros formais da função, enquanto na chamada por endereço, os endereços dos parâmetros reais copiam para o parâmetro formal da função. Em resumo, chamada por valor não altera o valor original, enquanto chamada por endereço altera os valores originais.

Referência:

1. “Funções C”. Www.tutorialspoint.com, Tutorials Point, disponível aqui.

Qual é a diferença entre chamada por valor e chamada por endereço