Empfohlen, 2019

Tipp Der Redaktion

Unterschied zwischen Zeiger und Referenz

Der „Zeiger“ und der „Verweis“ werden beide verwendet, um auf eine andere Variable zu verweisen. Der grundlegende Unterschied zwischen beiden besteht jedoch darin, dass eine Zeigervariable auf eine Variable zeigt, deren Speicherplatz darin gespeichert ist. Die Referenzvariable ist ein Alias ​​für eine ihr zugewiesene Variable. Die folgende Vergleichstabelle zeigt die anderen Unterschiede zwischen einem Zeiger und einer Referenz.

Vergleichstabelle

Basis zum VergleichZeigerReferenz
BasicDer Zeiger ist die Speicheradresse einer Variablen.Die Referenz ist ein Alias ​​für eine Variable.
Kehrt zurückDie Zeigervariable gibt den Wert zurück, der sich an der Adresse befindet, die in der Zeigervariable gespeichert ist, vor der das Zeigerzeichen '*' steht.Die Referenzvariable gibt die Adresse der Variablen zurück, vor der das Referenzzeichen '&' steht.
Betreiber*, ->&
NullreferenzDie Zeigervariable kann sich auf NULL beziehen.Die Referenzvariable kann sich niemals auf NULL beziehen.
InitialisierungEin nicht initialisierter Zeiger kann erstellt werden.Eine nicht initialisierte Referenz kann niemals erstellt werden.
Zeitpunkt der InitialisierungDie Zeigervariable kann zu jedem Zeitpunkt im Programm initialisiert werden.Die Referenzvariable kann nur zum Zeitpunkt ihrer Erstellung initialisiert werden.
ReinitialisierungDie Zeigervariable kann beliebig oft neu initialisiert werden.Die Referenzvariable kann im Programm nie wieder neu initialisiert werden.

Definition von Zeiger

Ein "Zeiger" ist eine Variable, die den Speicherplatz einer anderen Variablen enthält. Die von der Zeigervariable verwendeten Operatoren sind * und ->. Die Deklaration der Zeigervariable enthält den Basisdatentyp gefolgt vom '*' - Zeichen und dem Variablennamen.

 Typ * Variablenname; 

Lassen Sie uns den Zeiger anhand eines Beispiels verstehen.

 int a = 4; int * ptr = & a; cout < 

Hier haben wir eine ganzzahlige Variable a und eine Zeigervariable ptr, die die Adresse der Variablen a speichert.

Zeiger-Arithmetik

Die Zeigervariable kann mit zwei arithmetischen Operatoren "Addition" und "Subtraktion" betrieben werden. Die als "Inkrement" bezeichnete Addition und die Subtraktion werden als "Dekrement" bezeichnet. Wenn eine Zeigervariable inkrementiert wird, zeigt sie auf den Speicherplatz der nächsten Variablen ihres Basistyps. Wenn eine Zeigervariable dekrementiert wird, zeigt sie auf den Speicherort der vorherigen Variablen ihres Basistyps. Daher kann auf ein Array effizient durch eine Zeigervariable zugegriffen werden.

Multiple Indirektion

Ein Zeiger zeigt auf die andere Zeigervariable, die auf den Zielwert zeigt. Diese Art von Zeiger wird immer mit der Adresse einer anderen Zeigervariable initialisiert. Die Deklaration eines Zeigers auf einen Zeiger ist wie folgt.

 Typ ** Variablenname; 

Studieren wir es anhand eines Beispiels.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

Funktionszeiger

Da wir wissen, dass eine Funktion keine Variable ist, hat sie dennoch einen Speicherplatz, der einer Zeigervariable zugewiesen werden kann. Wenn ein Zeiger auf eine Funktion zeigt, kann die Funktion mit diesem Funktionszeiger aufgerufen werden.

