Doppelzeiger in C

Doppelzeiger in C

Doppelzeiger in C (Zeiger zu Zeiger)

Es ist eine bekannte Tatsache aus dem vorherigen Tutorial, dass die Adresse einer Variablen in C gespeichert wird, indem die Zeiger verwendet werden, da sie auf eine Stelle im Speicher zeigen. Der Hauptvorteil der Pointer besteht darin, dass sie die Zugriffszeit auf die Variablen verkürzen. Immer wenn Zeiger auf Zeiger definiert ist, wird die Adresse der Variablen vom ersten Zeiger und die Adresse des ersten Zeigers vom zweiten Zeiger gespeichert, daher werden sie als Doppelzeiger in C bezeichnet Sprache.

Lassen Sie uns die Deklaration eines Zeigers auf einen Zeiger in der C-Sprache verstehen

Die Deklaration des Zeigers auf Zeiger in der C-Sprache ist der Deklaration eines Zeigers in der C-Sprache sehr ähnlich. Der einzige Unterschied zwischen den beiden besteht darin, dass bei Doppelzeigern ein zusätzliches '*' benötigt wird direkt vor dem Namen des Zeigers.

Hier ist die Syntax des Zeigers auf den Zeiger in der C-Sprache:

int **p; // Zeiger auf einen Zeiger in C-Sprache, der auf eine ganze Zahl zeigt.

Hier ist ein Diagramm, das unten abgebildet ist, um Ihnen das Verständnis des Prozesses zu erleichtern:

Nehmen wir ein Beispiel für Zeiger auf Zeiger:

#include<stdio.h>  
void main ()  
{  
    int x = 12;  
    int *a;  
    int **aa;   
    a = &x; // pointer a is pointing to the address of x  
    aa = &a; // pointer aa is x double pointer pointing to the address of pointer a  
    printf("address of x: %x\n",a); // Address of x will be printed   
    printf("address of a: %x\n",aa); // Address of a will be printed  
    printf("value stored at a: %d\n",*a); // value stoted at the address contained by a i.e. 10 will be printed  
    printf("value stored at aa: %d\n",**aa); // value stored at the address contained by the pointer stoyred at aa  
}  
Ausgabe:
Adresse von x:1a8e58cc
Adresse von a:1a8e58d0
Wert gespeichert bei a:12
Wert gespeichert bei aa:12

Double Pointer in C ein weiteres Beispiel

Dieses Beispiel zeigt an, dass ein Zeiger auf eine andere Zeigeradresse zeigt

#include<stdio.h>  
int main()
{  
int num=10;      
int *p;   
int **p2;        
p=&num ;      
p2=&p ;    
printf("Num variable address is = %x \n",&num);      
printf("p variable address is =%x \n",p);      
printf("*p variable value is = %d \n",*p);      
printf("p2 variable address is = %x \n",p2);      
printf("**p2 variable value is =%d \n",*p);      
return 0;  
}  
Ausgabe:
Num-Variablenadresse ist =1131ddcc
p-Variablenadresse ist =1131ddcc
*p-Variablenwert ist =10
p2-Variablenadresse ist =1131ddd0
**p2 Variablenwert ist =10