C Zeiger
Das Erlernen von Zeigern in C ist sowohl einfach als auch interessant. Durch Zeiger können Sie die Ausführung einiger C-Programmieraufgaben vereinfachen, 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 nutzbare&Adresse, auf die durch den Operator zugegriffen wird, die eine Adresse im Speicher darstellt.
Bitte sehen Sie sich das folgende Beispiel an, das die Adresse der definierten Variable ausgibt:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er die folgenden Ergebnisse:
var_example 变量的地址: 0x7ffeeaae08d8

Durch das obige Beispiel verstehen wir, was eine Speicheradresse ist und wie man darauf zugreift. Als Nächstes sehen wir uns an, was ein Zeiger ist.
Was ist ein Zeiger?
Ein Zeiger ist eine Speicheradresse, und eine Zeigervariable ist eine Variable, die zum Speichern von Speicheradressen verwendet wird. 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;
Hier isttypeder Basistyp des Zeigers, der ein gültiger C-Datentyp sein muss,var_nameist der Name der Zeigervariable. Das Sternchen, das zum Deklarieren eines Zeigers verwendet wird,*ist dasselbe wie das Sternchen, das bei der Multiplikation verwendet wird. In dieser Anweisung wird das Sternchen jedoch verwendet, um anzugeben, dass eine Variable ein Zeiger ist. Das Folgende sind gültige Zeigerdeklarationen:
Für alle tatsächlichen Datentypen, ob Ganzzahl, Gleitkommazahl, Zeichen oder andere Datentypen, ist der Typ des Werts des entsprechenden Zeigers derselbe: Es ist eine lange Hexadezimalzahl, die eine Speicheradresse darstellt.
Der einzige Unterschied zwischen Zeigern verschiedener Datentypen ist der Datentyp der Variable oder Konstante, auf die der Zeiger zeigt.
Wie verwendet man Zeiger?
Bei der Verwendung von Zeigern werden häufig die folgenden Operationen ausgeführt: Definieren einer Zeigervariable, Zuweisen der Adresse einer Variable an den Zeiger und Zugreifen auf den Wert an der verfügbaren Adresse in der Zeigervariable. Dies geschieht mit dem unären Operator*, 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, erzeugt er die folgenden Ergebnisse:
var 变量的地址: 0x7ffeeef168d8 ip 变量存储的地址: 0x7ffeeef168d8 *ip 变量的值: 20
NULL-Zeiger in C
Beim Deklarieren einer Variable, wenn keine genaue Adresse zum Zuweisen vorhanden ist, ist es eine gute Programmierpraxis, der Zeigervariable einen NULL-Wert zuzuweisen. Ein Zeiger, dem ein NULL-Wert zugewiesen wurde, wird alsleererZeiger bezeichnet.
Ein NULL-Zeiger ist eine Konstante mit dem Wert null, die in der Standardbibliothek definiert ist. Betrachten Sie das folgende Programm:
Beispiel
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er die folgenden Ergebnisse:
ptr 的地址是 0x0
Auf den meisten Betriebssystemen dürfen Programme nicht auf den Speicher an Adresse 0 zugreifen, da dieser Speicher vom Betriebssystem reserviert ist. Speicheradresse 0 hat jedoch eine besondere Bedeutung: Sie zeigt an, dass der Zeiger nicht auf eine zugängliche Speicherstelle zeigt. Laut Konvention wird jedoch angenommen, dass ein Zeiger, der einen Nullwert (Null) enthält, auf nichts zeigt.
Um einen Nullzeiger zu prüfen, können Sie eine if-Anweisung verwenden, wie unten gezeigt:
Ausführliche Erklärung der C-Zeiger
In C gibt es viele zeigerbezogene Konzepte. Diese Konzepte sind alle einfach, aber sie sind alle wichtig. Im Folgenden sind einige wichtige zeigerbezogene Konzepte aufgeführt, über die sich C-Programmierer im Klaren sein müssen:
| Konzepte | Beschreibung |
|---|---|
| Zeigerarithmetik | Mit Zeigern können vier arithmetische Operationen ausgeführt werden: ++, --, +, - |
| Array von Zeigern | Sie können ein Array definieren, das zum Speichern von Zeigern verwendet wird. |
| Zeiger auf Zeiger | C erlaubt Zeiger auf Zeiger. |
| Zeiger an Funktionen übergeben | Das Übergeben von Parametern per Referenz oder Adresse ermöglicht es, die übergebenen Parameter in der aufgerufenen Funktion zu ändern. |
| Rückgabe eines Zeigers aus Funktionen | C erlaubt es Funktionen, Zeiger auf lokale Variablen, statische Variablen und dynamisch zugewiesenen Speicher zurückzugeben. |