Bevor wir den Unterschied zwischen Zeiger und Referenz diskutieren, sollten wir zunächst die Bedeutung dieser beiden Begriffe kurz betrachten. In einem Programm belegen Daten Speicher. Der genaue Speicherort des Speichers, in dem die Daten zu einer Ausführungszeit eingesetzt wurden, sollte bekannt sein, um darauf zuzugreifen. Zeigervariablen Und Referenzvariablen werden verwendet, um auf diese Daten zuzugreifen und die Speicheradressen zu manipulieren, bei denen sie sich befinden. Das heißt, sowohl Zeiger als auch Referenzen können verwendet werden, um sich indirekt auf Objekte zu beziehen. Sie halten im Wesentlichen Speicheradressen als ihre Werte. Der Schlüsselunterschied Zwischen einem Zeiger und einer Referenz ist das Ein Zeiger ist eine Variable, die die Adresse des Speicherorts einer anderen Variablen speichert während ein Referenz ist eine Variable, die sich auf eine andere Variable bezieht. Die beiden Mechanismen, Die Zeiger und Referenz, haben unterschiedliche Syntax und Verwendung.
Ein Zeiger ist Ein Programmiersprachobjekt, das die Speicheradresse eines Wertes speichert im Computerspeicher.
int i = 5;
int *ptr = & i;
Die erste Zeile definiert eine Variable, die mit einem Wert von 5 initialisiert wurde. Die zweite Zeile definiert einen Zeiger auf die Speicheradresse der Variablen. Hier wird das 'PTR' als Objekt vom Typ 'Zeiger auf int' deklariert, dessen Anfangswert die Adresse des Objekts i ist. Im Wesentlichen verweist die PTR -Variable auf I, indem er seine Speicheradresse speichert.
Das Erhalten des an einem Speicherort gelagerten Wert wird genannt Derference. Der * Operator wird verwendet. Nach Abschluss der Erklärungen, die indirekte Ausdruck *PTR -Dereferenzen PTR, um sich auf i zu beziehen.
Um den Wert von I zu ändern, kann die folgende Zuordnung verwendet werden
*ptr = 20;
Zeiger können neu zugewiesen werden, um sich auch auf verschiedene Objekte zu beziehen.
A Null Zeiger ist eine besondere Art von Zeiger. Ein Nullzeiger wird oft mit 0 oder Null bezeichnet und zeigt auf nichts. Es ist eine gute Praxis, einen Nullzeiger zu verwenden, wenn keine genaue Adresse dem Zeiger zugeordnet wird. Diese Zuordnung kann in logischen Operationen und Bedingungen verwendet werden.
Zeiger können sein Wird verwendet, um die Adressen des dynamisch zugewiesenen Speichers zu speichern und zu verwalten. Implementierung und Kontrolle von Datenstrukturen wie Stapeln, Warteschlangen und Listen können mit der Verwendung von Zeigern effizient gemacht werden. Zum Beispiel kann eine Warteschlange zwei Zeiger haben; Kopfzeiger und Schwanzzeiger. Zeiger können auch verwendet werden, um Variablen anhand ihrer Adresse zu bestehen, wodurch der Wert geändert werden kann. Direkt manipulierende Speicher- oder Speicher-abgebildete Geräte können auch mit Zeigern behandelt werden.
Zeiger ermöglichen sowohl geschützten als auch ungeschützten Zugriff auf Speicher, die angegangen sind. Daher müssen notwendige Vorsichtsmaßnahmen getroffen werden, um zu überprüfen, ob der Inhalt eines Zeigers gültig ist. Andernfalls kann die Derferen eines Zeigers mit einer ungültigen Speicheradresse dazu führen, dass das Programm zum Absturz kommt.
Zeiger werden in Sprachen wie C, C ++, Pascal und vielen Assemblersprachen unterstützt.
Zeiger A Zeigen Sie auf die mit Variablen verknüpfte Speicheradresse B.
Eine Referenz ist einfach eine Alternative Kennung für einen im Speicher gespeicherten Wert. Es ermöglicht ein Programm, indirekt auf ein bestimmtes Datum zugreifen zu können.
int i = 5;
int & ref = ich;
Die erste Zeile definiert eine Variable, die mit einem Wert von 5 initialisiert wurde. Die zweite Zeile deklariert "Ref" als Objekt vom Typ "Verweis auf int", der sich auf i bezieht. Eine Referenz unterscheidet sich von den Daten selbst, da eine Referenz als physikalische Adresse des jeweiligen Datums implementiert wird, das im Speicher gespeichert ist.
Einmal definiert, kann eine Referenz nicht zu einem neuen Wert zugewiesen werden. Eine Referenz bezieht sich immer auf das Objekt, mit dem sie initialisiert wird. In der folgenden Aufgabe bezieht sich Ref immer noch auf i, aber der Wert beträgt jetzt 20.
Ref = 20;
Gemäß dem obigen Beispiel sind die Referenzen für Derferencing keine Betreiber erforderlich.
Referenzen können verwendet werden, wenn sich eine Variable immer auf ein Objekt bezieht. Dies liegt daran, dass Referenzen im Gegensatz zu Zeigern nicht null sein können und bei der Initialisierung immer zugewiesen werden müssen. Da Referenzen immer auf ein Objekt verweisen müssen, stellt die solche Variable eine Referenz sicher, dass das Programm effizient und korrekt funktioniert. Da es keine Nullreferenzen gibt, muss die Gültigkeit einer Referenzvariablen nicht getestet werden.
Referenzvariablen können sein Wird verwendet, um große Daten als Argumente an Verfahren effizient zu übergeben. Referenzen werden auch verwendet, um große Daten zwischen verschiedenen Codebereichen zu teilen, da jeder Code einen Verweis auf die Daten hat.
Programmiersprachen wie C ++, Java, Python, Perl, Php, Ruby usw. Unterstützungsreferenzen.
Zeiger: Ein Zeiger ist die Speicheradresse eines im Computerspeichers gespeicherten Objekts.
Referenz: Eine Referenz ist eine alternative Kennung oder ein Alias für ein Objekt.
Zeiger: Ein Zeiger wird mit dem * Operator deklariert.
Referenz: Eine Referenz wird mit dem & Operator deklariert.
Zeiger: Eine Zeigervariable erfordert, dass der * Operator der Derferenzierung wird.
Referenz: Eine Referenzvariable erfordert, dass kein Operator derenferenziert wird.
Zeiger: Zeiger können auf Null initialisiert werden. Solche Variablen werden als Nullzeiger bezeichnet.
Referenz: Referenzen können nicht auf Null initialisiert werden. Es gibt keine Nullreferenz. Eine Referenz muss sich immer auf ein Objekt beziehen.
Zeiger: Eine Zeigervariable kann neu zugewiesen werden, um sich auf verschiedene Objekte zu beziehen.
Referenz: Eine Referenzvariable kann nicht neu zugewiesen werden. Es bezieht sich immer auf das Objekt, mit dem es initialisiert wurde.
Zeiger: Zeigervariablen sollten verwendet werden, wenn die Möglichkeit, nichts zu beziehen.
Referenz: Referenzvariablen sollten verwendet werden, wenn es immer ein Objekt gibt, auf das man sich beziehen kann, und wenn es nicht erforderlich ist, diese Referenzvariable zu verwenden, um sich auf etwas anderes als dieses Objekt zu beziehen.
Zeiger: Zeigervariablen können zum Implementieren von Algorithmen und Datenstrukturen verwendet werden.
Referenz: Referenzvariablen können in Funktionsparametern verwendet werden, und Rückgabetypen definieren nützliche Schnittstellen.
Zeiger: Programmiersprachen wie C, C ++, Pascal und viele Assemblersprachen unterstützen Zeiger.
Referenz: Programmiersprachen wie C ++, Java, Python, Perl, Php, Ruby usw. Unterstützungsreferenzen.
Bild mit freundlicher Genehmigung: "Zeiger" durch diese Datei wurde von Benutzer gemacht: Sventranslation.Eigene Arbeit.Dieses Vektorbild wurde mit Inkscape erstellt.(CC BY-SA 3.0) über Commons -