question C

question C - C - Programmation

Marsh Posté le 19-11-2007 à 22:57:31    

bonjour,
dans le code suivant :

Code :
  1. void Push(pile **p, int Val)
  2. {
  3.         pile *element = malloc(sizeof(pile));
  4.         if(!element) exit(1);     /* Si l'allocation a échouée. */
  5.         element->valeur = Val;
  6.         element->prec = *p;
  7.         *p = element;       /* Le pointeur pointe sur le dernier élément. */
  8. }


 
je ne comprends pas les 3 dernières instructions    
Pour la derniere instruction, comment il sait qu'il pointe sur le dernier élément ?
est-ce que quelqu'un pourrait bien expliquer en detail ce qu'il se passe dans les trois dernieres instructions ?
 
merci.

Reply

Marsh Posté le 19-11-2007 à 22:57:31   

Reply

Marsh Posté le 20-11-2007 à 00:10:59    

Il s'agit d'affectations. [:klem3i1]

Reply

Marsh Posté le 20-11-2007 à 07:19:35    

La fonction malloc() va attribuer de l'espace pour un nouvel élément. Ce nouvel élément sera appelé le "dernier élément" dans l'ordre chronologique. Ce n'est pas forcément le dernier dans le sens du plus grand ou du plus petit.
La flèche dans "element->valeur" indique que element est un pointeur sur une structure et que valeur est un membre de cette structure.

Reply

Marsh Posté le 20-11-2007 à 11:41:37    

Si par hasard tu lisais les explications là où tu as trouvé cet exemple: http://chgi.developpez.com/pile/
 

Citation :

La fonction reçoit comme paramètres la valeur que l'on veut mémoriser mais aussi un pointeur sur le pointeur identifiant la pile. Pourquoi un pointeur de pointeur ? Ceci afin de passer l'adresse du pointeur à la fonction pour que celle-ci puisse le modifier.
Dans la fonction nous créons en premier lieu le nouvel élément (*element) avec l'instruction malloc. Nous lui affectons sa valeur, mais aussi l'adresse de l'élément précédent qui est en fait le sommet actuel de la pile et enfin nous affectons le pointeur identifiant la pile par pointeur déréférencé avec l'adresse de l'élément que l'on vient de créer afin qu'il devienne le sommet de la pile.

Reply

Marsh Posté le 20-11-2007 à 12:33:17    

NGKreator, c'est quoi ce cercle pointillé que tu as avant ta signature, à cheval sur les parties gauche et droite ? Ca m'intrigue :)

Reply

Marsh Posté le 20-11-2007 à 12:49:02    

matafan a écrit :

NGKreator, c'est quoi ce cercle pointillé que tu as avant ta signature, à cheval sur les parties gauche et droite ? Ca m'intrigue :)


Normalement il est sensé inverser le sens d'écriture si tu le colle quelque part. Mais apparemment ça marche plus, enfin ça dépend des fois.
 
Voilà un exemple
‫‬‭‮‪‫‬‭‮҉Voilà un exemple


Message édité par ngkreator le 20-11-2007 à 12:54:21
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed