IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Taille d'une structure à partir d'un pointeur sur la structure


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Taille d'une structure à partir d'un pointeur sur la structure
    Bonjour
    Je suis à la recherche d'une façon simple pour obtenir la taille en octet d'une struture à partir d'un pointeur sur cette structure.
    Avec la fonction sizeof je peux seulement avoir la taille d'un pointeur (sizeof(pointeur); ) ou la taille d'un élément de la structure ( sizeof(*pointeur); )
    Est ce qu il existe une autre fonction standard pour calculer une taille.
    Ou est ce que quelqu un a une idée pour faire ca.
    Merci d'avance
    kourov

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par kourov Voir le message
    Bonjour
    Je suis à la recherche d'une façon simple pour obtenir la taille en octet d'une struture à partir d'un pointeur sur cette structure.
    Avec la fonction sizeof je peux seulement avoir la taille d'un pointeur (sizeof(pointeur); ) ou la taille d'un élément de la structure ( sizeof(*pointeur); )
    Est ce qu il existe une autre fonction standard pour calculer une taille.
    Ou est ce que quelqu un a une idée pour faire ca.
    Merci d'avance
    kourov
    Si "pointeur" est vraiment un pointeur sur ta structure, alors
    devrait te donner le résultat que tu cherche...


    .

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Mon pointeur n'est pas explicitement un pointeur sur la structure mais un pointeur sur des short int qui pointe sur la structure.

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Citation Envoyé par kourov Voir le message
    Mon pointeur n'est pas explicitement un pointeur sur la structure mais un pointeur sur des short int qui pointe sur la structure.
    dans ce cas c'est pas possible...

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 947
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 947
    Points : 5 660
    Points
    5 660
    Par défaut
    Hoe,
    Citation Envoyé par kourov Voir le message
    Mon pointeur n'est pas explicitement un pointeur sur la structure mais un pointeur sur des short int qui pointe sur la structure.
    Pourquoi faire simple quand on peut faire compliqué.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    En fait je n'ai pas été assez precis dans ma question.
    Je suis en train de developper une bibliotheque de fonction et l'utilisateur de cette bibliotèque passe en paramètre dans une fonction d'initialisation un pointeur sur un unsigned short int qui pointe sur une structure qui n'est pas connu de ma biblioteque.
    et je voudrais savoir si a partir de ce pointeur il est possible de retrouver la taille de la structure qui est pointée par ce pointeur.
    J'espere que ce que je raconte est compréhensible.
    Merci d'avance
    kourov

  7. #7
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Non, if faut que la taille soit aussi passée en paramètre à la fonction...

    Mais pourquoi à tu besoin de savoir la taille de la structure sous-sous-jacente si tu ne la connais pas ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    je ne connais pas exactement ce qu'il y a dedans je sais juste qu'il y a des mots de 16 bits et je voulais savoir la taille pour ne pas depasser le max lorsque j'écris dedans

    Merci à tous pour vos réponses très rapides

  9. #9
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Comment tu peux écrire des données dans un buffer dont tu ne connais ni le contenu, ni la structure et ni la signification ?

    Encore une fois, si la taille ne t'es pas explicitement fournie, tu n'a aucun moyen de deviner...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    c 'est n'est pas un buffer en fait c est une structure qui contient des entiers soit de 16 bits soit de 32 bits et j'y accede en ecriture ou en lecture à partir
    de l'adresse de la structure.
    Mais donc d'apres ce que tu dis je ne peu pas savoir la taille a partir du pointeur je vais donc la passée en paramètre
    Merci beaucoup pour ces reponses
    kourov

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kourov Voir le message
    Je suis à la recherche d'une façon simple pour obtenir la taille en octet d'une struture à partir d'un pointeur sur cette structure.
    Avec la fonction sizeof je peux seulement avoir la taille d'un pointeur (sizeof(pointeur); ) ou la taille d'un élément de la structure ( sizeof(*pointeur); )
    Ah ? Tu penses que sizeof (*pointeur) donne la taille de quel élément ?

  12. #12
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par kourov Voir le message
    En fait je n'ai pas été assez precis dans ma question.
    Je suis en train de developper une bibliotheque de fonction et l'utilisateur de cette bibliotèque passe en paramètre dans une fonction d'initialisation un pointeur sur un unsigned short int qui pointe sur une structure qui n'est pas connu de ma biblioteque.
    et je voudrais savoir si a partir de ce pointeur il est possible de retrouver la taille de la structure qui est pointée par ce pointeur.
    Non. On ne peut pas 'retrouver' la taille.

    - Soit elle est donnée par le type :
    et ceci est toujours vrai : sizeof (T) == sizeof *p

    - Soit elle est passée explicitement dans un paramètre :
    appelé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    T s;
     
    f (&s, sizeof s);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2011, 15h03
  2. Réponses: 0
    Dernier message: 21/04/2011, 13h23
  3. Réponses: 2
    Dernier message: 31/05/2010, 15h12
  4. ouvrit une base à partir d'un form sur une autre
    Par Stéph utilisateur d'acces dans le forum IHM
    Réponses: 3
    Dernier message: 22/04/2008, 08h12
  5. Réponses: 1
    Dernier message: 13/12/2006, 03h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo