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 :

Pointeurs des pointeurs


Sujet :

C

  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut Pointeurs des pointeurs
    Bonjour,
    J'ai un petit problème à comprendre les pointeurs des pointeurs et dans quel cas ils peuvent être utilisés ?
    Si quelqu'un peut m'expliquer cette notion de ** voir *** avec des exemples

    Merci à vous

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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 453
    Par défaut
    Citation Envoyé par Johnny P. Voir le message
    Bonjour,
    J'ai un petit problème à comprendre les pointeurs des pointeurs et dans quel cas ils peuvent être utilisés ?
    Si quelqu'un peut m'expliquer cette notion de ** voir *** avec des exemples

    Merci à vous
    Un pointeur est une variable comme une autre. À ce titre, il occupe donc de la place en mémoire et sa position a une adresse, comme tout le reste. Un pointeur peut donc pointer vers un entier, un caractère, une structure,etc. ou… un autre pointeur, lequel pointe lui-même vers entier, un caractère, une structure,etc. ou…

    Tu passes également un pointeur lorsque tu passes un tableau d'éléments consécutifs et de même taille. Le pointeur pointe alors le premier élément, et peut être incrémenté pour passer aux suivants. C'est le cas pour les tableaux déclarés comme tels mais également pour les chaînes de caractères, qui ne sont rien d'autre que des tableaux de caractères.

    Ainsi, une chaîne se référence avec un « char * ». Si tu veux faire un tableau de chaînes, il te faut donc un tableau de pointeurs vers le début de chacune de ces chaînes, et tu obtiens un « char ** ».

    Ça peut être utile également quand une fonction a besoin de l'adresse d'un pointeur pour aller le remplir aller même. Par exemple, une fonction TrouveNom() qui se servirait de sa valeur de retour pour indiquer ou non une erreur, et qui te passerait la chaîne en paramètre, donnerait :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /* Prototype */int TrouveNom (char **)
     
    int main (void)
    {
        char * nom;
        TrouveNom (&nom);
    }

    L'adresse du pointeur char * « nom » est donc de type char **. Ensuite, par induction, on comprend que l'on peut comme ça multiplier le nombre d'étoiles, sans limites. Cela dit, il est assez rare que l'on dépasse le nombre de trois étoiles.

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/05/2011, 12h46
  2. Réponses: 11
    Dernier message: 17/03/2011, 09h19
  3. probleme sur des pointeurs de pointeurs
    Par frboyer dans le forum Langage
    Réponses: 2
    Dernier message: 14/04/2010, 18h01
  4. Soucis avec des pointeurs, des tableaux, des char*
    Par isabell3 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/12/2009, 12h00
  5. Réponses: 4
    Dernier message: 08/05/2006, 18h27

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