Question arithmétique pointeur

jeancrien1121 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
jeancrien1121 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention  
 
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   Statut Contributeur Dernière intervention   1 846
 
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