Zeiger in C sind einfach und machen Spaß. Einige C-Programmieraufgaben können einfacher mit Zeigern ausgeführt werden, und andere Aufgaben, wie z. B. die dynamische Speicherzuweisung, können nicht ohne Verwendung von Zeigern ausgeführt werden. Es wird also notwendig, Zeiger zu lernen, um ein perfekter C-Programmierer zu werden. Beginnen wir mit dem Erlernen in einfachen Schritten.
Wie Sie wissen, ist jede Variable ein Speicherort, und für jeden Speicherort ist eine Adresse definiert, auf die mit kaufmännischem Und (), der eine Adresse im Speicher angibt. Betrachten Sie das folgende Beispiel, das die Adresse der definierten Variablen druckt –
Wenn der obige Code kompiliert und ausgeführt wird, wird Folgendes erzeugt Ergebnis –
Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6
Was sind Zeiger?
Ein Zeiger ist eine Variable, deren Wert die Adresse einer anderen Variablen ist, dh eine direkte Adresse Wie bei jeder Variablen oder Konstante müssen Sie einen Zeiger deklarieren, bevor Sie ihn zum Speichern einer Variablenadresse verwenden. Die allgemeine Form einer Zeigervariablendeklaration lautet –
type *var-name;
Hier ist type der Basistyp des Zeigers. Es muss ein gültiger C-Datentyp sein und var-name ist der Name der Zeigervariable. Das Sternchen *, mit dem ein Zeiger deklariert wird, ist das gleiche Sternchen, das für die Multiplikation verwendet wird. In dieser Anweisung wird das Sternchen jedoch verwendet, um eine Variable als Zeiger zu kennzeichnen. Sehen Sie sich einige der gültigen Zeigerdeklarationen an –
int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */
Der tatsächliche Datentyp des Werts aller Zeiger, ob Ganzzahl, Gleitkomma, Zeichen oder auf andere Weise ist dieselbe lange hexadezimale Zahl, die eine Speicheradresse darstellt. Der einzige Unterschied zwischen Zeigern verschiedener Datentypen ist der Datentyp der Variablen oder Konstante, auf die der Zeiger zeigt.
Verwenden von Zeigern?
Es gibt einige wichtige Operationen. was wir sehr häufig mit Hilfe von Zeigern tun werden. (a) Wir definieren eine Zeigervariable, (b) weisen einem Zeiger die Adresse einer Variablen zu und (c) greifen schließlich auf den Wert an der in der Zeigervariablen verfügbaren Adresse zu. Dazu wird der unäre Operator * verwendet, der den Wert der Variablen zurückgibt, die sich an der durch ihren Operanden angegebenen Adresse befindet. Im folgenden Beispiel werden diese Operationen verwendet:
Wenn der obige Code kompiliert und ausgeführt wird, wird das folgende Ergebnis erzielt:
Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20
NULL-Zeiger
Es wird immer empfohlen, einer Zeigervariablen einen NULL-Wert zuzuweisen, falls Ihnen keine genaue Adresse zugewiesen werden muss. Dies erfolgt zum Zeitpunkt der Variablendeklaration. Ein Zeiger, dem NULL zugewiesen ist, wird als Nullzeiger bezeichnet.
Der NULL-Zeiger ist eine Konstante mit dem Wert Null, die in mehreren Standardbibliotheken definiert ist. Betrachten Sie das folgende Programm:
#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}
Wenn der obige Code kompiliert und ausgeführt wird, wird das folgende Ergebnis erzielt:
The value of ptr is 0
In den meisten Betriebssystemen dürfen Programme unter der Adresse 0 nicht auf den Speicher zugreifen, da dieser Speicher vom Betriebssystem reserviert wird. Die Speicheradresse 0 hat jedoch eine besondere Bedeutung; es signalisiert, dass der Zeiger nicht auf einen zugänglichen Speicherort zeigen soll. Wenn ein Zeiger jedoch den Wert Null (Null) enthält, wird davon ausgegangen, dass er auf nichts zeigt.
Um nach einem Nullzeiger zu suchen, können Sie eine „if“ -Anweisung wie folgt verwenden:
if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */
Zeiger im Detail
Zeiger haben viele, aber einfache Konzepte und sind für die C-Programmierung sehr wichtig. Die folgenden wichtigen Zeigerkonzepte sollten jedem C-Programmierer klar sein:
Sr.Nr. | Konzept & Beschreibung |
---|---|
1 | Zeigerarithmetik
Es gibt vier arithmetische Operatoren, die in Zeigern verwendet werden können: ++, -, +, – |
2 | Array von Zeigern
Sie können Arrays definieren, die eine Anzahl von Zeigern enthalten. |
3 | Zeiger auf Zeiger
Mit C können Sie einen Zeiger auf einen Zeiger usw. haben. |
4 | Übergeben von Zeigern an Funktionen in C
Übergeben Ein Argument als Referenz oder Adresse ermöglicht es, das übergebene Argument in der aufrufenden Funktion durch die aufgerufene Funktion zu ändern. |
5 | Rückgabe Zeiger von Funktionen in C
C ermöglicht es einer Funktion, einen Zeiger auf die lokale Variable, die statische Variable und den dynamisch zugewiesenen Speicher zurückzugeben. |