Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

C++ Passagem por Referência: Usando Ponteiros – Exemplos Práticos

C++ Passagem por Referência: Usando Ponteiros – Exemplos Práticos

Este guia explica como passar argumentos por referência em C++ usando ponteiros, com exemplos de código claros que demonstram a troca de valores e muito mais.

No mundo das funções C++, a maneira padrão de passar dados é por valor: a função recebe uma cópia dos dados originais. Embora isso proteja a variável original, pode ser ineficiente para objetos grandes e impede que a função modifique os dados do chamador.

A passagem por referência resolve ambos os problemas. Em vez de copiar os dados, a função recebe uma referência (ou endereço) à variável original, permitindo manipulação direta. Isso é alcançado de duas formas equivalentes: usando referências C++ ou ponteiros brutos. Entender ambas as abordagens dá flexibilidade e visão mais profunda sobre o gerenciamento de memória.

// Função que recebe um valor void func1(int numVal) { // código } // Função que recebe uma referência (sintaxe de referência C++) void func2(int &numRef) { // código } int main() { int num = 5; // Passagem por valor func1(num); // Passagem por referência func2(num); return 0; }

O & em void func2(int &numRef) indica que o parâmetro é uma referência. Quando func2 é chamado, o endereço de num é passado, não seu valor, permitindo que a função modifique num diretamente.

C++ Passagem por Referência: Usando Ponteiros – Exemplos Práticos

Exemplo 1: Troca de Valores com Referências C++

#include <iostream> using namespace std; // Função de troca usando referências void swap(int &n1, int &n2) { int temp = n1; n1 = n2; n2 = temp; } int main() { int a = 1, b = 2; cout << "Antes da troca\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; swap(a, b); cout << "\nDepois da troca\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; }

Saída

Antes da troca a = 1 b = 2 Depois da troca a = 2 b = 1

Neste exemplo, swap recebe duas referências. Como n1 e n2 são aliases para a e b, as mudanças dentro da função afetam as variáveis originais.


Exemplo 2: Troca de Valores com Ponteiros

#include <iostream> using namespace std; // Protótipo da função usando ponteiros void swap(int*, int*); int main() { int a = 1, b = 2; cout << "Antes da troca\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; // Passar endereços de a e b swap(&a, &b); cout << "\nDepois da troca\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; } // Função de troca usando ponteiros void swap(int* n1, int* n2) { int temp = *n1; *n1 = *n2; *n2 = temp; }

Saída

Antes da troca a = 1 b = 2 Depois da troca a = 2 b = 1

Aqui, swap aceita ponteiros brutos. Ao desreferenciar com *, a função acessa e modifica os valores nos endereços fornecidos. O resultado é idêntico à versão com referências, mas a sintaxe de ponteiros torna a passagem de endereços explícita.

A escolha entre referências e ponteiros depende do contexto: referências oferecem sintaxe mais segura e limpa, enquanto ponteiros fornecem controle explícito sobre endereços de memória e são necessários para alocação dinâmica.

Linguagem C

  1. Dominando Declarações Using em C#: Imports, Aliases e Diretivas Estáticas
  2. Dominando Operadores em C++: Guia Completo com Exemplos Práticos
  3. Comentários em C++: Boas Práticas para Código Legível e Manutenível
  4. Dominando Templates de Classe em C++: Um Guia Prático
  5. Dominando Ponteiros em C: Um Tutorial Prático e Guiado por Especialistas
  6. Dominando Ponteiros em C++: Conceitos, Exemplos e Aplicações Práticas
  7. 13 Tipos de Malware em 2021: Ameaças, Exemplos e Prevenção
  8. 5 Modelos de Data Center Explicados: Design, Casos de Uso e Exemplos
  9. Explorando 8 Tendências Tecnológicas-Chave de 2021 com Exemplos do Mundo Real
  10. Dominando Ponteiros em C: Passos Práticos para Programação Avançada