Wie übergeben Sie Argumente an Funktionen in C++: Nach Wert vs. Nach Referenz?

Wie Ubergeben Sie Argumente An Funktionen In C Nach Wert Vs Nach Referenz



Jede Programmiersprache, einschließlich C++, muss in der Lage sein, Parameter für Funktionen bereitzustellen. Von Wert und von Referenz sind die beiden Hauptmethoden, die zum Übergeben von Parametern verwendet werden können. Beide Ansätze haben Vor- und Nachteile, daher ist es für Programmierer entscheidend zu wissen, wann sie welche verwenden sollen.

1: Übergabe von Argumenten nach Wert

Eine Kopie der Variablen wird erstellt und der Funktion when zur Verfügung gestellt Argumente werden als Wert übergeben . Alle Änderungen an der Variablen innerhalb der Funktion wirken sich nur auf die Kopie aus; an der ursprünglichen Variable wird nichts geändert. Infolge, Wert übergeben ist eine sichere Methode, da keine Möglichkeit besteht, den Wert der ursprünglichen Variablen unbeabsichtigt zu verändern.

Wertübergabe , kann jedoch unwirksam sein, insbesondere wenn es um große oder komplizierte Datentypen geht. Jeder Funktionsaufruf, der eine Kopie der Daten erfordert, kann CPU- und Speicherressourcen schnell erschöpfen. Außerdem, Wert übergeben kann nicht für Funktionen verwendet werden, die darauf abzielen, den Wert der ursprünglichen Variablen zu ändern, da die Kopie und die ursprüngliche Variable nicht verknüpft sind.







2: Übergabe von Argumenten per Referenz

Variablen können sein per Referenz übergeben auch in C++, was hilft, diese Probleme zu lösen. Die ursprüngliche Variable wird wann an die Funktion gesendet als Referenz übergeben , und alle Änderungen, die an der Variablen innerhalb der Funktion vorgenommen werden, wirken sich auch auf die ursprüngliche Variable aus. Aus diesem Grund, als Referenz übergeben ist bei großen oder komplizierten Datentypen wesentlich effektiver und vermeidet das Kopieren.



Um unbeabsichtigte Änderungen zu verhindern, muss eine Funktion explizit als const bezeichnet werden. Fügen Sie der Funktionsdeklaration das Schlüsselwort const hinzu, wie in „int compute(const int& a, const int& b)“, um dies zu erreichen.



Jedoch, Übergeben von Argumenten als Referenz erfordert auch viel Liebe zum Detail. Unerfahrene Programmierer können Fehler machen, z. B. das Erstellen unbeabsichtigter Nebeneffekte, das unbeabsichtigte Teilen von Daten und das Überschreiben externer Daten.





Betrachten Sie den folgenden Code, der beides demonstriert Methoden zur Argumentübergabe :

#include

mit Namensraum std ;

Leere PassByValue ( int X ) {

X = 5 ;

cout << 'In PassByValue: ' << X << Ende ;

}

Leere PassByReference ( int & X ) {

X = 5 ;

cout << 'In PassByReference: ' << X << Ende ;

}

int hauptsächlich ( ) {

int num1 = 2 , num2 = 2 ;

cout << 'Vor Funktionsaufrufen: num1=' << num1 << ' num2 = ' << num2 << Ende ;

PassByValue ( num1 ) ;

PassByReference ( num2 ) ;

cout << 'Nach Funktionsaufrufen: num1=' << num1 << ' num2 = ' << num2 << Ende ;

zurückkehren 0 ;

}

Im obigen Code ist die erste Funktion, PassByValue , empfängt ein ganzzahliges Argument als Wert. Innerhalb der Funktion wird eine neue Ganzzahl-Variable angelegt und ihr der Wert 5 zugewiesen. Die ursprüngliche Ganzzahl bleibt unverändert. Die zweite Funktion, PassByReference , erhält ein ganzzahliges Argument als Referenz. In diesem Fall manipuliert die Funktion direkt die ursprüngliche Variable.



Ausgang

Wie erwartet gibt der erste Aufruf 5 aus, hat aber keine Auswirkung auf die ursprüngliche Variable. Im Gegensatz dazu ändert der zweite Aufruf den Wert von num2 auf 5, was sich auf die Ausgabe der abschließenden Anweisung auswirkt.

Pass-by-Value vs. Pass-by-Reference

1: Methode zum Aufrufen einer Funktion

Ein Unterschied zwischen Wert übergeben Und als Referenz übergeben so heißt die Funktion. Wenn Wert übergeben , muss der Funktionsaufruf den Wert der Variablen enthalten, z. B. „calculate(a, b)“. Wenn als Referenz übergeben , muss der Funktionsaufruf die Speicheradresse der Variablen enthalten, symbolisiert durch ein kaufmännisches Und-Zeichen, wie etwa „calculate(&a, &b)“.

2: Datentypen

Allgemein, Wert übergeben ist am besten geeignet, wenn mit kleinen oder einfachen Datentypen gearbeitet wird oder wenn die Funktion nicht dazu bestimmt ist, die ursprüngliche Variable zu ändern. Übergabe durch Referenz ist besser geeignet für große oder komplexe Datentypen oder wenn die Funktion den Wert der ursprünglichen Variablen ändern soll.

Abschluss

Wenn Parameter sind Wert übergeben an eine Funktion wird eine Kopie der Variablen erstellt und bereitgestellt. Von als Referenz übergeben , wird die ursprüngliche Variable an die Funktion gesendet. In C++, Übergeben von Argumenten als Wert oder als Referenz ist ein grundlegendes Konzept. Die Wahl des richtigen Ansatzes hängt von den spezifischen Umständen ab und sollte sorgfältig evaluiert werden. Die Vorteile der Verwendung von Referenz Ansatz kann trotz der Versuchung, den einfacheren zu verwenden, zu effektiverem Code führen Wert übergeben Methode.