Question arithmétique pointeur

Fermé
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013 - 23 juin 2013 à 07:45
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013 - 24 juin 2013 à 00:44
Bonjour a tous, j'ai un petit soucis lors de mes révisions ayant déjà posée une question hier j'ai été satisfait de vos réponse je recommence donc aujourd'hui :D

Si PI, qui est un pointeur d'entiers codés sur 2 octets, est stocké à l'adresse 4351 et contient l'adresse 2301, et que K est une variable de type entier qui a été initialisée à la valeur -2, quelle est l'adresse désignée par l'expression : PI-- - ++K * sizeof(*PI) ?

Si PR, un pointeur de réels codés sur 32 bits, est à l'adresse 1771 et pointe l'adresse 3177 également utilisée pour héberger la variable caractère A dont la valeur est 27, quelle est l'adresse désignée par l'expression suivante :
--PR- ++A + 3 * sizeof(float) ?

Quelqu'un pourrait m'expliquer comment venir a bout de ces problèmes svp ? merci :)

2 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
23 juin 2013 à 11:25
Bonjour,

Si PI, qui est un pointeur d'entiers codés sur 2 octets, est stocké à l'adresse 4351 et contient l'adresse 2301,
Il faudrait surtout connaître la valeur stockée à l'adresse 2301. Sans ça, tu ne peux pas répondre à la question 1.

Pour la question 2 :
--PR- ++A + 3 * sizeof(float) ?
Il suffit de remplacer les expressions par leur valeur.
PR vaut 3177
A vaut 27
sizeof(float) vaut 4. D'ailleurs il serait plus juste de dire combien de bytes vaut le float et non pas combien de bits. Car un byte ne contient pas forcément 8 bits...

Ensuite, il suffit de connaître l'opérateur ++PR. Cela signifie, j'incrémente PR et que je renvoie la nouvelle valeur. Autrement dit, tu peux le remplacer par (PR+1) dans l'expression. De même pour A.

Voilà, tu as toutes les infos pour répondre aux questions.
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
23 juin 2013 à 19:58
Bon alors pour le deuxième ça serait (3177-1) - (28) + 3x4 = 3160
mais le résultat que j'ai noter dans mon cours donne 3109 :( quelqu'un pourrait me donner la solution étape par étape s'il vous plait :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
23 juin 2013 à 20:27
3109 ? Ben, je pense que tu as mal noté ;-).
Les étapes que tu as écrites sont bonnes.

Et pour la 1ère question, il manque une donnée...
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
23 juin 2013 à 21:48
erf :( suis perdu j'ai pris la feuille d'une copine qui est plus tôt douer et elle prend normalement bien notes : / pour la première elle a noter 4337 : / Tu pourrait me donne la réponse de
Si PR, un pointeur de réels codés sur 48 bits, est à l'adresse 1011 et pointe l'adresse 5101 également utilisée pour héberger la variable caractère C dont la valeur est 'B', quelle est l'adresse désignée par l'expression suivante : ++PR + C-- + 1 ?

voila ce que j'obtiens moi : pr+1=5102 + c-- (affiche c et décrément après donc : c contient 98 (b en ascii) 5102 + 98 + 1 = 5201

mais la réponse inscrite dans mon cours est 5509 est j'ai du mal a croire que ses réponses sont fausses : / aidez moi svp :D
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
23 juin 2013 à 22:00
Beh pour ++PR+C--+1, cela fait (5101+1)+(66-1)+1 = 5102+65+1 = 5168
'B' fait 66 : 98 c'est 'b'.
0
jeancrien1121 Messages postés 16 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 14 septembre 2013
23 juin 2013 à 22:29
je te remercie :) et j'adore tomber sur des réponses différente de mon cours ... :p
mais je me demandais faire c-- ca n'équivaut pas a afficher c et puis décrémenter donc c vaudrait 66 et nan 66-1 ?
et suis désoler de te demander ça mais est-tu vraiment sur ? :D étant donné que c'est quand même pour mon examen de demain
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
23 juin 2013 à 22:31
Oups. Au temps pour moi. J'ai lu trop vite.
++PR+C--+1 donne (5101+1)+(66)+1 = 5169.
Tu as tout à fait raison pour la décrémentation. c-- renvoie l'ancienne valeur tandis que --c renvoie la nouvelle valeur.
0