Das Gedächtnis in einem Programm ist in zwei Teile unterteilt: statisch und dynamisch. Der statische Gedächtnis bezieht sich auf Variablen einer festen Größe im Laufe des Programms, während sich dynamischer Speicher an die Größe von Variablen anpasst, die das Programm benötigt. Wenn beispielsweise ein Programm eine variable Anzahl von Zeichenfolgen speichern muss, würde ein dynamischer Speicher verwendet. In C -Sprache, Doppelzeiger (**) werden bei der Arbeit mit dynamischem Speicher verwendet.
Was ist ein Doppelzeiger (**)?
A Doppelzeiger (**) ist ein Zeiger, der auf den Ort eines anderen Zeigers hinweist. Der Ort der Variablen im Speicher wird durch diesen zusätzlichen Zeiger angegeben. Als Ergebnis, wenn a Doppelzeiger (**) wird einer Variablen zugeordnet, zwei Ebenen der Speicheradresse werden erstellt. Dadurch kann die C -Sprache leichter zugreifen. Auf dem Speicherstapel a Doppelzeiger (**) Nimmt die gleiche Menge Platz wie ein regulärer Zeiger ein.
Schauen wir uns die Syntax von a an Doppelzeiger (**):
Data_type_of_pointer ** name_of_variable = & normal_pointer_variable;
Schauen wir uns nun ein Beispiel für die Verwendung an Doppelzeiger (**) in einem C -Programm.
#enthalten
int main ()
int val = 36;
int* ptr1;
int ** ptr2;
ptr1 = &val;
ptr2 = &ptr1;
printf ("Wert von Val ist: %d \ n", val);
printf ("Wert von VAL unter Verwendung eines einzelnen Zeigers ist: %d \ n", *ptr1);
printf ("Wert von VAL unter Verwendung eines Doppelzeigers ist: %d \ n", ** ptr2);
Rückkehr 0;
Wir verwenden die Variable “val”Mit dem Wert 36 im obigen Code. Dann verweisen wir einen Zeiger (PTR1) in Richtung der val, die in Richtung eines zweiten Zeigers gerichtet ist (PTR2) nachher. Aber die Zeiger ändern den Wert des 'val', das bleibt 36.
Ausgang
Doppelzeiger (**) in der C -Programmiersprache verhalten sich identisch mit regulären Zeigern in C. Infolgedessen die Doppelzeiger (**) Die Größe der Variablen und die Größe der regulären Zeigervariablen sind immer identisch.
#enthalten
int main ()
int val = 36;
int* ptr1;
int ** ptr2;
ptr1 = &val;
ptr2 = &ptr1;
printf ("Größe des normalen Zeigers: %d \ n", sizeof (ptr1));
printf ("Größe des Doppelzeigers: %d \ n", sizeof (ptr2));
Rückkehr 0;
Wir verwenden die Variable “val”Mit dem Wert 36 in diesem Code. Dann verweisen wir einen Zeiger (PTR1) in Richtung der val, die in Richtung eines zweiten Zeigers gerichtet ist (PTR2) nachher. Die Größe beider Zeiger wird berechnet, dh ist identisch, ich.e. 8.
Ausgang
Was macht ** in der C -Sprache?
Es gibt mehrere Funktionen von Doppelzeiger die hier erwähnt werden:
1: Zugriff auf dynamischen Speicher
Das Merkmal von Doppelzeiger (**) Ermöglicht es der C -Sprache, den dynamischen Speicher einzurichten und zugänglich zu machen. Zu diesem Zweck wird ein Zeiger mit einer Adresse versehen, die dem ersten Element eines Arrays entspricht. Der Doppelzeiger (**) Weist dann auf diesen Zeiger hin, sodass die Daten an diesem Ort gelesen oder geschrieben werden können. Wenn das Programm ausgeführt wird, können das Array mit a zum Array hinzugefügt werden Doppelzeiger (**).
2: Definieren Sie ein Zeigerarray
Eine weitere Verwendung für Doppelzeiger (**) ist eine Reihe von Zeigern zu definieren. Dies ist nützlich, wenn das Programm auf große Datenmengen zugreifen muss, ohne sich um die Größe des Arrays zu kümmern. A Doppelzeiger (**) Kann schnell auf die Adresse dieser Zeiger zugreifen und es ermöglichen, dass das Programm die Daten verarbeiten kann, ohne dass die Größe des Arrays jedes Mal geändert wird.
3: Zugriff auf Speicheradresse Ort
Auf der grundlegendsten Ebene die Doppelzeiger (**) Ermöglicht dem Programmierer einfach Zugriff auf die Adresse eines bestimmten Speicherorts. Mit dieser Adresse kann der Programmierer dann auf alle an diesem Ort gespeicherten Daten zugreifen oder diese Daten nach Bedarf ändern. Zu diesem Zweck Dereferen der Programmierer lediglich die Doppelzeiger (**), die mit dem Sternchen (*) -Scharakter geschehen wird. Wegen dem Doppelzeiger (**), Der Programmierer kann nun auf Daten auf Daten zugreifen und sie auf eine Weise verändern, die bisher nicht machbar war.
4: Erstellen Sie komplexe Datenstrukturen
Außerdem a Doppelzeiger (**) kann auch verwendet werden, um komplexere Datenstrukturen wie Bäume und Grafiken zu erstellen. Knoten, die auf einen oder mehrere zusätzliche Knoten verweisen und eine ausgefeiltere Struktur in Bäumen und Grafiken ausmachen können. Um eine solche komplexe Struktur zu erstellen, muss der Programmierer erneut a definieren Doppelzeiger (**) Das weist auf die Knoten in der Datenstruktur hin. Der Doppelzeiger (**) ermöglicht dem Programmierer, auf eine Weise auf Knoten in der Struktur zuzugreifen und zu modifizieren, die ohne die nicht möglich wäre Doppelzeiger (**).
Abschluss
Doppelzeiger (**) sind ein leistungsstarker Bestandteil der C -Sprache, das es den Programmen ermöglicht, mit großen Datenmengen und dynamischem Speicher zu arbeiten. Sie liefern die Adresse eines Datenstücks für einfachen Zugriff und behalten die beiden Adressebenen während der gesamten Datenverlauf bei. Durch Nutzung Doppelzeiger (**), Ein C -Sprachprogramm kann schnell große Datenmengen verarbeiten.