Unterschied zwischen C ++ - Referenz und Zeiger

Obwohl C ++ - Verweise auf Zeiger ähnlich zu sein scheinen, gibt es einen signifikanten Unterschied zwischen C ++ - Verweisen und Zeigern. Eine Referenzvariable kann als ein anderer Name für eine vorhandene Variable verwendet werden. Sobald diese Variable initialisiert ist, kann der Variablenname verwendet werden, um auf eine andere Variable zu verweisen. Zeiger hingegen sind Variablen, die die Adresse einer Variablen speichern. Wie jede Variable werden diese zuerst deklariert und dann kann die Adresse jeder Variablen darin gespeichert werden. Schauen wir uns die Unterschiede zwischen C ++ Reference und Pointer im Detail an (siehe unten).

Head-to-Head Vergleich zwischen C ++ Reference und Pointer (Infografik)

Unten ist der Top-7-Unterschied zwischen C ++ Reference und Pointer

Hauptunterschiede zwischen C ++ Reference und Pointer

Sowohl C ++ Reference als auch Pointer sind auf dem Markt sehr beliebt. Lassen Sie uns einige der wichtigsten Unterschiede zwischen C ++ - Referenz und Zeiger diskutieren:

Der Hauptunterschied zwischen C ++ Reference und Pointer besteht darin, dass auf eine andere Variable verwiesen wird, während diese die Adresse einer Variablen speichert. Referenzen ändern eine ursprüngliche Variable nicht, während sich eine Änderung des Zeigers auf die ursprüngliche Variable auswirkt. Eine Referenz muss bei der Deklaration initialisiert werden, während ein einmal deklarierter Zeiger nicht initialisiert werden muss. Ein Array von Zeigern kann erstellt werden, während ein Array von Referenzen nicht erstellt werden kann. Ein Nullwert kann keiner Referenz zugewiesen werden, er kann jedoch einem Zeiger zugewiesen werden.

C ++ Reference vs Pointer Vergleichstabelle

Der primäre Vergleich zwischen C ++ Reference und Pointer wird nachfolgend erläutert:

