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 :

struct pointeur ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 292
    Par défaut struct pointeur ?
    bonjour,
    j'arrive pas à comprendre ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct myStruc{
    unsigned value : 2; // normalement value peut prendre 0..3 2bits
    unsigned       : 0; // pas comprendre  :cry:
    } myStruct;
    short v = 1;
    myStruct ms = *(myStruct*)&v //le & normalement c'est un décalage
                      // j'ai pas compris quoi ça donne ?
    merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 126
    Par défaut
    Bonjour,

    Le & correspond ici, plutôt au ET logique bit à bit. Non ?
    De ce fait (je ne suis pas sur) :
    ms = 01 si myStruct contient 01.
    ms = 00 sinon.

    A+,
    A.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le & correspond ici, plutôt au ET logique bit à bit. Non ?
    NON.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myStruct ms = *(myStruct*)&v //le & normalement c'est un décalage
                      // j'ai pas compris quoi ça donne ?
    il s'agit ici de l'opérateur unaire "adresse de ". Les opérateurs de décalage sont >> et <<

    Cette ligne s'interprète comme :

    - On prend l'adresse du short v : &v. Ceci est donc du type short *
    - On transforme cette valeur en le type pointeur sur structure avec l'opérateur de cast: (myStruct*)&v
    - On prend le contenu de cette adresse (transformée donc en adresse de structure) pour le mettre dans la structure ms : ms = *(myStruct*)&v


    Ce code est horrible. Est-ce qu'il y a des cas où ça marche ? ce n'est pas sûr. Absolument pas portable.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Une version plus propre serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef union {
      short v;
      struct myStruc {
        unsigned value : 2;
        unsigned : 0;
      } myStruct;
    } myUnion;
     
    ...
     
    myUnion ms;
    ms.v = 1;
    Il n'en reste pas moins que l'usage des champs de bit n'est pas portable.

Discussions similaires

  1. struct & pointeurs
    Par Echap dans le forum Débuter
    Réponses: 9
    Dernier message: 15/11/2008, 21h42
  2. Réponses: 12
    Dernier message: 20/12/2006, 20h12
  3. Réponses: 11
    Dernier message: 20/10/2006, 13h19
  4. copie d'une struct avec pointeur
    Par Thor Tillas dans le forum C++
    Réponses: 5
    Dernier message: 18/10/2006, 02h41
  5. Pb pointeur tableau struct
    Par difficiledetrouver1pseudo dans le forum C
    Réponses: 12
    Dernier message: 02/05/2006, 15h48

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