Structure , langage C , adressage
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, j'éssai de comprendre le fonctionnement de l'adressage d'une structure
pour cela j'ai réalisé ce petit programme
(a essayer sur codeblocks)
et voila ce qu'il m'affiche :
- - - - - - - - - - - - - - - - - - - - -
p = 4730865
&p = 2293576
&p.x = 2293576
&p.y = 2293580
- - - - - - - - - - - - - - - - - - - - -
j'ai compris que &p = &p.x = l'adresse de la 1er champ.
&p.y = &p.x + sizeof(p.x)
mais la ligne "p = 4730865" m'est incompréhensible
si quelqu'un y voit plus claire ,éclairez moi SVP
1001 mercis d'avance
pour cela j'ai réalisé ce petit programme
#include<stdio.h>
#include<stdlib.h>
typedef struct Point
{
int x;
int y;
}Point;
int main()
{
Point p;
printf("p = %d \n",p);
printf("&p = %d \n",&p);
printf("&p.x = %d \n",&p.x);
printf("&p.y = %d \n",&p.y);
return EXIT_SUCCESS;
}
(a essayer sur codeblocks)
et voila ce qu'il m'affiche :
- - - - - - - - - - - - - - - - - - - - -
p = 4730865
&p = 2293576
&p.x = 2293576
&p.y = 2293580
- - - - - - - - - - - - - - - - - - - - -
j'ai compris que &p = &p.x = l'adresse de la 1er champ.
&p.y = &p.x + sizeof(p.x)
mais la ligne "p = 4730865" m'est incompréhensible
si quelqu'un y voit plus claire ,éclairez moi SVP
1001 mercis d'avance
A voir également:
- Structure , langage C , adressage
- Langage ascii - Guide
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Langage binaire - Guide
- Structure d'un rapport de stage - Guide
- Pascal langage - Télécharger - Édition & Programmation
2 réponses
Bonjour,
mais la ligne "p = 4730865" m'est incompréhensible
Tu n'as pas initialisé ta structure. Elle contient donc n'importe quelle valeur. Fait p.x=0; p.y=0; et tu verras que ça sera mieux ;-))).
De plus, c'est mieux de mettre %p plutôt que %d pour afficher l'adresse d'un pointeur.
Et enfin printf("%d",p); doit générer un warning de la part de ton compilateur. Il faut mettre : printf("%d",p.x); par exemple.
Google is your friend
mais la ligne "p = 4730865" m'est incompréhensible
Tu n'as pas initialisé ta structure. Elle contient donc n'importe quelle valeur. Fait p.x=0; p.y=0; et tu verras que ça sera mieux ;-))).
De plus, c'est mieux de mettre %p plutôt que %d pour afficher l'adresse d'un pointeur.
Et enfin printf("%d",p); doit générer un warning de la part de ton compilateur. Il faut mettre : printf("%d",p.x); par exemple.
Google is your friend
(+1 dans l'utilité de ton réponse )