Unterschied zwischen Zeiger und Referenz
- 3752
- 12
- Leonhard Lesch
Sowohl Zeiger als auch Referenzen sind die leistungsstärksten Merkmale in C und C ++, mit denen Programmierer die Speicheradresse direkt für eine effiziente Speicherverwaltung manipulieren können.
Beide sind Variablen, die verwendet werden, um sich indirekt auf andere Objekte zu beziehen, und sie haben einige gemeinsame Merkmale auf der Oberfläche. Obwohl sie viele gemeinsame Fähigkeiten haben, sind sie auch sehr komplex zu verstehen.
Ein Zeiger ist eine Variable, die die Speicheradresse einer anderen Variablen enthält, während eine Referenz wie ein Zeiger ist, der verwendet werden kann, um indirekt auf eine andere Variable zu verweisen.
Die meisten Programmierer scheinen ein gewisses Verständnis darüber zu entwickeln, wann Zeiger verwendet werden sollen und wann sie Referenzen verwenden sollen, aber sie stoßen häufig auf Probleme, deren Lösung unklar erscheint.
Um die Philosophie besser zu verstehen, verstehen wir den Unterschied zwischen den beiden.
Was ist ein Zeiger??
Jede Variable ist ein Speicherort, der durch ihre Adresse definiert und mit einer Kennung kombiniert wird, die einen gewissen Wert enthält, der im Verlauf eines Programms geändert werden kann. In einfachen Worten ist Variable ein Symbol, das eine Menge darstellt.
Ein Zeiger ist eine Variable, die die Speicheradresse einer anderen Variablen enthält. Ein Zeiger ist nichts anderes als eine Adresse und eine Variable, die ein Zeiger speichert.
Die Idee besteht. Da diese Adressen auf tatsächliche Standorte im Computerspeicher beziehen.
Wie jede Variable oder Konstante müssen Zeiger für ihre Typen deklariert werden. Da Zeiger Speicheradressen enthalten, die zu einem separaten Datentyp gehören, müssen sie unter Verwendung von Zeigern deklariert werden, bevor Sie mit ihnen arbeiten können. Die allgemeine Form einer Zeigerdeklaration lautet:
Data_type * var-name;
Hier ist "Data_type" der Basistyp des Zeigers und "var-name" ist die Zeigervariable. Das Sternchen (*) wird hier verwendet, um den Zeiger zu deklarieren, der die Variable „var-name“ als Zeigervariable bezeichnet.
int *p; // Ganzzahlzeiger
float *x; // Float Zeiger
Hier verweist die variable „P“ auf einen Ganzzahl -Datentyp, der als „int“ deklariert wird, der sich auf den Datentyp der Variablen bezieht. In ähnlicher Weise bezieht sich im zweiten Beispiel „Float“ auf den Datentyp der Variablen „X“, der tatsächlich als Zeiger auf eine Schwimmpunktvariable bezeichnet wird.
Was ist eine Referenz?
Eine Referenz ist wie ein Zeiger mit indirektem Zugriff auf eine Variable. Es ist wie ein Alias für eine andere Variable, was bedeutet, dass es nur ein anderer Name für eine bereits vorhandene Variable ist.
Es ermöglicht den Programmierern, einen zweiten Namen für die Variable zu erstellen, mit der sie den in dieser Variablen gespeicherten Inhalt manipulieren können. Es ist eine Entität, die ein Alias für eine andere Variable ist und die gleiche Adresse wie die ursprüngliche Variable hat. Es unterstützt Pass-by-Referenz, die als Funktion formale Parameter fungieren und sobald es definiert ist, sich auf eine Variable zu beziehen, kann es nicht wiederhergestellt werden.
Im Gegensatz zu Zeigern benötigen sie keinen Derferenzbetreiber, um auf den Wert zuzugreifen. In der Tat können sie wie normale Variablen verwendet werden.
int i;
int & ri = i;
Hier ist "Ri" eine ganzzahlige Referenz, die auf "I" initialisiert wurde. Es deklariert "RI" als Objekt vom Typ "Referenz auf int". Eine Referenz kann leicht mit einem Zeiger verwechselt werden, der eine unabhängige Variable ist, deren Adresswerte nach dem Erstellen nicht neu zugewiesen werden können.
Unterschied zwischen Zeiger und Referenz
-
Grundlagen des Zeigers und der Referenz
- Beide bieten fast ähnliche Fähigkeiten in Bezug auf die Benutzerfreundlichkeit und die Unterscheidung kann schwierig sein. Ein Zeiger ist nur eine Variable, die die Speicheradresse einer anderen Variablen speichert, während eine Referenz wie ein Alias für eine bereits vorhandene Variable ist. Es erstellt einen zweiten Namen für eine Variable, mit der der in dieser Variablen gespeicherte Inhalt geändert werden kann.
-
Zeiger- und Referenzerklärung
- Ein Zeiger ist wie jede andere Variable, die ein Datenstück speichert. Im Gegensatz zu anderen Variablen speichern Zeigervariablen Speicheradressen anstelle von Werten. Ein Zeiger wird mit dem Indirektionoperator * Derferfer. Eine Referenz dagegen benötigt keinen Derferenzbetreiber, um auf den Wert zuzugreifen.
-
Neuzuweisung von Zeiger und Referenz
- Im Gegensatz zu Zeigern, die jederzeit initialisiert werden können, müssen bei der Initialisierung Referenzen zugewiesen werden. Hinweise können direkt zugegriffen werden, während Referenzen nicht direkt zugegriffen werden können.
-
Speicheradresse für Zeiger und Referenz
- Eine Zeigervariable hat einen eigenen Speicherort im Speicher, was bedeutet. Die Zeigervariable hat die gleiche Adresse, in der sie im Speicher gespeichert wird. Eine Referenzvariable hingegen ist ein Alias für eine andere Variable, wodurch die Adresse der Referenzvariablen angenommen wird.
-
Nullwert für Zeiger und Referenz
- NULL repräsentiert das Ende der Liste. Der Nullwert kann einer Zeigervariablen direkt zugeordnet werden, die darauf hindeutet.
Zeiger vs. Referenz: Vergleichstabelle
Zusammenfassung des Zeigers vs. Referenz
Die Zeiger gehörten schon immer zu den Lieblingsthemen der Diskussion von C/C ++ - Programmierern, bis Referenzen auf das Bild kamen. Referenzen sind den Zeigern etwas ähnlich, haben aber im Vergleich einen angemessenen Anteil an Vor- und Nachteilen. Während beide verwendet werden können, um lokale Variablen einer Funktion innerhalb einer anderen Funktion zu ändern, haben sie ihre Unterschiede. Beide sind leistungsstarke Merkmale in C und C ++, die es Ihnen ermöglichen, das Gedächtnis direkt zu manipulieren, jedoch mit wenigen Ausnahmen. Ein Zeiger hält die Speicheradresse einer Variablen, während eine Referenz nur ein Alias für eine andere Variable ist.
- « Unterschied zwischen Fortbewegung und Bewegung
- Unterschied zwischen Primärgedächtnis und Sekundärgedächtnis »