Pointeurs

Résolu/Fermé
celina-boni Messages postés 30 Date d'inscription samedi 23 août 2014 Statut Membre Dernière intervention 8 décembre 2015 - Modifié par Whismeril le 17/01/2015 à 08:09
celina-boni Messages postés 30 Date d'inscription samedi 23 août 2014 Statut Membre Dernière intervention 8 décembre 2015 - 19 janv. 2015 à 20:41
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 ?
#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

Utilisateur anonyme
17 janv. 2015 à 08:10
Bonjour c'est par ce mot que devrais commencer ton message.....
1
celina-boni Messages postés 30 Date d'inscription samedi 23 août 2014 Statut Membre Dernière intervention 8 décembre 2015 1
17 janv. 2015 à 13:15
je m'excuse vous avez raison, j'ai pas fais attention et pourtant j'ai pas l'habitude et svp ne le prenez pas comme un manque de politesse msr whismeril
désolé encore une fois :)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
17 janv. 2015 à 22:04
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,
1
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
18 janv. 2015 à 18:07
Bonsoir , et pourquoi pas ?
#include <stdio.h>
#include <stdlib.h>

int main( void ){

	static int f = 0;
	unsigned int i = 0;

	for( i = 0; i < 3; i++ ){
		printf("entrer un nombre\t:");
		if( scanf( "%d", &f) ){
			printf("%3d| = %x\n", i, f );
		}
	}

	return( EXIT_SUCCESS );
}


à bientôt
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
18 janv. 2015 à 18:38
et pourquoi pas ?
Car celina-boni nous pose une question qui a pour but de comprendre l'usage des pointeurs...
0
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
18 janv. 2015 à 19:02
no comment +1
0
celina-boni Messages postés 30 Date d'inscription samedi 23 août 2014 Statut Membre Dernière intervention 8 décembre 2015 1
19 janv. 2015 à 20:41
bonsoir !
je vous remerçie vraiment pour vos réponse et vos remarque sur le programme et votre réponse msr fiddy est bien satisfait :) je vous remerçie encore une fois :)
à bientot ^^
0