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 sur void


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 62
    Points : 96
    Points
    96
    Par défaut Pointeur sur void
    Bonjour,
    Je voudrais savoir le sens de:

    void *in et de void **out? dans l'instruction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int IOCTL(call_t *c, int option, void *in, void **out);
    Merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 371
    Points : 23 626
    Points
    23 626
    Par défaut
    Bonsoir,

    • in est un pointeur vers des données au format indéfini (void) ;
    • out est un pointeur vers un pointeur vers des données au format indéfini (void) ;


    L'idée est que, d'une part, comme tu ne connais pas à l'avance le format des données que tu vas transmettre ou recevoir de ta fonction, tu ne pourras le faire que de manière indirecte en passant l'adresse de ces données, adresse qui, elle, a toujours le même format quelque soit ce que l'on y trouve.

    Ensuite, tu vas passer ce pointeur à ta fonction en entrée pour qu'elle puisse aller chercher les données, puis elle va t'en retourner un autre en fin de traitement pour que, toi, tu puisses aller lire les données modifiées. Il faut donc que tu lui passes l'adresse d'un pointeur « void * » pour qu'elle puisse le remplir. Concrètement, à l'usage, ça va donner quelque chose ressemblant à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        int         x = 10;          /* Donnée à transmettre */
        void *      p_entree = &x;   /* Adresse de la donnée à lire (la variable x) */
        void *      p_sortie = NULL; /* Pointeur recevant en retour l'adresse des données renvoyées par la fonction */
    
        ioctl (CODE_DE_L_APPEL,option,p_entree,&p_sortie);

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

Discussions similaires

  1. [Debutant VC++.net] Obtenir un pointeur sur objet
    Par SteelBox dans le forum MFC
    Réponses: 6
    Dernier message: 17/06/2004, 18h36
  2. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47
  5. Declaration de fonction retournant un pointeur sur fonction
    Par pseudokifaitladifférence dans le forum C
    Réponses: 5
    Dernier message: 11/08/2003, 19h37

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