Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ Call by Reference: Pointers gebruiken – Praktische voorbeelden

C++ Call by Reference: Pointers gebruiken – Praktische voorbeelden

Deze gids legt uit hoe argumenten per referentie in C++ door te geven met pointers, met duidelijke codevoorbeelden die waarden wisselen en meer demonstreren.

In de wereld van C++ functies is de standaardmanier om data door te geven per waarde: de functie ontvangt een kopie van de originele data. Hoewel dit de originele variabele beschermt, kan het inefficiënt zijn voor grote objecten en voorkomt het dat de functie de data van de aanroeper wijzigt.

Doorgeven per referentie lost beide problemen op. In plaats van de data te kopiëren, ontvangt de functie een referentie (of adres) naar de originele variabele, wat directe manipulatie toestaat. Dit wordt op twee equivalente manieren bereikt: met C++ referenties of raw pointers. Beide benaderingen begrijpen geeft u flexibiliteit en dieper inzicht in geheugenbeheer.

// Functie die een waarde neemt void func1(int numVal) { // code } // Functie die een referentie neemt (C++ referentie-syntax) void func2(int &numRef) { // code } int main() { int num = 5; // Per waarde doorgeven func1(num); // Per referentie doorgeven func2(num); return 0; }

De & in void func2(int &numRef) geeft aan dat de parameter een referentie is. Wanneer func2 aangeroepen wordt, wordt het adres van num doorgegeven, niet de waarde, wat de functie in staat stelt num direct te wijzigen.

C++ Call by Reference: Pointers gebruiken – Praktische voorbeelden

Voorbeeld 1: Waarden wisselen met C++ Referenties

#include <iostream> using namespace std; // Swap-functie met referenties void swap(int &n1, int &n2) { int temp = n1; n1 = n2; n2 = temp; } int main() { int a = 1, b = 2; cout << "Voor wisselen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; swap(a, b); cout << "\nNa wisselen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; }

Output

Voor wisselen a = 1 b = 2 Na wisselen a = 2 b = 1

In dit voorbeeld ontvangt swap twee referenties. Omdat n1 en n2 aliassen zijn voor a en b, beïnvloeden wijzigingen binnen de functie de originele variabelen.


Voorbeeld 2: Waarden wisselen met Pointers

#include <iostream> using namespace std; // Functie-prototype met pointers void swap(int*, int*); int main() { int a = 1, b = 2; cout << "Voor wisselen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; // Adressen van a en b doorgeven swap(&a, &b); cout << "\nNa wisselen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; } // Swap-functie met pointers void swap(int* n1, int* n2) { int temp = *n1; *n1 = *n2; *n2 = temp; }

Output

Voor wisselen a = 1 b = 2 Na wisselen a = 2 b = 1

Hier accepteert swap raw pointers. Door te derefereren met *, heeft de functie toegang tot en wijzigt de waarden op de opgegeven adressen. Het resultaat is identiek aan de referentieversie, maar de pointer-syntax maakt het adresdoorgeven expliciet.

Kiezen tussen referenties en pointers hangt af van de context: referenties bieden veiliger, schonere syntax, terwijl pointers expliciete controle over geheugenadressen bieden en nodig zijn voor dynamische allocatie.

C Taal

  1. 13 malware-typen in 2021: dreigingen, voorbeelden en preventie
  2. 5 datacentermodellen uitgelegd: ontwerp, use cases en voorbeelden
  3. 8 cruciale tech-trends van 2021 verkend met real-world voorbeelden
  4. C# using-statements: imports, aliasen en static directives
  5. C++ operators: complete gids met praktische voorbeelden
  6. C++ comments: best practices voor leesbare, onderhoudbare code
  7. C++ Class Templates Beheersen: Een Praktische Gids
  8. C-pointers onder de knie krijgen: Een praktische, expert-gids
  9. C++ Pointers Onder de Knie: Concepten, Voorbeelden & Praktische Toepassingen
  10. C-pointers: Praktische stappen naar geavanceerd programmeren
  11. C++ Programmeertaal: Overzicht & Belangrijkste Kenmerken