Menu
Coddy logo textTech

Passagem por Referência

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 41 de 56.

Quando você passa argumentos para funções, o C++ normalmente cria cópias dos valores. Isso significa que alterações dentro da função não afetam as variáveis originais. A passagem por referência altera esse comportamento, permitindo que as funções trabalhem diretamente com as variáveis originais.

Para passar por referência, adicione o símbolo & após o tipo do parâmetro na declaração da sua função:

void doubleValue(int& number) {
    number = number * 2;  // Modifica a variável original
}

Quando você chama esta função, quaisquer alterações feitas no parâmetro dentro da função modificarão diretamente a variável original que foi passada. Isso é particularmente útil quando você deseja que uma função modifique seus argumentos ou ao trabalhar com objetos grandes onde a cópia seria ineficiente.

A passagem por referência elimina a sobrecarga de copiar dados, tornando seus programas mais rápidos e eficientes em termos de memória, especialmente com estruturas de dados complexas como vetores ou mapas.

challenge icon

Desafio

Fácil

Crie uma função que demonstre a passagem por referência modificando variáveis diretamente através dos parâmetros da função. Este desafio testará sua compreensão de como o símbolo & permite que as funções trabalhem com as variáveis originais em vez de cópias.

As seguintes entradas serão fornecidas:

  • Um número inteiro value1 representando o primeiro número
  • Um número inteiro value2 representando o segundo número
  • Um número inteiro value3 representando o terceiro número

Seu programa deve:

  1. Criar uma função chamada tripleValues que recebe três parâmetros inteiros por referência
  2. Dentro da função, multiplicar cada parâmetro por 3
  3. Na função principal, ler os três valores de entrada e armazená-los em variáveis
  4. Imprimir os valores originais antes de chamar a função
  5. Chamar a função tripleValues com as três variáveis
  6. Imprimir os valores modificados após a chamada da função para mostrar que eles foram alterados

Use o seguinte formato de saída exato:

Antes da chamada da função:

Original values: [value1] [value2] [value3]

Após a chamada da função:

Tripled values: [new_value1] [new_value2] [new_value3]

A assinatura da função deve usar o símbolo & após cada tipo de parâmetro para indicar a passagem por referência: void tripleValues(int& a, int& b, int& c). Isso permite que a função modifique diretamente as variáveis originais passadas para ela, demonstrando a diferença fundamental entre passagem por valor e passagem por referência. As variáveis na função principal serão alteradas permanentemente após a chamada da função, provando que a função trabalhou com os locais de memória originais em vez de cópias.

Experimente você mesmo

#include <iostream>
using namespace std;

// TODO: Crie a função tripleValues aqui

int main() {
    // Ler os valores de entrada
    int value1, value2, value3;
    cin >> value1 >> value2 >> value3;
    
    // Imprime os valores originais
    cout << "Original values: " << value1 << " " << value2 << " " << value3 << endl;
    
    // TODO: Chame a função tripleValues aqui
    
    // Imprime os valores modificados
    cout << "Tripled values: " << value1 << " " << value2 << " " << value3 << endl;
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo