C++ Zeiger
Das Erlernen von C++-Zeigern ist sowohl einfach als auch unterhaltsam. Durch Zeiger können einige C++-Programmieraufgaben vereinfacht werden, und einige Aufgaben, wie die dynamische Speicherzuweisung, können ohne Zeiger nicht ausgeführt werden. Um ein guter C++-Programmierer zu werden, ist es daher notwendig, Zeiger zu lernen.
Wie Sie wissen, hat jede Variable einen Speicherort, und jeder Speicherort definiert eine Adresse, auf die mit dem Ampersand-Operator (&) zugegriffen werden kann, der eine Adresse im Speicher darstellt. Sehen Sie sich das folgende Beispiel an, das die Adressen der definierten Variablen ausgibt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
var1 变量的地址: 0xbfebd5c0 var2 变量的地址: 0xbfebd5b6
Anhand des obigen Beispiels haben wir gelernt, was eine Speicheradresse ist und wie man darauf zugreift. Als Nächstes sehen wir uns an, was ein Zeiger ist.
Was ist ein Zeiger?
ZeigerEs ist eine Variable, deren Wert die Adresse einer anderen Variable ist, also die direkte Adresse eines Speicherorts. Wie bei anderen Variablen oder Konstanten müssen Sie einen Zeiger deklarieren, bevor Sie ihn verwenden, um die Adresse einer anderen Variable zu speichern. Die allgemeine Form einer Zeigervariablendeklaration lautet:
type *var-name;
Hierbei isttypeder Basistyp des Zeigers, und er muss ein gültiger C++-Datentyp sein.var-name. Das erste stellt ein Array dar, dessen Elemente int-Zeiger sind. Das zweite stellt einen Zeiger auf ein int-Array dar. Wenn Sie auf solche Probleme stoßen, lesen Sie von innen nach außen.
int *ip; /* 一个整型的指针 */ double *dp; /* 一个 double 型的指针 */ float *fp; /* 一个浮点型的指针 */ char *ch; /* 一个字符型的指针 */
Der tatsächliche Datentyp des Werts aller Zeiger, ob Integer, Gleitkomma, Zeichen oder andere Datentypen, ist derselbe: eine lange Hexadezimalzahl, die eine Speicheradresse darstellt. Der einzige Unterschied zwischen Zeigern unterschiedlicher Datentypen ist der Datentyp der Variable oder Konstante, auf die der Zeiger zeigt.
Zeiger in C++ verwenden
Bei der Verwendung von Zeigern werden häufig die folgenden Operationen ausgeführt: Definieren einer Zeigervariable, Zuweisen einer Variablenadresse an den Zeiger und Zugreifen auf den Wert an der in der Zeigervariable vorhandenen Adresse. Dies erfolgt mithilfe des unären Operators*, um den Wert der Variablen zurückzugeben, die sich an der vom Operanden angegebenen Adresse befindet. Das folgende Beispiel umfasst diese Operationen:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:
Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20
C++-Zeiger im Detail
In C++ gibt es viele zeigerbezogene Konzepte. Diese Konzepte sind einfach, aber sie sind alle sehr wichtig. Nachfolgend sind einige wichtige zeigerbezogene Konzepte aufgeführt, die C++-Programmierer klar verstehen müssen:
| Konzepte | Beschreibung |
|---|---|
| C++-Nullzeiger | C++ unterstützt Nullzeiger. Ein NULL-Zeiger ist eine in der Standardbibliothek definierte Konstante mit dem Wert null. |
| C++ Zeigerarithmetik | Mit Zeigern können vier arithmetische Operationen ausgeführt werden: ++, --, +, - |
| C++ Zeiger vs. Arrays | Es besteht eine enge Beziehung zwischen Zeigern und Arrays. |
| C++ Zeigerarray | Arrays können definiert werden, um Zeiger zu speichern. |
| C++ Zeiger auf Zeiger | C++ erlaubt Zeiger auf Zeiger. |
| C++ Übergabe von Zeigern an Funktionen | Das Übergeben von Parametern per Referenz oder per Adresse bewirkt, dass die übergebenen Parameter in der aufrufenden Funktion geändert werden. |
| C++ Rückgabe von Zeigern aus Funktionen | C++ erlaubt Funktionen, Zeiger auf lokale Variablen, statische Variablen und dynamisch zugewiesenen Speicher zurückzugeben. |