Bevor wir den Unterschied zwischen Zeiger und Referenz diskutieren, betrachten wir zunächst kurz die Bedeutung dieser beiden Begriffe. In einem Programm belegen Daten Speicher. Die genaue Position des Speichers, in dem sich die Daten zu einer Ausführungszeit befanden, sollte bekannt sein, um auf sie zugreifen zu können. Zeigervariablen und Referenzvariablen werden verwendet, um auf diese Daten zuzugreifen und die Speicheradressen zu bearbeiten, an denen sie sich befinden. Das heißt, sowohl Zeiger als auch Referenzen können verwendet werden, um Objekte indirekt zu referenzieren. Sie enthalten im Wesentlichen Speicheradressen als Werte. Das Hauptunterschied zwischen einem Zeiger und einem Verweis ist das Ein Zeiger ist eine Variable, die die Adresse des Speicherplatzes einer anderen Variablen speichert während ein reference ist eine Variable, die auf eine andere Variable verweist. Die zwei Mechanismen, das Zeiger und Referenz haben unterschiedliche Syntax und Verwendung.
Ein Zeiger ist ein Programmiersprachenobjekt, das die Speicheradresse eines Werts speichert im Rechenspeicher.
int i = 5;
int * ptr = & i;
Die erste Zeile definiert eine mit einem Wert von 5 initialisierte Variable. Die zweite Zeile definiert einen Zeiger auf die Speicheradresse der Variablen. Hier wird das 'ptr' als Objekt vom Typ 'Zeiger auf int' deklariert, dessen Ausgangswert die Adresse des Objekts i ist. Die ptr-Variable zeigt im Wesentlichen auf i, indem sie ihre Speicheradresse speichert.
Es wird aufgerufen, den an einem Speicherort gespeicherten Wert abzurufen Dereferenzierung. Der Operator * wird verwendet, um den Zeiger zu dereferenzieren. Nachdem die Deklarationen abgeschlossen sind, verweist der indirekte Ausdruck * ptr dereferences ptr auf i.
Um den Wert von i zu ändern, kann folgende Zuweisung verwendet werden;
* ptr = 20;
Zeiger können neu zugewiesen werden, um auch auf andere Objekte zu verweisen.
EIN Null Zeiger ist ein spezieller Zeigertyp. Ein Nullzeiger wird häufig mit 0 oder Null bezeichnet und zeigt auf nichts. Es empfiehlt sich, einen Nullzeiger zu verwenden, wenn dem Zeiger keine genaue Adresse zugewiesen werden soll. Diese Zuordnung kann in logischen Operationen und Bedingungen verwendet werden.
Zeiger können sein Dient zum Speichern und Verwalten der Adressen von dynamisch zugewiesenem Speicher. Die Implementierung und Steuerung von Datenstrukturen wie Stacks, Warteschlangen und Listen kann durch die Verwendung von Zeigern effizient gestaltet werden. Beispielsweise kann eine Warteschlange zwei Zeiger haben; Kopfzeiger und Schwanzzeiger. Zeiger können auch verwendet werden, um Variablen anhand ihrer Adresse zu übergeben, wodurch der Wert geändert werden kann. Das direkte Bearbeiten von Speicher oder speicherzugeordneten Geräten kann auch mit Zeigern erfolgen.
Zeiger erlauben sowohl geschützten als auch ungeschützten Zugriff auf adressierten Speicher. Daher müssen die erforderlichen Vorkehrungen getroffen werden, um sicherzustellen, dass der Inhalt eines Zeigers gültig ist. Andernfalls kann das Programm abstürzen, wenn der Zeiger mit einer ungültigen Speicheradresse dereferenziert wird.
Zeiger werden in Sprachen wie C, C ++, Pascal und vielen Assembler-Sprachen unterstützt.
Zeiger ein auf die mit der Variable verknüpfte Speicheradresse b.
Eine Referenz ist einfach eine alternative Kennung für einen im Speicher gespeicherten Wert. Dadurch kann ein Programm indirekt auf ein bestimmtes Datum zugreifen.
int i = 5;
int & ref = ich;
Die erste Zeile definiert eine mit einem Wert von 5 initialisierte Variable. Die zweite Zeile deklariert 'ref' als Objekt vom Typ 'reference to int', das auf i verweist. Eine Referenz unterscheidet sich von den Daten selbst, da eine Referenz als physische Adresse des bestimmten Datums implementiert ist, das im Speicher gespeichert ist.
Nach der Definition kann einer Referenz kein neuer Wert zugewiesen werden. Eine Referenz bezieht sich immer auf das Objekt, mit dem sie initialisiert wird. In der folgenden Zuweisung verweist ref immer noch auf i, aber der Wert ist jetzt 20.
ref = 20;
Gemäß dem obigen Beispiel sind für das Referenzieren von Referenzen keine Operatoren erforderlich.
Referenzen können verwendet werden, wenn eine Variable immer auf ein Objekt verweist. Das liegt daran, dass Referenzen im Gegensatz zu Zeigern nicht null sein können und immer bei der Initialisierung zugewiesen werden müssen. Da Verweise immer auf ein Objekt verweisen müssen, wird durch die Erstellung einer solchen Variablen sichergestellt, dass das Programm effizient und korrekt arbeitet. Da es keine Nullreferenzen gibt, muss die Gültigkeit einer Referenzvariablen nicht getestet werden.
Referenzvariablen können sein Wird verwendet, um große Daten effizient als Argumente an Prozeduren zu übergeben. Verweise werden auch beim Freigeben großer Daten zwischen verschiedenen Codebereichen verwendet, da jeder Code einen Verweis auf die Daten enthält.
Programmiersprachen wie C ++, Java, Python, Perl, PHP, Ruby usw. unterstützen Referenzen.
Zeiger: Ein Zeiger ist die Speicheradresse eines Objekts, das im Rechenspeicher gespeichert ist.
Referenz: Eine Referenz ist ein alternativer Bezeichner 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 * dereferenziert wird.
Referenz: Für eine Referenzvariable muss kein Operator dereferenziert werden.
Zeiger: Zeiger können auf Null initialisiert werden. Solche Variablen werden als Nullzeiger bezeichnet.
Referenz: Referenzen können nicht mit Null initialisiert werden. Es gibt keine Nullreferenz. Eine Referenz muss immer auf ein Objekt verweisen.
Zeiger: Eine Zeigervariable kann neu zugewiesen werden, um auf verschiedene Objekte zu verweisen.
Referenz: Eine Referenzvariable kann nicht erneut zugewiesen werden. Es bezieht sich immer auf das Objekt, mit dem es initialisiert wurde.
Zeiger: Zeigervariablen sollten verwendet werden, wenn die Möglichkeit besteht, auf nichts zu verweisen, oder wenn zu verschiedenen Zeitpunkten auf verschiedene Dinge Bezug genommen werden muss.
Referenz: Referenzvariablen sollten verwendet werden, wenn immer ein Objekt vorhanden ist, auf das Bezug genommen werden soll, und wenn diese Referenzvariable nicht benötigt wird, um auf etwas anderes als dieses Objekt zu verweisen.
Zeiger: Zeigervariablen können verwendet werden, um Algorithmen und Datenstrukturen zu implementieren.
Referenz: Referenzvariablen können in Funktionsparametern verwendet werden, und Rückgabetypen definieren nützliche Schnittstellen.
Zeiger: Programmiersprachen wie C, C ++, Pascal und viele Assembler-Sprachen unterstützen Zeiger.
Referenz: Programmiersprachen wie C ++, Java, Python, Perl, PHP, Ruby usw. unterstützen Referenzen.
Bild-Höflichkeit: "Zeiger" von Diese Datei wurde von User: SvenTranslation erstellt.Own-Arbeit.Diese Vektorgrafik wurde mit Inkscape erstellt.(CC BY-SA 3.0) über Commons -