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 :

déréférencer un pointeur générique ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tintin72
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    663
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 663
    Par défaut déréférencer un pointeur générique ?
    Bonjour,

    J'ai vu que l'on pouvait déréférencer un pointeur générique comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int a = 25;
    void *pVoid = &a;
    *(int*)pVoid = 52; //indirection d'un pointeur générique
    Effectivement ça marche et c'est super pratique, mais j'aimerais savoir si on peut se servir de cette méthode sans problème et en toute occasion.
    (je pars bien sûr du principe que l'on sait ce qu'on déréférence)

    Merci

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bonjour

    Bein oui, on peut sans probleme

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    J'ai vu que l'on pouvait déréférencer un pointeur générique comme ceci:
    On ne peut pas déréférencer un pointeur générique.
    Ici le déréférencement s'effectue sur un pointeur sur "int".

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par tintin72
    Bonjour,

    J'ai vu que l'on pouvait déréférencer un pointeur générique comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int a = 25;
    void *pVoid = &a;
    *(int*)pVoid = 52; //indirection d'un pointeur générique
    Effectivement ça marche et c'est super pratique, mais j'aimerais savoir si on peut se servir de cette méthode sans problème et en toute occasion.
    (je pars bien sûr du principe que l'on sait ce qu'on déréférence)

    Merci
    Du moment que l'initialisation du pointeur a eu lieu pas de problème, mais attention, si le pointeur pointe vers une zone valide de 4 octets et qu'à cette adresse tu en copies 5 il y a comme un problème. En C on suppose que le programmeur sait ce qu'il fait, mais ce n'est pas toujours le cas ...
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par tintin72
    J'ai vu que l'on pouvait déréférencer un pointeur générique comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int a = 25;
    void *pVoid = &a;
    *(int*)pVoid = 52; //indirection d'un pointeur générique
    Effectivement ça marche et c'est super pratique, mais j'aimerais savoir si on peut se servir de cette méthode sans problème et en toute occasion.
    (je pars bien sûr du principe que l'on sait ce qu'on déréférence)
    Si tu sais ce que tu fais oui. Il est plus clair de passer par un pointeur du bon type (le code généré est probablement le même).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int a = 25;
    void *pVoid = &a;
    int *pint = pVoid;
    *pint = 52; //indirection d'un pointeur générique
    Attention, on travaille sans filet. Si le type n'est pas le bon, c'est la catastrophe.

  6. #6
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *pint = 52; //indirection d'un pointeur générique
    Peut on vraiment dire que l'indirection se fait sur un pointeur générique et pas simplement sur un pointeur sur entier?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par seriousme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *pint = 52; //indirection d'un pointeur générique
    Peut on vraiment dire que l'indirection se fait sur un pointeur générique et pas simplement sur un pointeur sur entier?
    Je ne lis pas les commentaires. Je suis un compilateur humain...

Discussions similaires

  1. Pointeur générique (void *)
    Par c-candide dans le forum C
    Réponses: 22
    Dernier message: 25/02/2007, 02h52
  2. pointeur générique en C++
    Par gnto dans le forum C++
    Réponses: 6
    Dernier message: 20/02/2007, 13h52
  3. Pointeur générique vers d'autres types d'objets
    Par LapinGarou dans le forum MFC
    Réponses: 11
    Dernier message: 15/09/2006, 16h48
  4. Question sur les pointeurs génériques
    Par mikedavem dans le forum C
    Réponses: 16
    Dernier message: 24/05/2006, 11h56
  5. pointeur générique
    Par ghostdog dans le forum C
    Réponses: 14
    Dernier message: 09/11/2005, 15h23

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