Die Vergleichsbasis zwischen C ++ Reference und PointerC ++ ReferenzZeiger
VariablenEine Referenz kann als Alias ​​für eine vorhandene Variable verwendet werden. Diese Variable wird hauptsächlich als Parameter verwendet, der als Referenzübergabe fungiert. Dies wird an eine Funktion übergeben. Die Funktion, an die dies übergeben wird, gilt für die ursprüngliche Variable anstelle der Kopie in einem Wert für die Übergabe. Die innerhalb der Funktion vorgenommenen Änderungen werden auch außerhalb wiedergegeben.Zeigervariablen sind Variablen, die Adressen speichern. Im Gegensatz zu gewöhnlichen Variablen, die wir wie int, double und char haben, werden hier Speicheradressen gespeichert. Um die Programmierung zu vereinfachen, wird diese Variable benötigt. Es ist eine Variable, die einen Wert eines bestimmten Typs speichern kann.
ErklärungDie Deklaration einer C ++ Referenzvariablen erfolgt durch Hinzufügen eines '&' Symbols vor einer Variablen. Wenn es mit einem Ausdruck verwendet wird, bedeutet dies, dass es als Operatoradresse fungiert. Es wird verwendet, um einer vorhandenen Variablen einen anderen Namen zu geben.
Syntax:
Typ & newName = existingName ;
// oder
Typ & newName = existingName ;
// oder
Typ & newName = existingName ;
Zum Beispiel:
/ * Test Referenz Deklaration und Initialisierung * /
#umfassen
using namespace std;
int main () (
String Name = "Priya"; // Deklariere eine Stringvariable namens name
Zeichenfolge & refName = Name; // Deklariere einen Verweis (Alias) auf den Variablennamen
// Sowohl refName als auch name verweisen auf denselben Wert von "Priya"
cout << name << endl; // Gibt den Wert der Variablen "Priya" aus
cout << refName << endl; // Gibt den Referenzwert "Priya" aus
Ändern Sie nun den Wert von Name
refName = "Karishma"; // Weisen Sie refName einen neuen Wert zu
cout << refName << endl;
cout << name << endl; // Wert der Zahl ändert sich auch "Karishma"
name = "Snehal"; // Weisen Sie dem Namen einen neuen Wert zu
cout << namer << endl;
cout << refName << endl; // Der Wert von refName ändert auch "Snehal"
)
Dies bedeutet, dass die Werte einer Referenzvariablen im Original und in der Kopie der Variablen geändert werden können.
Vor der Verwendung eines Zeigers an einer beliebigen Stelle im Programm sollte dieser im Voraus deklariert werden. Um einen Zeiger zu deklarieren und dem System mitzuteilen, dass es sich um einen Zeiger handelt, wird einer Variablen ein '*' vorangestellt. Ein Zeiger wird von einem Datentyp begleitet, der ein Int oder ein Double usw. sein kann.
Syntax:
Typ * pntr ; // Deklariere eine Zeigervariable namens pntr als Zeiger vom Typ
// oder
Typ * pntr ;
// oder
Typ * pntr ;
Zum Beispiel:
int * newPtr; // Deklariere eine Zeigervariable namens newPtr und zeige auf einen int (einen int Zeiger)
Dieser Zeiger enthält die Adresse. Diese Adresse enthält einen int-Wert.
double * newdPtr; // Deklariere einen Doppelzeiger
Das * zeigt an, dass ein Zeiger deklariert wird und nicht als Operator fungiert.
NeuzuweisungEine Referenzvariable kann nicht neu zugewiesen werden.
Beispiel:
int x = 5;
int y = 6;
int & r = x;
Ein Zeiger kann neu zugewiesen werden, und diese Eigenschaft ist nützlich, wenn ein Entwickler Datenstrukturen wie verknüpfte Listen, Bäume usw. implementiert.
Beispiel:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
SpeicheradresseEine Referenzvariable hat dieselbe Adresse wie die Originalvariable. Diese Referenzen können an verschiedene Funktionen übergeben, in verschiedenen Klassen gespeichert usw. werden. Eine Referenz verweist nie auf eine neue Variable, bis die alte gelöscht wird oder den Gültigkeitsbereich verlässt.Ein Zeiger hat eine eigene Speicheradresse und speichert diese auf dem Stapel. Ein Zeiger ist eine unabhängige Variable und kann sich selbst neue Werte zuweisen.
NullwertEiner Referenz kann kein Nullwert zugewiesen werden.Einem Zeiger kann direkt ein Nullwert zugewiesen werden.
ArgumenteEine Referenzvariable kann nach Wert umgangen werden. Hier werden Argumente als Wert an die Funktionen übergeben. Ein Klon wird erstellt und mit ihm an die Funktion gesendet. An der Kopie vorgenommene Änderungen wirken sich nicht auf die ursprüngliche Variable aus.Wenn wir die Originalkopie ändern möchten, können Sie einen Zeiger des Objekts an die Funktion übergeben. Dies wird als Referenzübergabe bezeichnet.
Wann zu verwendenReferenzen greifen indirekt auf eine Variable zu. Betrachten Sie das folgende Beispiel:
enum Tag
(
Sonntag Montag, …
);
Wenn wir eine Variable definieren
Tag x;
Und wir wollen einen Operator mit der Anweisung überladen, dann können wir wie folgt schreiben:
Tag & Operator ++ (Tag & Tag)
(
d = (Tag) (d + 1);
return d;
)
Kurz gesagt, kann dies in Funktionsparametern und Referenztypen verwendet werden.
Die Verwendung von Zeigern ist ohne Vordeklaration.
Tag * Operator ++ (Tag * d);
Dies kann verwendet werden, um Datenstrukturen und Zeigerarithmetikoperationen zu implementieren.

Fazit - C ++ Referenz vs. Pointer

C ++ Reference vs Pointer sind schwierig zu bearbeiten, verbessern aber die Effizienz des Programms in hohem Maße. Sie beide C ++ Reference vs Pointer haben ihre eigenen Verwendungen und dienen ihren eigenen Zwecken. Sie können Zeiger verwenden, wenn Sie Datenstrukturen und Algorithmen implementieren möchten, und Verweise, wenn Sie Funktionen und Parameter mit Rückgabetypen verwenden möchten.

Empfohlener Artikel

Dies war eine Anleitung zu den wichtigsten Unterschieden zwischen C ++ Reference und Pointer. Hier besprechen wir auch die Unterschiede zwischen C ++ - Referenz und Zeigerschlüssel mit Infografiken und die Vergleichstabelle. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Unterschiede zwischen Python und C ++
  2. C vs C ++ - Leistung - Beste Unterschiede
  3. MongoDB gegen Cassandra
  4. Mobx gegen Redux
  5. C ++ Vector vs Array: Die wichtigsten Unterschiede
  6. MongoDB vs DynamoDB: Funktionen
  7. MongoDB vs SQL: Was sind die Funktionen
  8. C vs C #: Funktionen