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

#include <iostream> using namespace std; int main () { int var1; char var2[10]; cout << "Adresse der Variable var1:"; cout << &var1 << endl; cout << "Adresse der Variable var2:"; cout << &var2 << endl; return 0; }

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

#include <iostream> using namespace std; int main () { int var = 20; // Deklaration der eigentlichen Variable int *ip; // Deklaration der Zeigervariable ip = &var; // Adresse von var in der Zeigervariable speichern cout << "Wert der Variable var: "; cout << var << endl; // Ausgabe der in der Zeigervariable gespeicherten Adresse cout << "In der Variable ip gespeicherte Adresse: "; cout << ip << endl; // Zugriff auf den Wert an der im Zeiger gespeicherten Adresse cout << "Wert der Variable *ip: "; cout << *ip << endl; return 0; }

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:

KonzepteBeschreibung
C++-NullzeigerC++ unterstützt Nullzeiger. Ein NULL-Zeiger ist eine in der Standardbibliothek definierte Konstante mit dem Wert null.
C++ ZeigerarithmetikMit Zeigern können vier arithmetische Operationen ausgeführt werden: ++, --, +, -
C++ Zeiger vs. ArraysEs besteht eine enge Beziehung zwischen Zeigern und Arrays.
C++ ZeigerarrayArrays können definiert werden, um Zeiger zu speichern.
C++ Zeiger auf ZeigerC++ erlaubt Zeiger auf Zeiger.
C++ Übergabe von Zeigern an FunktionenDas Ü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 FunktionenC++ erlaubt Funktionen, Zeiger auf lokale Variablen, statische Variablen und dynamisch zugewiesenen Speicher zurückzugeben.
Weitere Erweiterungen