Bonjour,
(J e précise que je suis autodidacte et que ce n'est pas un exercice à résoudre pour un devoir qcq)
En m'inspirant du tuto de CGI j'ai écrit:
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
#include <stdio.h>
#include <stdlib.h>
/* ======= 
 * pile3.c 
 * ======= */
 
typedef struct pile {
	int  valeur;
	struct pile * prec;
} pile;
 
void Push(pile ** p, int Val)
{
        pile * element = malloc(sizeof(pile));
        if (!element) 
		exit(1);     /* Si l'allocation a échouée et stdlib.h est pour exit . */
        element->valeur = Val;
        element->prec = *p;
        *p = element;       /* Le pointeur pointe sur le dernier élément. */
}
 
int main()
{
	int i;
	pile * MaPile = NULL, * index = NULL;
	for (i = 1; i <= 8; i++)
		Push(&MaPile, i);
	printf("%d\n", MaPile->valeur);
	printf("%d\n", MaPile->prec->valeur);
	printf("%d\n", MaPile->prec->prec->valeur);
	printf("==\n");
	index = MaPile; /* Pour parcourir la pile */
	for (i = 0; i < 8; i++)
	printf("%d\n", (index - i)->valeur);
	return 0;
 
}
Le résultat m'affiche ce que je veux: 8, 7, 6 d'une part.
Mais la boucle avec l'index m'affiche:
8, 0, 7, 0, 6, 0, 5, 0
Je ne comprends pas pourquoi (index - 1)->valeur ne contient pas 7 et à quoi correspond le 0.

Merci pour une explication.
Pardonnez moi si c'est évident mais comme dit l'anglais je suis stuck.