references c
Lernen Sie die Möglichkeiten kennen, Referenzen in C ++ zu deklarieren und zu verwenden.
Referenz ist ein Hauptkonzept in der Programmiersprache C ++. Obwohl es nicht so stark wie Zeiger ist, können wir es dennoch zum Schreiben effizienter Programme verwenden. Die Referenzvariable wird hauptsächlich zur Übergabe von Parametern an Funktionen verwendet.
Bei der beliebten Parameterübergabetechnik 'Referenzübergabe' werden Referenzen verwendet. In diesem Tutorial erfahren Sie, was eine Referenz ist und wie sie deklariert und verwendet wird. Wir werden auch die Unterschiede zwischen Zeigern und Referenzen sowie das Übergeben und Zurückgeben einer Referenz auf / von Funktionen diskutieren.
=> Hier finden Sie Informationen zur vollständigen Liste der C ++ - Tutorials.
Was du lernen wirst:
- Was ist eine Referenz?
- Referenzvariablen deklarieren
- Referenz gegen Zeiger
- Verweise auf Funktionen übergeben
- Rückgabe von Referenzen
- Fazit
- Literatur-Empfehlungen
Was ist eine Referenz?
Referenz ist ein Alias oder ein anderer Name für eine Variable. Bei einer Variablen mit einem Bezeichner können wir dieser Variablen einen weiteren Bezeichner bereitstellen, sodass wir entweder mit ihrem ursprünglichen Namen oder einem anderen Namen auf diese Variable verweisen können. Dieser „andere Name“ wird als Referenz bezeichnet.
Angenommen, wir haben eine Variable 'i' mit dem Wert 17. Wenn j eine Referenz ist, wird die Speicherdarstellung der Variablen i und der Referenz j unten gezeigt.
Wie in der obigen Abbildung gezeigt, verweisen eine Variable und ihr Alias, d. H. Der Referenzwert, auf denselben Wert.
Referenzvariablen deklarieren
Eine Referenz kann mit dem Operator '&' deklariert werden.
Die Referenzerklärung ist unten dargestellt.
int a = 10; int& refvar = a;
Im obigen Code haben wir also eine ganzzahlige Variable mit dem Wert 10 deklariert. Dann deklarieren wir eine andere Variable refvar und weisen ihr eine Variable zu. Beachten Sie, dass wir beim Deklarieren von refvar den Operator & direkt vor dem Variablennamen verwendet haben. Dies zeigt an, dass refvar eine Referenz auf eine bereits vorhandene Variable ist.
Wir können auf die Variable 'a' verweisen, indem wir entweder den Variablennamen a oder den Referenznamen 'refvar' verwenden.
c ++ vs Java Unterschiede
Im Folgenden finden Sie ein einfaches Beispiel für Referenzen:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Ausgabe:
Alter: 22
NumYears: 22
Gehalt: 10000
Löhne: 10000
Im obigen Code haben wir ein ganzzahliges variables Alter. Als nächstes deklarieren wir eine ganzzahlige Referenzvariable numYears für die Altersvariable. Wir haben ein anderes variables Gehalt vom Typ Double. Als nächstes deklarieren wir einen variablen Doppelreferenzlohn für das variable Gehalt.
Als nächstes drucken wir die Variablen, zuerst das Alter, dann folgt auf die Referenz das Gehalt und die Referenz. Wenn wir die Ausgabe des Programms überprüfen, verstehen wir, dass die Variable und der Verweis darauf auf denselben Wert verweisen und daher Alter und Anzahl Jahre sowie Gehalt und Löhne dieselben Werte haben.
Referenz gegen Zeiger
Im Vergleich zu Zeigern sind Referenzen sicherer und einfacher zu verwenden.
Wir werden einige Unterschiede zwischen Zeigern und Referenzen diskutieren:
- Im Gegensatz zu Zeigern dürfen Referenzen keinen Nullwert haben. Referenzen muss ein Wert zugewiesen werden.
- Referenzen werden in dem Moment initialisiert, in dem sie erstellt werden. Im Gegensatz dazu können Zeiger zu jedem Zeitpunkt und nicht unbedingt während der Deklaration initialisiert werden.
- Zeiger können problemlos den Werten zugewiesen werden. Aber mit Referenzen können wir das nicht tun. Sobald ein Wert der Variablen zugewiesen wurde, d. H. Sobald ein Alias einer Variablen erstellt wurde, können wir dieser Referenz keine weitere Variable zuweisen.
- Wir haben keine ungültigen Referenzen. Per Definition ist eine Referenz ein Alias für die Variable und wird während der Erstellung selbst initialisiert. Daher besteht keine Chance, dass wir eine ungültige Referenz haben und später eine Variable mit einem konkreten Datentyp zuweisen. Im Gegensatz dazu können wir leere Zeiger haben.
Aufgrund dieser oben diskutierten Einschränkung können die Referenzen in C ++ nicht mit Datenstrukturen wie einer verknüpften Liste verwendet werden. Bitte beachten Sie, dass wir in Java nicht alle diese Einschränkungen oder Einschränkungen für Referenzen haben.
Verweise auf Funktionen übergeben
In unseren vorherigen Tutorials zu Funktionen haben wir bereits die Parametertechnik 'Referenzübergabe' erörtert und das Austauschen von zwei Zahlen anhand dieser Technik gesehen. Wir überspringen die Erklärung dieser Technik in diesem Abschnitt und stellen nur noch einmal eine Swap-Funktion als Beispiel vor.
Aber dieses Mal werden wir, anstatt Zahlen zu tauschen, zwei Saiten tauschen.
kostenlose webbasierte Zeitschaltuhr-Software
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< Ausgabe:
str1 = Referenzen str2 = Zeiger
Nach dem Tausch….
str1 = Zeiger str2 = Referenzen
In diesem Programm übergeben wir also Zeichenfolgen (char *) an die Swap-Funktion. Die formalen Parameter sind zwei Verweise auf eine Variable vom Typ char *. Wir stellen fest, dass sich beim Ändern von zwei Werten deren Änderung in der aufrufenden Funktion widerspiegelt, da wir Referenzen / Aliase für Parameter verwenden.
Rückgabe von Referenzen
Genau wie das Zurückgeben von Zeigern von Funktionen können wir auch Referenzen von Funktionen zurückgeben. Das Zurückgeben von Referenzen von einer Funktion gibt auch einen impliziten Zeiger auf den Rückgabewert zurück. Aus diesem Grund kann eine Funktion, die eine Referenz zurückgibt, auf der linken Seite der Zuweisung verwendet werden.
Lassen Sie uns ein Beispiel für die Rückgabe einer Referenz von einer Funktion geben.
#include using namespace std; int myarray() = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray(i); } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray(' << i << ') = '; cout << myarray(i) << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray(' << i << ') = '; cout << myarray(i) << endl; } return 0; }
Ausgabe:
Myarray vor dem Wechsel
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
Myarray (4) = 5
Wert nach Änderung
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
Myarray (4) = 5
Der Screenshot dafür ist unten dargestellt:
Wie im obigen Code zu sehen ist, definieren wir eine Funktion setValues, die eine Referenz und einen Parameter zurückgibt, der eine Ganzzahl ist. Innerhalb der Funktion geben wir nur den Array-Verweis auf die Position I in C ++ zurück.
In der Hauptfunktion drucken wir die Werte des Arrays. Dann ändern wir mit der Funktion setValues die Werte von zwei Elementen im Array. Wieder drucken wir den Wert des Arrays.
Eine Sache, die wir bei Referenzen beachten müssen, ist, dass eine Funktion nur dann eine Referenz zurückgeben kann, wenn die Daten entweder statisch oder global sind. Es ist illegal, einen Verweis auf eine lokale Variable in C ++ zurückzugeben.
Fazit
Leser sollten beachten, dass die Hauptverwendung von Referenzen darin besteht, Parameter an Funktionen zu übergeben.
In den kommenden Tutorials werden wir Lambda-Funktionen / Ausdrücke in C ++ behandeln, bevor wir zur objektorientierten Programmierung in C ++ springen.
=> Lesen Sie hier die besten C ++ - Schulungsanleitungen.
Literatur-Empfehlungen
- Beste KOSTENLOSE C # Tutorial-Serie: Der ultimative C # -Handbuch für Anfänger
- Zeiger und Zeigeroperationen in C ++
- Lasttests mit HP LoadRunner-Tutorials
- Variablen in C ++
- Objektorientierte Programmierung in C ++
- Unix Pipes Tutorial: Pipes in der Unix-Programmierung
- Bibliotheksfunktionen in C ++
- Über 70 BEST C ++ - Tutorials zum kostenlosen Erlernen der C ++ - Programmierung