Die wichtigen Punkte, die Sie beim Zeiger beachten sollten.

  • Die Zeigervariable kann ohne ihre Initialisierung erstellt und an einer beliebigen Stelle im Programm initialisiert werden.
  • Die Zeigervariable kann auf eine andere Variable neu initialisiert werden.
  • Die Zeigervariable kann sich auf NULL beziehen.

Definition der Referenz

Die Referenzvariable wird verwendet, um auf die Variable zu verweisen, die dieser Referenzvariablen zugewiesen ist. Der von der Referenzvariable verwendete Operator ist '&'. Die Deklaration einer Referenzvariablen enthält den Basistyp, gefolgt von einem "&" - und einem Variablennamen.

 type & refer_var_name = var_ name; 

Der Typ ist hier der Datentyp. Der Operator & bestätigt, dass es sich um eine Referenzvariable handelt. Refer_var_name ist der Name der Referenzvariablen. Der Variablenname ist der Name der Variablen, auf die sich die Referenzvariable beziehen soll.

Lassen Sie uns die Referenzvariable anhand eines Beispiels verstehen.

 int a = 4; int & b = a; // b bezieht sich auf ab = 6; // jetzt a = 6 

Der Variablen vom Typ int wird hier ein Wert 4 zugewiesen. Der Referenzvariablen wird die Variable a zugewiesen, dh b ist der Alias ​​von a. Wenn wir nun b einen anderen Wert zuweisen, ändern wir den Wert von a. Daher kann gesagt werden, dass die an einer Referenzvariablen vorgenommenen Änderungen auch in der von dieser Referenzvariablen referenzierten Variable auftreten.

Der wichtigste Punkt ist, dass die Referenzvariable zum Zeitpunkt ihrer Erstellung initialisiert werden muss. Wenn die Referenzvariable mit einer Variablen initialisiert wird, kann sie nicht erneut auf eine andere Variable referenziert werden. Sobald Sie einer Referenzvariablen einen Wert zuweisen, weisen Sie diesen Wert einer Variablen zu, auf die eine Referenzvariable verweist. Die Referenzvariable kann sich niemals auf NULL beziehen. Für eine Referenzvariable kann keine Arithmetik ausgeführt werden.

Die Referenzvariable kann auf drei Arten verwendet werden:

  • Als Funktionsrückgabewert.
  • Als Funktionsparameter.
  • Als eigenständige Referenz.

Hauptunterschiede zwischen Zeiger und Referenz

  1. Referenz ist wie das Erstellen eines anderen Namens, um auf eine Variable zu verweisen, sodass sie mit anderen Namen referenziert werden kann. Auf der anderen Seite ist ein Zeiger einfach eine Speicheradresse einer Variablen.
  2. Wenn eine Zeigervariable mit einem vorangestellten '*' beginnt, wird der Wert einer Variablen zurückgegeben, deren Adresse in der Zeigervariable gespeichert ist. Wenn eine Referenzvariable mit '&' vorangestellt wird, wird die Adresse dieser Variablen zurückgegeben.
  3. Zeigeroperatoren sind * und ->, während der Referenzoperator & ist.
  4. Wenn eine Zeigervariable die Adresse einer Variablen nicht enthält, zeigt sie auf null. Andererseits kann eine Referenzvariable niemals auf Null verweisen.
  5. Sie können immer eine unitialisierte Zeigervariable erstellen, wir erstellen jedoch eine Referenz, wenn wir einen Aliasnamen einer Variablen benötigen, sodass Sie niemals eine unitialize-Referenz erstellen können.
  6. Sie können einen Zeiger erneut initialisieren, aber wenn Sie arefernce neu initialisieren, können Sie ihn nicht erneut initialisieren.
  7. Sie können jederzeit einen leeren Zeiger erstellen und ihn initialisieren. Sie müssen die Aktualisierung jedoch nur dann initialisieren, wenn Sie eine Referenz erstellen.

Hinweis:

Java unterstützt keine Zeiger.

Fazit

Mit dem Zeiger und der Referenz wird auf eine andere Variable verwiesen. Beide unterscheiden sich jedoch in ihrer Verwendung und Implementierung.

Top