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

Algorithmes et structures de données Discussion :

qu'est-ce qu'un pointeur?


Sujet :

Algorithmes et structures de données

  1. #1
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut qu'est-ce qu'un pointeur?
    Bonjour,

    Je souhaiterai savoir qu'est-ce qu'un pointeur et qu'elle est son utilité?

    Merci d'avance.


  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    Tu trouveras plein d'infos ici :
    http://chgi.developpez.com/pointeur/

    Pour résumer, un pointeur, c'est une variable qui contient l'adresse d'une autre variable.
    Ca sert dans plein de situations. Par exemple, pour éviter de passer de très grosses structures en paramètre à une fonction, on passe juste son adresse.
    C'est un peu comme si tu donnes l'URL d'un site au lieu de donner un gros fichier .zip avec tous les fichiers qui composent le site en question.

    Voilà.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    Débutant
    Inscrit en
    Juin 2006
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 502
    Points : 78
    Points
    78
    Par défaut
    ok merci beaucoup

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    En algorithmique, on parle plutôt de réference.

    On peut éventuellement passer directement les paramètres et effectuer un effet de bord dessus.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Procédure incrementer(Entier i)
     i <- i+1
    Cette fonction n'a de signification que si on effectue un effet de bords sur la variable i. En fait, ici, i est une réference.

    L'écriture propre de la procédure est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Procédure incrementer(Réference Entier i)
     i <- i+1
    Je ne répondrai à aucune question technique en privé

  5. #5
    Membre confirmé 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
    Points : 567
    Points
    567
    Par défaut
    En fait la notion des pointeurs est l'une des notions qui donnent aux langages C et C++ leur grande puissance.

    voici un extrait de " comment ça marche " qui parle de cette technique:

    Définition d'un pointeur
    Un pointeur est une variable contenant l'adresse d'une autre variable d'un type donné. La notion de pointeur fait souvent peur car il s'agit d'une technique de programmation très puissante, permettant de définir des structures dynamiques, c'est-à-dire qui évoluent au cours du temps (par opposition aux tableaux par exemple qui sont des structures de données statiques, dont la taille est figée à la définition).

    Comprendre la notion d'adresse
    Comme nous l'avons vu, un pointeur est une variable qui permet de stocker une adresse, il est donc nécessaire de comprendre ce qu'est une adresse.

    Lorsque l'on exécute un programme, celui-ci est stocké en mémoire, cela signifie que d'une part le code à exécuter est stocké, mais aussi que chaque variable que l'on a défini a une zone de mémoire qui lui est réservée, et la taille de cette zone correspond au type de variable que l'on a déclaré.
    En réalité la mémoire est constituée de plein de petites cases de 8 bits (un octet). Une variable, selon son type (donc sa taille), va ainsi occuper une ou plusieurs de ces cases (une variable de type char occupera une seule case, tandis qu'une variable de type long occupera 4 cases consécutives).

    Chacune de ces « cases » (appelées blocs) est identifiée par un numéro. Ce numéro s'appelle adresse.

    On peut donc accéder à une variable de 2 façons :

    1 grâce à son nom
    2 grâce à l'adresse du premier bloc alloué à la variable

    Il suffit donc de stocker l'adresse de la variable dans un pointeur (il est prévu pour cela) afin de pouvoir accéder à celle-ci (on dit que l'on « pointe vers la variable »).


    Comment connaît-on l'adresse d'une variable ?
    En réalité vous n'aurez jamais à écrire l'adresse d'une variable, d'autant plus qu'elle change à chaque lancement de programme étant donné que le système d'exploitation alloue les blocs de mémoire qui sont libres, et ceux-ci ne sont pas les mêmes à chaque exécution.

    Ainsi, il existe une syntaxe permettant de connaître l'adresse d'une variable, connaissant son nom :
    il suffit de faire précéder le nom de la variable par le caractère & (« ET commercial ») pour désigner l'adresse de cette variable :


    &Nom_de_la_variable

    si tu veux bien maîtriser cette notion :
    * http://chgi.developpez.com/pointeur/
    Ce n'est qu'en forgeant qu'on devient forgeron.

  6. #6
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    qui donnent aux langages C et C++ leur grande puissance
    Soyons juste : le pointeur existe aussi en pascal, delphi, assembler, ... et même dans un de mes vieux fortran ( 77 ou 90 ? ). La présentation qui est faite est donc un peu incorrecte vis-à-vis des autres langages.

    On ne peut pas affirmer que la notion de pointeur soit une spécificité à C(++)
    et qui le rende par là compétitif!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut et les langage objet
    plus tous les langages objet ou les pointeurs sont bien présent mais cachés .

    cedric

  8. #8
    Membre confirmé 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
    Points : 567
    Points
    567
    Par défaut
    j'ai pas dit que les pointeurs sont utilisés en exclusivité dans C et C++.
    j'ai dit à la lettre: c'est l'une des notions qui donne an langages c ET c++ leur grande puissance
    j'ai cité ces deux langages parceque je suis un fun .c'est tout.
    Ce n'est qu'en forgeant qu'on devient forgeron.

  9. #9
    Membre actif Avatar de Betatesteur
    Inscrit en
    Juillet 2003
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 210
    Points : 248
    Points
    248
    Par défaut
    ça va finir par un troll ça lol
    Le monde du DevLOpPEUR....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    En train, il admire le scrolling du paysage..
    Il rédige ses chèques en héxadécimal..
    Sa dernière pensée avant de s'endormir est "shutdown completed"...

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut
    meuh non
    C'est juste un échange éclairé de point de vue loll.

    cedric

  11. #11
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par mademoizel
    Bonjour,

    Je souhaiterai savoir qu'est-ce qu'un pointeur et qu'elle est son utilité?

    Merci d'avance.

    Je suggérrai de s'initier au langage machine également ( l'assembleur )

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut
    c'est pas considérer comme de la torture ca ?


  13. #13
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par cedric49fr2000
    c'est pas considérer comme de la torture ca ?
    Si, d'ailleurs, c'est interdit par les lois internationales !
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut
    deja que en tant que informaticien on veux tous nous mettre a l'asile . si en plus vous leur parler de chose pareil !!

    Pour etre plus serieux, je suis bien d'accord que au moins en assembleur on voit les adresses et leurs utilités.

    Cependant cela ne risque t il pas de faire oublier que les pointeurs peuvent etre aussi tres conceptuel. Dans java, les pointeurs sont sous jacents. Il n'est pas utile d'en connaitre le fonctionnement, avoir la connaissance du concept est utile cependant.


    Mais d'un autre coté, on fait encore des pilotes en assembleur pour accélérer les traitements ?

    cedric

  15. #15
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Sauf cas particuliers, l'assembleur n'est que rarement utilisé.
    Dans la plupart des cas, les compilateurs optimisent mieux que nous pourrions le faire.


    Edit: Je sens que je vais me faire lyncher par les accros à l'assembleur
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut
    donc on ne cherche plus à se rapprocher de la machine pour optimiser a coup d'adresse et de registre ?

    Compilateur C ou C ++ ?

    c'est dingue ca tout ce perd.

    cedric

  17. #17
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par cedric49fr2000
    donc on ne cherche plus à se rapprocher de la machine pour optimiser a coup d'adresse et de registre ?
    C'est vrai que c'est dommage pour les développeurs... On n'a plus besoin de modifier les applis à chaque fois que la machine change
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  18. #18
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Points : 252
    Points
    252
    Par défaut
    on voudrais nous mettre au chomage ?


Discussions similaires

  1. Quelle est la valeur du pointeur si new échoue ?
    Par Stobbyo dans le forum Débuter
    Réponses: 2
    Dernier message: 24/06/2011, 23h30
  2. Réponses: 4
    Dernier message: 02/08/2007, 14h11
  3. Réponses: 4
    Dernier message: 08/05/2006, 18h27
  4. Quelle est la grosseur d'un pointeur (FK)?
    Par sekiryou dans le forum Administration
    Réponses: 4
    Dernier message: 04/06/2005, 22h17
  5. Réponses: 8
    Dernier message: 04/08/2004, 14h17

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