Apropos Referenzen, lassen Sie mich zuerst eine Geschichte erzählen: In dem Hof, in dem wir wohnen, gibt es ein kleines Kind namens Luo XX. Wir geben ihm gern einen Spitznamen. Da er nicht gut ernährt war, mit einem relativ großen Kopf und einem relativ kleinen Körper, gaben wir ihm den Spitznamen „Rettichkopf“. Luo XX ist also sein richtiger Name, und Rettichkopf ist sein Alias. Was ist also eine Referenz??

Definition:Referenz: Sie ist ein Alias einer Variablen.

Note:Was einen Alias angeht, kann eine Variable nicht nur einen Alias haben, ohne einen eigenen richtigen Namen zu besitzen.

Referenzen auf Basisdatentypen

Wie im folgenden Codeausschnitt:

Beispiel

#include <iostream> using namespace std; { int a = 3; int &b = a; //b ist eine Referenz auf a, d. h. b ist ein Alias von a. //Eine Referenz muss initialisiert werden, andernfalls meldet die Kompilierung einen Fehler b = 10; cout<< a << endl; //Zu diesem Zeitpunkt hat sich der Wert von a vom ursprünglichen 3 auf 10 geändert, denn egal, was wir mit dem Alias tun, bearbeiten wir tatsächlich die Variable selbst. Genauso wie wenn wir Radish Head bitten, etwas zu tun, wird Luo XX es selbst tun. return 0; }

Referenzen auf Strukturtypen

Wie im folgenden Codeausschnitt:

Beispiel

#include <iostream> using namespace std; //Definiere eine Struktur namens Coor, die eine Koordinate ist. typedef struct { int x; int y; }Coor; int main(void) { Coor c1; //Definiere eine Strukturvariable namens c1. Coor &c = c1; //Gib c1 einen Alias namens c. c.x = 10; //Weise den Datenelementen der Strukturvariable Werte über die Referenz zu c.y = 20; cout<< c1.x << c2.y; //Das Ausgabeergebnis: 10 20 return 0; }

Referenzen auf Zeigertypen

Referenzen vom Zeigertyp sind der komplexeste und am schwierigsten zu verstehende Teil von Referenzen, und sie weisen auch in der Syntaxform Besonderheiten auf.

Definition:

Type *&pointerReferenceName = pointer;

Betrachten Sie ein Beispiel:

Beispiel

#include <iostream> using namespace std; int main(void) { int a = 10; //Definieren Sie eine Ganzzahlvariable a, wobei der Wert von a 10 ist. int *p = &a; //Definieren Sie einen Zeiger, der auf die Variable a zeigt int *&q = p; //Definieren Sie eine Referenz auf einen Zeiger, d. h. q ist ein Alias von p. Definitionsmethode: Type *&pointer_reference_name = pointer; *q = 20; //Weisen Sie *q den Wert 20 zu, was äquivalent dazu ist, *p den Wert 20 zuzuweisen, und somit äquivalent dazu, a den Wert 20 zuzuweisen. cout<< a << endl; //Der Ausgabewert von a ist 20. return 0; }

Referenzen als Funktionsparameter

Bevor wir Referenzen lernten, haben wir beim Studium der Sprache C ein solches klassisches Programm kennengelernt:

//Die beiden Werte vertauschen void fun( int *a,int *b) //Die formalen Parameter sind zwei Integer-Zeigervariablen { int temp = 0; //Definiere eine temporäre Variable. Eine gute Angewohnheit ist, eine Variable zu definieren und sie zu initialisieren; c = *a; //Weise c den Wert von *a zu; *a = *b; //Weise *a den Wert von *b zu; *b = c; //Weise dann *b den Wert von c zu; damit ist der Austausch der Werte von a und b abgeschlossen } int x = 10,y = 20; fun(&x,&y); //Beim Aufruf in der main-Funktion müssen die übergebenen tatsächlichen Argumente als &a, &b geschrieben werden, was umständlich und nicht leicht zu verstehen ist.

Nachdem wir nun Referenzen gelernt haben, wie sollte es aussehen, um dieselbe Funktionalität zu erreichen?

Beispiel

void fun (int &a, int &b) //Die formalen Parameter sind zwei Integer-Referenzen { int temp = 0; temp = a; a = b; b = temp; } int x = 10,y = 20; fun(x,y); //Beim Aufruf in der main-Funktion ist nach der Übergabe der tatsächlichen Argumente a ein Alias von x und b ein Alias von y.

Originaladresse: https://blog.csdn.net/stop_and_go/article/details/51334137