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 :

Pointeur vers un champ d'une structure


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut Pointeur vers un champ d'une structure
    Bonjour à tous,

    j'ai un problème qui paraîtra tout simple pour certains: je cherche à obtenir l'adresse d'un champ d'une structure.
    Par exemple, j'ai une structure "Trackbar" avec un champ "int position".
    et je voudrai passer l'adresse de ce champ à une fonction.

    Pour avoir la valeur:
    int value = tb->position;
    ["tb" étant lui-même un pointeur vers une variable de type Trackbar]

    Pour l'adresse, j'ai tenté des syntaxes du type:
    int *ptr = tb.position;
    OU:
    int *ptr = &(tb->position)

    mais aucune des deux ne passent à la compil'.
    Quelqu'un pour m'aider? Ca paraît tout simple en plus... Help!

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Salut,

    C'est pourtant bien ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int *ptr = &(tb->position); /* avec ou sans parenthèses */
    Quelle erreur donne le compilateur ?

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Comment est déclaré Trackbar ? Est-ce une structure C ou un objet type vcl (borland c++)?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    à jeroman: les deux (avec ou sans parenthèses) me renvoient une erreur "Must take adress of a memory location" à la compilation, je n'arrive pas à trouver la bonne syntaxe

    à mabu: c'est bien un objet VCL avec C++ Builder 6

  5. #5
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    position est une propriété (et donc une valeur, pas un objet) et non un champ. On ne peut pas prendre son adresse.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    aaah oui, bien vu!
    j'ai testé la même syntaxe sur un simple attribut et ça marche, c'est pour les propriétés que ça foire.
    Bon du coup ça m'arrange pas trop... en fait, je voulais récupérer la position sous forme de variable pour pouvoir passer son adresse à une fonction, et la modifier directement dans la fonction

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/06/2009, 17h50
  2. Adresse/offset du champs d'une structure
    Par ludo894 dans le forum C
    Réponses: 29
    Dernier message: 24/01/2007, 10h58
  3. Réponses: 5
    Dernier message: 20/11/2006, 17h45
  4. Réponses: 4
    Dernier message: 10/04/2006, 09h28
  5. Réponses: 6
    Dernier message: 24/03/2006, 18h24

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