Structure , langage C , adressage

Résolu/Fermé
Utilisateur anonyme - 10 avril 2011 à 16:28
 Utilisateur anonyme - 10 avril 2011 à 17:21
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
Modifié par fiddy le 10/04/2011 à 16:51
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 80 Date d'inscription samedi 9 avril 2011 Statut Membre Dernière intervention 13 juillet 2011 6
Modifié par NewUcef le 10/04/2011 à 16:45
J'aime tes interventions fiddy ;)
(+1 dans l'utilité de ton réponse )
0
Utilisateur anonyme
10 avril 2011 à 17:21
merci de votre aide les amis
0
NewUcef Messages postés 80 Date d'inscription samedi 9 avril 2011 Statut Membre Dernière intervention 13 juillet 2011 6
Modifié par NewUcef le 10/04/2011 à 16:42
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
10 avril 2011 à 16:46
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 80 Date d'inscription samedi 9 avril 2011 Statut Membre Dernière intervention 13 juillet 2011 6
Modifié par NewUcef le 10/04/2011 à 16:49
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