Referenzoperator in C++
Dieser Artikel konzentriert sich auf den Referenzoperator &
, auch Adresse von
-Operator genannt.
Obwohl der Referenzoperator in mehreren Fällen ähnlich funktioniert, weist er wenige Unterschiede zwischen verschiedenen Programmiersprachen auf. Wir werden uns nur auf seine Verwendung in der Programmiersprache C++ konzentrieren.
Zuerst lernen wir die grundlegende Syntax und Konzepte kennen. Dann werden wir die allgemeine Verwirrung bezüglich der Verwendung von Referenzoperatoren in verschiedenen Kontexten beantworten.
Verwendung des Referenzoperators in C++
Syntax zum Deklarieren einer Referenzvariablen:
int &ref = m;
int & ref = m;
int& ref = m;
Der Operator &
hat je nach Kontext, in dem er verwendet wird, unterschiedliche Verwendungen und Bedeutungen. Im folgenden Abschnitt werden die Aufgaben erläutert, die der Verweisoperator in C++ ausführt.
Beispiel:
// Simple integer type variable intialization
int m = 12;
// ref is a reference to m
int& ref = m;
// Print value of m
cout << "Original m = " << m << endl;
ref = 20;
// Print value of ref
cout << "Modified m = " << m << endl;
Im obigen Code haben wir 12 in der Variablen m
gespeichert. Als nächstes haben wir das ref
mit dem Referenzoperator auf das m
verwiesen.
Zeigen bedeutet hier, dass ref
die Speicheradresse der Variablen m
hat. Wenn wir also den Wert von m
aktualisieren, erhalten wir denselben aktualisierten Wert durch die ref
-Variable, die die Referenzvariable ist.
Kurz gesagt, die Variable ref
wurde zu einem Alias für eine andere Variable, m
. Wir können auch sagen, dass ref
nur ein anderer Name für die tatsächliche Variable ist, die von m
benannt wird.
Im obigen Code-Snippet haben wir ref
20 zugewiesen. Diese Änderung wird auch auf m
mit einem aktualisierten Wert von 20 sichtbar sein.
Ausgabe:
Original m = 12
Modified m = 20
Vergleich von Referenzvariable und Zeigervariable in C++
Normalerweise verwechseln Lernende die Referenzvariable mit der Zeigervariablen.
Im vorherigen Abschnitt haben wir die Referenzvariable anhand von Beispielen ausführlich besprochen.
Zur Definition speichert eine Zeigervariable die Adresse einer Variablen im Speicher. Er verwendet den Referenzoperator, um seine Werte zu initialisieren oder zu definieren.
Sehen Sie sich den Code unten an, um die Verwendung von &
mit einer Zeigervariablen zu verstehen; Dann besprechen wir die Unterschiede.
// Integer type variable intialization
int number = 88;
// Declare a pointer variable
int* ptrNumber;
// Assign the address of the "number" to "ptrNumnber"
ptrNumber = &number;
// Declare another int pointer and initialize it with the address of the number
int* pAnother = &number;
In diesem Code haben wir zuerst eine Zeigervariable ptrNumber
deklariert und dann in der dritten Anweisung die Adresse von number
zugewiesen. Dabei dient &
als Adresse von
-Operator und gibt die Speicheradresse von Zahl
zurück, die dann dem Pointer ptrNumber
zugewiesen wird.
Die letzte Anweisung im obigen Schnipsel weist die Adresse von number
einem anderen Zeiger zu, pAnother
bei der Deklaration. Es ist wichtig zu beachten, dass sich Zeigervariablen von Referenzvariablen unterscheiden.
Schauen wir uns die Unterschiede anhand der folgenden Tabelle an.
Zeigervariable | Referenzvariable |
---|---|
Pointer hält die Speicheradresse einer Variablen. | Referenzvariable ist ein Alias für eine andere Variable. |
Ein Indirektionsoperator * wird verwendet, um einen Zeiger zu dereferenzieren. |
Referenzvariable ist ein konstanter Zeiger, der keiner Dereferenzierung bedarf. |
Es kann neu zugewiesen werden, um auf eine Vielzahl von Elementen zu verweisen. | Sie muss bei der Initialisierung vergeben werden und die einmal gebildeten Adresswerte können nicht mehr geändert werden. |
Einer Pointer-Variablen kann direkt ein NULL-Wert zugewiesen werden. | NULL-Wert kann nicht direkt gesetzt werden. |
Wenn der Operator &
zusammen mit formalen Parametern in einer Funktion verwendet wird, macht er diese zu Referenzparametern. Weitere Informationen zu Referenz- und Wertparametern hier.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn