Qual é a diferença entre chamada por endereço e chamada por referência

Índice:

Anonim

o principal diferença entre a chamada por endereço e a chamada por referência é que na chamada por endereço, o endereço de um argumento copia para o parâmetro formal da função, enquanto, na chamada por referência, a referência de um argumento copia para o parâmetro formal da função.

Geralmente, uma função é um conjunto de instruções que permite realizar uma tarefa várias vezes. Uma função ajuda a tornar o programa mais legível. Em linguagens de programação, como C ++, a execução começa a partir do método principal, e é possível chamar as outras funções ou métodos a partir do método principal. Essas linguagens têm vários métodos para chamar uma função. Dois desses métodos em C ++ são “chamada por endereço” e “chamada por referência”.

C ++, chamada por endereço, chamada por ponteiros, chamada por referência, função, ponteiro, referência

O que é chamada por endereço

Call By Address também é conhecido como Call By Pointers. Neste método, o programador passa os endereços dos argumentos reais para os parâmetros formais. Em seguida, a função usa os endereços para acessar os argumentos reais. Em outras palavras, as alterações feitas nos parâmetros formais afetam os argumentos reais. Para passar o valor por ponteiro, os ponteiros do argumento são passados ​​para as funções semelhantes a qualquer outro valor. Um exemplo de programa é o seguinte.

Figura 1: programa C ++ com chamada por endereço

Existem dois inteiros no programa principal: a 'e' b '. Os endereços de 'a' e 'b' são passados ​​para a função. Portanto, a função obtém esses endereços. E a variável temp ajuda a trocar os dois valores. Então, a função opera nos valores reais usando os endereços. Portanto, podemos observar que as alterações feitas dentro da função são visíveis no programa principal. Finalmente, podemos ver que os dois valores estão trocados. Agora 'a' tem 20 e 'b' tem 10.

O que é chamada por referência

Antes de entender o conceito de chamada por referência, é importante entender o conceito de variáveis ​​de referência. Assuma o código abaixo.

int a = 10;

int & b = a;

Aqui, b é uma variável de referência. Essas variáveis ​​não ocupam nenhum espaço de memória próprio. Portanto, ele compartilha a memória da variável já alocada. Em outras palavras, b compartilha a memória de a. Quando o programador muda a variável real, a variável de referência também muda. Se o programador alterar a, isso se refletirá em b, e se ele alterar b, então a usará o novo valor de b. Da mesma forma, as variáveis ​​de referência ajudam a economizar memória.

Na chamada por referência, as referências dos argumentos são copiadas para os parâmetros formais. Dentro da função, o programador pode usar as referências para acessar os argumentos reais. Portanto, as alterações feitas no parâmetro afetam o argumento real. Além disso, para passar o valor por referência, a referência do argumento é passada para as funções como qualquer outro valor.

Figura 2: programa C ++ com chamada por referência

No programa principal, existem dois inteiros no programa principal: ‘a’ e ‘b’. Esses dois valores são passados ​​para a função de troca. Na função de troca, peq são parâmetros formais. O & p e & q indicam que são variáveis ​​de referência. Em seguida, a função de troca faz alterações nos valores. Finalmente, os valores trocados são exibidos no console.

Diferença entre chamada por endereço e chamada por referência

Definição

Chamada por endereço é uma forma de chamar uma função na qual o endereço dos argumentos reais é copiado para os parâmetros formais. Mas, chamada por referência é um método de passar argumentos para uma função, copiando a referência de um argumento para o parâmetro formal. Portanto, essa é a diferença entre Call By Address e Call By Reference.

Funcionalidade

Alocação de memória

Além disso, na chamada por endereço, a memória é alocada para argumentos reais e parâmetros formais, ao passo que, na chamada por referência, a memória é alocada apenas para argumentos reais e os parâmetros formais compartilham essa memória.

Conclusão

Em resumo, Call By Address e Call By Reference são dois métodos de passar valores para uma função. A principal diferença entre Call By Address e Call By Reference é que na chamada por endereço, o endereço de um argumento copia para o parâmetro formal da função enquanto, na chamada por referência, a referência de um argumento copia para o parâmetro formal da função.

Referências:

1. Gupta, Sanjay. 07 C Chamada por valor, Chamada por endereço e Chamada por métodos de referência de chamada de função, YouTube, 3 de janeiro de 2017, disponível aqui. 2.Tutorialspoint.com. “Chamada de função C por ponteiro.” Www.tutorialspoint.com, disponível aqui. 3.Tutorialspoint.com. “Chamada de função C por referência”. Www.tutorialspoint.com, disponível aqui.

Qual é a diferença entre chamada por endereço e chamada por referência