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   -
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
 
Bonjour c'est par ce mot que devrais commencer ton message.....
1
celina-boni Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   1
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   49
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   49
 
no comment +1
0
celina-boni Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   1
 
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