Structure , langage C , adressage

[Résolu/Fermé]
Signaler
-
 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

Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
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
Messages postés
80
Date d'inscription
samedi 9 avril 2011
Statut
Membre
Dernière intervention
13 juillet 2011
6
J'aime tes interventions fiddy ;)
(+1 dans l'utilité de ton réponse )
Utilisateur anonyme
merci de votre aide les amis
Messages postés
80
Date d'inscription
samedi 9 avril 2011
Statut
Membre
Dernière intervention
13 juillet 2011
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;
Messages postés
11066
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1 768
Point p=1;
Ca ne marchera pas. Il faut mettre des accolades autour de 1 pour initialiser la structure Point.
Messages postés
80
Date d'inscription
samedi 9 avril 2011
Statut
Membre
Dernière intervention
13 juillet 2011
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