📅  最后修改于: 2023-12-03 15:33:43.744000             🧑  作者: Mango
Le Pointeur de Pointeur est un concept important en Language-C. C'est une technique puissante qui permet de travailler avec des adresses au lieu de travailler avec les valeurs directement.
Un Pointeur de Pointeur est une variable qui stocke l'adresse d'une autre variable qui elle-même est une adresse. Il permet d'accéder à une variable ou une valeur qui est à l'intérieur d'une autre variable qui elle-même est également une adresse.
Un exemple simple pour comprendre le Pointeur de Pointeur est comme suit:
int a = 7;
int *p1 = &a;
int **p2 = &p1;
Dans cet exemple, nous avons déclaré une variable a
et deux pointeurs p1
et p2
. p1
pointe sur la variable a
et p2
pointe sur le pointeur p1
.
Voici un diagramme pour mieux visualiser la relation entre ces variables et pointeurs:
Pour utiliser un Pointeur de Pointeur en Language-C, nous avons besoin de trois étapes:
struct octet{
char letter;
struct octet *next;
};
struct octet a, b, c;
a.letter = 'A';
b.letter = 'B';
c.letter = 'C';
a.next = &b;
b.next = &c;
c.next = NULL;
struct octet **pptr = &a.next;
Dans cet exemple, nous avons déclaré une structure octet
qui contient une lettre et un Pointeur vers une autre structure octet
. Nous avons également déclaré trois variables a
, b
, et c
de type octet
et les avons initialisées avec les lettres 'A', 'B', et 'C'. a
pointe sur b
, b
pointe sur c
et c
pointe sur NULL.
Ensuite, nous avons déclaré un Pointeur de Pointeur pptr
et initialisé avec l'adresse de a.next
.
Nous pouvons maintenant utiliser pptr
pour accéder à la structure b
.
printf("%c\n", (*pptr)->letter);
pptr = &((*pptr)->next);
printf("%c\n", (*pptr)->letter);
pptr = &((*pptr)->next);
printf("%c\n", (*pptr)->letter);
Dans cet exemple, nous avons utilisé (*pptr)->letter
pour accéder à la lettre 'B' dans la structure b
. Ensuite, nous avons utilisé pptr = &((*pptr)->next)
pour déplacer pptr
vers la structure c
et ainsi de suite.
Le Pointeur de Pointeur est une technique qui peut être très utile dans de nombreuses situations en Language-C. Il permet de travailler avec des valeurs qui elles-mêmes sont des adresses.
Rappelez-vous qu'il est important de bien comprendre ce que vous faites lorsque vous utilisez des Pointeurs de Pointeur car cela peut facilement devenir complexe. Cependant, il est également très puissant et peut simplifier votre code dans de nombreux cas.