Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Call by Reference: Mit Zeigern – Praktische Beispiele

C++ Call by Reference: Mit Zeigern – Praktische Beispiele

Dieser Leitfaden erklärt, wie man Argumente in C++ per Referenz mit Zeigern übergibt, mit klaren Code-Beispielen, die das Vertauschen von Werten demonstrieren.

In der Welt der C++-Funktionen ist die Standardmethode zur Datenübergabe die Übergabe per Wert: Die Funktion erhält eine Kopie der ursprünglichen Daten. Während dies die ursprüngliche Variable schützt, kann es für große Objekte ineffizient sein und verhindert, dass die Funktion die Daten des Aufrufers modifiziert.

Die Übergabe per Referenz löst beide Probleme. Anstatt die Daten zu kopieren, erhält die Funktion eine Referenz (oder Adresse) auf die ursprüngliche Variable, was direkte Manipulation ermöglicht. Dies wird in zwei äquivalenten Wegen erreicht: durch C++-Referenzen oder rohe Zeiger. Das Verständnis beider Ansätze gibt Ihnen Flexibilität und tiefere Einblicke in die Speicherverwaltung.

// Funktion, die einen Wert entgegennimmt void func1(int numVal) { // code } // Funktion, die eine Referenz entgegennimmt (C++ Referenzsyntax) void func2(int &numRef) { // code } int main() { int num = 5; // Per Wert übergeben func1(num); // Per Referenz übergeben func2(num); return 0; }

Das & in void func2(int &numRef) zeigt an, dass der Parameter eine Referenz ist. Wenn func2 aufgerufen wird, wird die Adresse von num übergeben, nicht sein Wert, was der Funktion erlaubt, num direkt zu modifizieren.

C++ Call by Reference: Mit Zeigern – Praktische Beispiele

Beispiel 1: Werte mit C++ Referenzen vertauschen

#include <iostream> using namespace std; // Vertauschfunktion mit Referenzen void swap(int &n1, int &n2) { int temp = n1; n1 = n2; n2 = temp; } int main() { int a = 1, b = 2; cout << "Vor dem Vertauschen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; swap(a, b); cout << "\nNach dem Vertauschen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; }

Ausgabe

Vor dem Vertauschen a = 1 b = 2 Nach dem Vertauschen a = 2 b = 1

In diesem Beispiel erhält swap zwei Referenzen. Da n1 und n2 Aliase für a und b sind, wirken sich Änderungen innerhalb der Funktion auf die ursprünglichen Variablen aus.


Beispiel 2: Werte mit Zeigern vertauschen

#include <iostream> using namespace std; // Funktionsprototyp mit Zeigern void swap(int*, int*); int main() { int a = 1, b = 2; cout << "Vor dem Vertauschen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; // Adressen von a und b übergeben swap(&a, &b); cout << "\nNach dem Vertauschen\n"; cout << "a = " << a << "\n"; cout << "b = " << b << "\n"; return 0; } // Vertauschfunktion mit Zeigern void swap(int* n1, int* n2) { int temp = *n1; *n1 = *n2; *n2 = temp; }

Ausgabe

Vor dem Vertauschen a = 1 b = 2 Nach dem Vertauschen a = 2 b = 1

Hier akzeptiert swap rohe Zeiger. Durch Dereferenzierung mit * greift die Funktion auf die Werte an den übergebenen Adressen zu und modifiziert sie. Das Ergebnis ist identisch zur Referenz-Version, aber die Zeigersyntax macht die Adressübergabe explizit.

Die Wahl zwischen Referenzen und Zeigern hängt vom Kontext ab: Referenzen bieten sicherere, sauberere Syntax, während Zeiger explizite Kontrolle über Speicheradressen bieten und für dynamische Allokation notwendig sind.

C Sprache

  1. C# using-Anweisungen meistern: Importe, Aliase und statische Direktiven
  2. C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
  3. C++-Kommentare: Best Practices für lesbaren, wartbaren Code
  4. C++ Klassentemplates meistern: Ein praktischer Leitfaden
  5. C-Zeiger meistern: Praxisnahes Experten-Tutorial
  6. C++ Zeiger meistern: Konzepte, Beispiele & praktische Anwendungen
  7. 13 Malware-Arten 2021: Bedrohungen, Beispiele & Prävention
  8. 5 Rechenzentrums-Modelle erklärt: Design, Use Cases & Beispiele
  9. 8 Schlüssel-Technologietrends 2021 mit Real-World-Beispielen
  10. C-Zeiger meistern: Praktische Schritte zur fortgeschrittenen Programmierung