Pointeurs
Résolu
celina-boni
Messages postés
30
Date d'inscription
Statut
Membre
Dernière intervention
-
celina-boni Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
celina-boni Messages postés 30 Date d'inscription Statut Membre Dernière intervention -
svp une réponse!
j'ai ce programme en c qui est à la base just pour montrer comment utiliser les pointeurs et que l'ordinateur affiche le résultat tjr en base 16 et comme je suis débutante je métrise pas trés bien l'utilisation des pointeurs ,je veux just savoir pourquoi on a ajouté a notre poiteur ces variables comme p+3 et p+2 et p+1 et à quoi sert de les mettre ?
EDIT: Ajout de la coloration syntaxique.
j'ai ce programme en c qui est à la base just pour montrer comment utiliser les pointeurs et que l'ordinateur affiche le résultat tjr en base 16 et comme je suis débutante je métrise pas trés bien l'utilisation des pointeurs ,je veux just savoir pourquoi on a ajouté a notre poiteur ces variables comme p+3 et p+2 et p+1 et à quoi sert de les mettre ?
#include<stdio.h> main() {float x; unsigned char* p=(unsigned char *)&x; printf("donner un nbr réel:\n"); scanf("%f",&x); printf("%x %x %x %x\n",*(p+3),*(p+2),*(p+1),*p);}
EDIT: Ajout de la coloration syntaxique.
3 réponses
Bonjour,
Mes remarques sur le code :
Aère le code. Par exemple, les accolades sont mal placés, du coup ça perd en lisibilité.
main()
Le bon prototype est : int main(void);
Et il ne faut pas oublier : return 0; juste avant l'accolade fermante finale.
unsigned char* p=(unsigned char *)&x;
Le cast est superflu.
Sinon pour la question, ton programme affiche en base 16, car c'est ce qui lui est demandé : printf("%x", ...);
printf("%x %x %x %x\n",*(p+3),*(p+2),*(p+1),*p);}
printf("%x") de *(p+3) ou tout simplement p[3] permettra d'afficher la valeur en hexadécimal du 3ème byte de la variable x.
Donc l'ensemble permet d'afficher le nombre hexa de x. Attention néanmoins à l'endianness.
Cdlt,
Mes remarques sur le code :
Aère le code. Par exemple, les accolades sont mal placés, du coup ça perd en lisibilité.
main()
Le bon prototype est : int main(void);
Et il ne faut pas oublier : return 0; juste avant l'accolade fermante finale.
unsigned char* p=(unsigned char *)&x;
Le cast est superflu.
Sinon pour la question, ton programme affiche en base 16, car c'est ce qui lui est demandé : printf("%x", ...);
printf("%x %x %x %x\n",*(p+3),*(p+2),*(p+1),*p);}
printf("%x") de *(p+3) ou tout simplement p[3] permettra d'afficher la valeur en hexadécimal du 3ème byte de la variable x.
Donc l'ensemble permet d'afficher le nombre hexa de x. Attention néanmoins à l'endianness.
Cdlt,
désolé encore une fois :)