Structure , langage C , adressage

Résolu
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

#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:

2 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
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
0
NewUcef Messages postés 97 Statut Membre 6
 
J'aime tes interventions fiddy ;)
(+1 dans l'utilité de ton réponse )
0
Utilisateur anonyme
 
merci de votre aide les amis
0
NewUcef Messages postés 97 Statut Membre 6
 
Salut
"p = 4730865" parce que tu n'as pas initialisé le p, et c'est la valeur que le compilateur à donner à ton P pendant la compilation
essai de donner une valeur exemple:p.x=1;p.y=1;
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Point p=1;
Ca ne marchera pas. Il faut mettre des accolades autour de 1 pour initialiser la structure Point.
0
NewUcef Messages postés 97 Statut Membre 6
 
oui j'ai remarquer après que c'est une structure et j'ai modifié
mais le principe ce qu'il doit donner une valeur à son p
0