Bonjour à tous,
J'ai un exercice où l'on me demande ce que fait:
*ptr étand un pointeurCode:
1
2
3 int c = 12 ; int * ptr = & c ; * ptr = * ptr + 5
C'est surtout sur la ligne *ptr=*ptr+5 où je coince
merci d'avance
Version imprimable
Bonjour à tous,
J'ai un exercice où l'on me demande ce que fait:
*ptr étand un pointeurCode:
1
2
3 int c = 12 ; int * ptr = & c ; * ptr = * ptr + 5
C'est surtout sur la ligne *ptr=*ptr+5 où je coince
merci d'avance
[pense a mettre ton code entre des balises [code], le bouton # lorsque tu édites]
Sinon, tu ne nous dis pas ce que tu ne comprends pas, donc il est difficile de t'aider. Est-ce que tu peux décrire ligne a ligne le code, du genre :Code:
1
2
3
4 int c = 12 ; int * ptr = & c ; * ptr = * ptr + 5 *ptr étand un pointeur
ligne 1 : on declare une variable de type int qui vaut 12
...
Je pense qu'il sera ensuite plus facile de t'aider.
En fait c'est tout simple le petit morceau je le comprend bien mais la ligneje ne sais pas comment l'interpreterCode:*ptr=*ptr+5
Et donc, comment décomposes-tu cette expression?
Tu comprends bien qu'en vertu de l'article IV-N de la charte que nous avons, comme toi, accepté, nous ne pouvons pas t'aider si tu n'exposes pas d'abord ton point de vue.
Pour moi on ajout 5 au pointeur *ptr
Lisez les références qu'on vous donne.Citation:
Pour moi on ajout 5 au pointeur *ptr
Priorité - 3 *a Indirection (dereference)Code:*ptr=*ptr+5
Priorité - 6 a+b a-b Addition and subtraction
Donc
C'estCode:*ptr=*ptr+5
C'est donc :Code:(*ptr)=(*ptr)+5
1- récupérer la valeur actuelle de la case mémoire pointée par ptr.
2- additionner 5 à cette valeur
3- mettre dans la case mémoire pointée par ptr le résultat de la somme.
Raté, l'expression s'évalue ainsi:
à (*p), assigner la valeur de "la somme de (*p) et de 5"
Edit: zut, doublé par bacelar. Du coup, je fais mon 'tit cours de prononciation
Une bonne manière de comprendre l'étoile et l'esperluette, c'est de poser son vocabulaire comme ca marche.
l'étoile unaire (*a) signifie toujours "ce qui est désigné par". (contrairement à l'étoile binaire (a*b) qui désigne le produit).
l'esperluette unaire (&a) signifie "l'adresse désignant".
Ton exercice est toujours celui-ci:
Ainsi, quoique ce ne soit pas exactement la formulation attendue par les professeurs, il peut se lit ainsi:Code:
1
2
3
4 int c = 12 ; int * ptr = & c ; * ptr = * ptr + 5 *ptr étand un pointeur
Le commentaire est faux, le pointeur n'est pas *ptr, mais ptr, int* étant son type.Citation:
soit l'entier c de valeur 12.
soit l'entier qui est désigné par ptr qui vaut l'adresse désignant c.
ce qui est désigné par ptr est assigné avec la valeur de la somme de ce qui est désigné par ptr et de 5.
Merci à tous