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.

Folha de consulta

Para passar por referência em C++, 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
}

A passagem por referência permite que as funções trabalhem diretamente com as variáveis originais em vez de cópias. As alterações feitas nos parâmetros dentro da função modificarão as variáveis originais que foram passadas.

Isso elimina a sobrecarga de copiar dados, tornando os programas mais rápidos e eficientes em termos de memória, especialmente com estruturas de dados complexas como vetores ou mapas.

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