Escreva um programa completo em C++ com duas funções alternativas especificadas a seguir, cada uma simplesmente triplicando a variável count definida em main. Depois, compare as duas técnicas. Essas duas funções são:
a) a função tripleByValue, que passa uma cópia de count por valor, triplica a cópia e retorna o novo valor, e
b) a função tripleByReference, que passa count por referência por meio de um parâmetro de referência e triplica o valor original de count por meio de seu alias (ou seja, o parâmetro de referência).
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!! Bora para mais um exercício.
Vamos escrever um programa que calcular o valor triplo de um numero utilizando esse valor como referências em duas funções separadas.
A primeira função é a função tripleByValue, que passa uma cópia de count por valor, triplica a cópia e retorna o novo valor. A segunda é a função tripleByReference, que passa count por referência por meio de um parâmetro de referência e triplica o valor original de count por meio do parâmetro de referência.
Passo 2
Primeiro vamos escrever as duas funções para depois chamar elas dentro da função principal main() que irá pedir para o usuário inserir os valores para ser triplicado. A função tripleByValue ficará da seguinte forma:
//função tripleByValue
int tripleByValue (int countCopy){
return countCopy *=3;
}
E a função tripleByReference:
//função tripleByReference
void tripleByReference( int ¶mRef){
paramRef *= 3;
}
Passo 3
Agora vamos escrever o restante do nosso código que começará declarando o arquivo de cabeçalho, o uso dos namespace e os protótipos das funções. Em seguida iremos chamar as duas funções criadas dentro do main() e exibir o resultados dos valores. O código ficará da seguinte forma:
//arquivo de cabeçalho
#include
// namespace
using std::cout;
using std::endl;
using std::cin;
// protótipo das funções
int tripleByValue( int );
void tripleByReference( int &);
int main(){
// declaração das variaveis
int count, &countRef = count;
//prompt para inserir os valores
cout
cin >> count;
cout
cout
cout
cout
tripleByReference(countRef);
cout
return 0 ;
}
Passo 4
Agora vamos analisar a saída do nosso programa, inserindo o valor 10 como entrada

Fazendo a comparação entre as duas funções, podemos chegar as seguintes conclusões:
Chama por valor (tripleByValue):
1) Uma nova localização da memória é criada para utilização dentro da sub-rotina e a memória é liberada assim que a sub-rotina termina.
2) As alterações à variável não são afetadas fora da sub-rotina
3) O compilador obtém a cópia da variável e, portanto, qualquer alteração feita no valor em uma função não reflete de volta
Chamada por referência (tripleByReference):
1) O ponteiro é passado para o local de memória
2) Alterações na variável enquanto na sub-rotina afetam a variável fora da sub-rotina
3) o compilador trabalha na variável original e, portanto, as alterações no valor refletem de volta
E assim finalizamos nosso exercício galera!!! Até o próximo.
Resposta
Código completo:
