voici le code dans un cours sur developpez.com
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
typedef struct pile
        {
                int valeur;
                struct pile *prec;
        } pile ;
    pile *MaPile = NULL;
void Push(pile **p, int Val)
{
        pile *element = malloc(sizeof(pile));
        if(!element) exit(EXIT_FAILURE);     /* Si l'allocation a échouée. */
        element->valeur = Val;
        element->prec = *p;
        *p = element;       /* Le pointeur pointe sur le dernier élément. */
}
 
       // dans le main
 pile *MaPile = NULL;   /* Impératif de l'initialiser à NULL */
 Push(&MaPile, 10);
ma question ici sur l'argument de la fonction push (**p) , pourquoi deux étoile alors que l'on utilsie à l'intérieur de la fonction juste *p ; et pourquoi une seul étoile ne marche pas vu que l'on veut l'adresse que contient ce pointeur donc on la passe par référence donc comme argument dans push(*p) au lieu de (**p) ou comme copie push(pile p) vu qu'elle contient l'adresse que l'on veut insérer dans la strucuture que l'on va créer . jespère que vous compreniez ce que je veux dire .