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 :

A quoi servent les pointeurs


Sujet :

C++

  1. #1
    Membre confirmé Avatar de amine6441
    Inscrit en
    Novembre 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 85
    Par défaut A quoi servent les pointeurs
    Est-ce que les pointeurs servent juste pour les déclarations et les réservations de mémoire ou bien on peut les utilises dans d’autre domaine

    Et merci pour vos réponses

  2. #2
    Membre chevronné
    Avatar de NewbiZ
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2002
    Messages : 184
    Par défaut
    * De manière générale, il est aussi commode de les utiliser pour pouvoir accéder à un même objet depuis plusieurs endroits.

    * Ils permettent aussi de ne passer qu'une adresse mémoire, au lieu d'un copie de l'objet lui même, ce qui est indispensable lorsque tu manipules de gros objets.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    C'est en effet leur fonction essentielle mais on peut en effet leur trouver d'autres applications.
    Par exemple, le parcours des éléments d'un tableau. Un tableau en C / C++ est en fait un pointeur sur l'adresse du premier élément, avec un pas correspondant à la taille des éléments du tableau.
    C'est par exemple de cette façon que sont traitées les chaînes de caractères en C.
    Quand on passe des paramètres à une fonction, ces paramètres sont copiés. Si on veut pouvoir modifier le paramètre, on veut pas travailler sur une copie, dans ce cas, on utilise les pointeurs pour passer les addresses des paramètres. C'est aussi utile si un paramètre est un objet de grande taille dont la copie prendrait du temps. En C++, on préfère souvent les références.
    On peut mettre un pointeur à NULL (à zéro) pour indiquer un vide.

    Il doit en exister d'autres mais ce sont les principales.

  4. #4
    Membre confirmé Avatar de amine6441
    Inscrit en
    Novembre 2006
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 85
    Par défaut
    Merci pour les informations

  5. #5
    Membre chevronné Avatar de aziz jim
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Citation Envoyé par BugFactory
    Un tableau en C / C++ est en fait un pointeur sur l'adresse du premier élément,
    Inexact. Un tableau, en C ou en C++, est implicitement convertible en un pointeur sur son premier élément.

    En clair, si je déclare :
    tab est de type "tableau de 42 doubles", il est donc de type double[42].
    Mais le type double[42] est implicitement convertible en double *, c'est pourquoi le code suivant est valide:
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    * De manière générale, il est aussi commode de les utiliser pour pouvoir accéder à un même objet depuis plusieurs endroits.

    * Ils permettent aussi de ne passer qu'une adresse mémoire, au lieu d'un copie de l'objet lui même, ce qui est indispensable lorsque tu manipules de gros objets.
    Ce qui se fait de meilleure façon avec des références.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Citation Envoyé par Médinoc
    Inexact. Un tableau, en C ou en C++, est implicitement convertible en un pointeur sur son premier élément.
    Le C comme le C++ ne vérifiant pas que l'on sort du tableau avec un indice incorrect, je pense que l'on peut effectivement les considérer comme des pointeurs, la différence n'étant qu'au niveau de l'écriture. J'admets que les notions sont différentes, mais le C / C++ lui-même ne s'en préoccupe pas.

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Il s'en préoccupe dès que tu prends l'adresse d'un tableau (&tab), qui n'est certainement pas de type pointeur de pointeur et qui conserve l'information sur la taille.

    En C++, pointeurs ou références sur un tableau permettent ce genre de choses:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template< size_t N >
    void UneFonction(char (&buf)[N])
    {
       char unTableauDeLaMemeTailleQueBuf[N];
     
       // ...
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    961
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 961
    Par défaut
    Je l'ignorais, merci pour cette précision.

Discussions similaires

  1. à quoi servent les .dsm ?
    Par fidji dans le forum Delphi
    Réponses: 4
    Dernier message: 14/06/2006, 19h37
  2. [MySQL] A quoi servent les réferences entre les tables??
    Par Alain15 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 18/02/2006, 16h19
  3. A quoi servent les index dans une BDD ?
    Par Melvine dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 25/10/2005, 12h14
  4. [CR 10] A quoi servent les Templates Fields ?
    Par caviar dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 10/11/2004, 10h52
  5. [C#] A quoi servent les interfaces???
    Par sof_nns dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/10/2004, 20h51

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