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

2 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   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
    1. NewUcef Messages postés 97 Statut Membre 6
       
      J'aime tes interventions fiddy ;)
      (+1 dans l'utilité de ton réponse )
      0
    2. Utilisateur anonyme
       
      merci de votre aide les amis
      0
  2. 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
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Point p=1;
      Ca ne marchera pas. Il faut mettre des accolades autour de 1 pour initialiser la structure Point.
      0
    2. 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