Pointer in C:Was ist Pointer in der C-Programmierung? Typen
Was ist Pointer in C?
Der Zeiger in C, ist eine Variable, die die Adresse einer anderen Variablen speichert. Ein Zeiger kann auch verwendet werden, um auf eine andere Zeigerfunktion zu verweisen. Ein Zeiger kann inkrementiert/dekrementiert werden, d. h. auf den nächsten/vorherigen Speicherplatz zeigen. Der Zweck des Zeigers besteht darin, Speicherplatz zu sparen und eine schnellere Ausführungszeit zu erreichen.
Wie man Zeiger in C verwendet
Wenn wir eine Variable v vom Typ int deklarieren, speichert v tatsächlich einen Wert.
v ist jetzt gleich Null.
Allerdings hat jede Variable neben dem Wert auch ihre Adresse (oder einfach gesagt, wo sie sich im Speicher befindet). Die Adresse kann abgerufen werden, indem ein kaufmännisches Und (&) vor den Variablennamen gesetzt wird.
Wenn Sie die Adresse einer Variablen auf dem Bildschirm ausgeben, sieht sie wie eine völlig zufällige Zahl aus (außerdem kann sie von Lauf zu Lauf unterschiedlich sein).
Versuchen wir dies in der Praxis mit dem Zeiger im C-Beispiel
Die Ausgabe dieses Programms ist -480613588.
Was ist nun ein Zeiger? Anstatt einen Wert zu speichern, speichert ein Zeiger die Adresse einer Variablen.
Zeigervariable
Int *y =&v;
VARIABLEPOINTERA Wert gespeichert in einem benannten Speicher-/SpeicheradresseEine Variable das auf zeigt die Speicher-/Speicheradresse eines anderen variableEinen Zeiger deklarieren
Wie Variablen müssen Zeiger in der C-Programmierung deklariert werden, bevor sie in Ihrem Programm verwendet werden können. Pointer können beliebig benannt werden, solange sie den Benennungsregeln von C gehorchen. Eine Pointer-Deklaration hat folgende Form.
data_type * pointer_variable_name;
Hier,
- Datentyp ist der Basistyp des Zeigers der Variablentypen von C und gibt den Typ der Variablen an, auf die der Zeiger zeigt.
- Das Sternchen (*:dasselbe Sternchen, das für die Multiplikation verwendet wird), das ein Indirektionsoperator ist, deklariert einen Zeiger.
Sehen wir uns einige gültige Zeigerdeklarationen in diesem C-Zeiger-Tutorial an:
int *ptr_thing; /* pointer to an integer */ int *ptr1,thing;/* ptr1 is a pointer to type integer and thing is an integer variable */ double *ptr2; /* pointer to a double */ float *ptr3; /* pointer to a float */ char *ch1 ; /* pointer to a character */ float *ptr, variable;/*ptr is a pointer to type float and variable is an ordinary float variable */
Einen Zeiger initialisieren
Nachdem wir einen Zeiger deklariert haben, initialisieren wir ihn wie Standardvariablen mit einer Variablenadresse. Wenn Zeiger in der C-Programmierung nicht uninitialisiert und im Programm verwendet werden, sind die Ergebnisse unvorhersehbar und möglicherweise katastrophal.
Um die Adresse einer Variablen zu erhalten, verwenden wir den kaufmännischen Und-Operator (&), der vor dem Namen einer Variablen steht, deren Adresse wir benötigen. Die Zeigerinitialisierung erfolgt mit der folgenden Syntax.
Zeigersyntax
pointer = &variable;
Ein einfaches Programm zur Zeigerdarstellung ist unten angegeben:
#include <stdio.h> int main() { int a=10; //variable declaration int *p; //pointer variable declaration p=&a; //store address of variable a in pointer p printf("Address stored in a variable p is:%x\n",p); //accessing the address printf("Value stored in a variable p is:%d\n",*p); //accessing the value return 0; }
Ausgabe:
Address stored in a variable p is:60ff08 Value stored in a variable p is:10Operator Bedeutung *Erfüllt 2 Zwecke
- Deklaration eines Zeigers
- Gibt den Wert der referenzierten Variable zurück
- Gibt die Adresse einer Variablen zurück
Zeigertypen in C
Im Folgenden sind die verschiedenen Zeigertypen in C aufgeführt :
Null-Zeiger
Wir können einen Nullzeiger erstellen, indem wir während der Zeigerdeklaration einen Nullwert zuweisen. Diese Methode ist nützlich, wenn Sie dem Zeiger keine Adresse zugewiesen haben. Ein Nullzeiger enthält immer den Wert 0.
Das folgende Programm veranschaulicht die Verwendung eines Nullzeigers:
#include <stdio.h> int main() { int *p = NULL; //null pointer printf(“The value inside variable p is:\n%x”,p); return 0; }
Ausgabe:
The value inside variable p is: 0
Void-Zeiger
In der C-Programmierung wird ein Void-Zeiger auch als generischer Zeiger bezeichnet. Es hat keinen Standarddatentyp. Ein void-Zeiger wird mit dem Schlüsselwort void erstellt. Es kann verwendet werden, um eine Adresse einer beliebigen Variablen zu speichern.
Das folgende Programm veranschaulicht die Verwendung eines void-Zeigers:
#include <stdio.h> int main() { void *p = NULL; //void pointer printf("The size of pointer is:%d\n",sizeof(p)); return 0; }
Ausgabe:
The size of pointer is:4
Wildzeiger
Ein Zeiger wird als wilder Zeiger bezeichnet, wenn er auf nichts initialisiert wird. Diese Arten von C-Zeigern sind nicht effizient, da sie auf einen unbekannten Speicherort verweisen können, der Probleme in unserem Programm verursachen und zum Absturz des Programms führen kann. Man sollte immer vorsichtig sein, wenn man mit wilden Zeigern arbeitet.
Das folgende Programm veranschaulicht die Verwendung von wilden Zeigern:
#include <stdio.h> int main() { int *p; //wild pointer printf("\n%d",*p); return 0; }
Ausgabe:
timeout: the monitored command dumped core sh: line 1: 95298 Segmentation fault timeout 10s main
Andere Arten von Zeigern in 'c' sind wie folgt:
- Hängender Zeiger
- Komplexer Zeiger
- Nahe-Zeiger
- Fernzeiger
- Großer Zeiger
Direkte und indirekte Zugriffszeiger
In C gibt es zwei äquivalente Möglichkeiten, auf Variableninhalte zuzugreifen und diese zu manipulieren
- Direkter Zugriff:Wir verwenden direkt den Variablennamen
- Indirekter Zugriff:Wir verwenden einen Zeiger auf die Variable
Lassen Sie uns dies mit Hilfe des Programms unten verstehen
#include <stdio.h> /* Declare and initialize an int variable */ int var = 1; /* Declare a pointer to int */ int *ptr; int main( void ) { /* Initialize ptr to point to var */ ptr = &var; /* Access var directly and indirectly */ printf("\nDirect access, var = %d", var); printf("\nIndirect access, var = %d", *ptr); /* Display the address of var two ways */ printf("\n\nThe address of var = %d", &var); printf("\nThe address of var = %d\n", ptr); /*change the content of var through the pointer*/ *ptr=48; printf("\nIndirect access, var = %d", *ptr); return 0;}
Nach dem fehlerfreien Kompilieren des Programms lautet das Ergebnis:
Direct access, var = 1 Indirect access, var = 1 The address of var = 4202496 The address of var = 4202496 Indirect access, var = 48
Zeiger-Arithmetik in C
Die Zeigeroperationen sind in der folgenden Abbildung zusammengefasst
C Sprache
- C#-Variablen und (primitive) Datentypen
- Arten von benutzerdefinierten Funktionen in der C-Programmierung
- C-Zeiger
- C++-Zeiger mit Beispielen
- Was ist 3D-Druck? Arbeitsprinzip | Typen | Anwendungen
- Java - Variablentypen
- C - Zeiger
- C++-Variablentypen
- Python - Variablentypen
- Was ist Schweißen? - Definition | Arten des Schweißens