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 :

votre recette pour les pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Par défaut votre recette pour les pointeurs
    Bonjour,

    Je débute avec la programmation c ,et je veux bien que tout le monde nous parle du comment il a vaincu la bête noir qui est les pointeurs ,quels question se poser pour savoir où les utiliser ,et quand bien sur,j'aimerais bien maitriser cette partie du C mais à chaque fois les pointeurs je ne sais pas manipuler ,de la meilleur façon ,et merci à vous tous...

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hai,

    C'est bête comme tout :

    - à la déclaration, initialiser à NULL, pour éviter d'utiliser un pointeur vers n'importe quoi.
    - réserver une taille mémoire suffisante pour ce qu'on veut faire
    - utiliser...
    - libérer la mémoire quand on n'en a plus besoin
    - ET remettre le pointeur = NULL

  3. #3
    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 droggo Voir le message
    - à la déclaration, initialiser à NULL, pour éviter d'utiliser un pointeur vers n'importe quoi.
    - réserver une taille mémoire suffisante pour ce qu'on veut faire
    - utiliser...
    - libérer la mémoire quand on n'en a plus besoin
    - ET remettre le pointeur = NULL
    Qui a parlé de mémoire dynamique ?

  4. #4
    Scorpi0
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comment il a vaincu la bête noir qui est les pointeurs
    Utiliser, utiliser, se tromper, core dump, corriger, post sur le forum, prise de tête, réessayer, encore, encore, et au bout d'un moment, ça rentre !

    N'hésites pas à lire beaucoup, mais rien ne vaut la pratique. Tant que tu ne te seras pas tromper sur chacun des aspects des pointeurs toi même, tu n'apprendras pas.

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Les pointeurs n'ont aucune raison d'être une bête noire. Il faut simplement prendre le temps de réfléchir à ce qu'ils sont : ils stockent une adresse, donc comprendre ce qu'est une adresse, comment on peut s'en servir pour accéder à un objet et l'arithmétique particulière aux adresses. Ce ne sont pas des choses compliquées.

    A retenir pour éviter des erreurs :

    - Créer un pointeur ne crée pas l'objet pointé.

    - Un pointeur doit contenir l'adresse d'un objet "vivant", non détruit, ou NULL.
    Lorsque l'objet est détruit, le pointeur devient invalide. Il est prudent de le mettre à ce moment là à NULL, ce qui permet de savoir qu'il ne pointe sur rien.

    - Un pointeur n'est pas un tableau et un tableau n'est pas un pointeur (Si il y a en C une bête noire à montrer du doigt, ce sont plutôt les tableaux). Le lien entre les deux est uniquement l'arithmétique propre aux adresses qui correspond à la sélection des éléments d'un tableau (les éléments d'un tableau ne sont accessibles que par leur adresse, même si la notation [] masque ce fait).

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Sia,
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Qui a parlé de mémoire dynamique ?
    Qui n'en a pas parlé ?

    Telle qu'elle est posée, la question me conduit directement à ça.

  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 droggo Voir le message
    Qui n'en a pas parlé ?
    le P.O.
    Telle qu'elle est posée, la question me conduit directement à ça.
    Tu as l'air d'assimiler l'usage des pointeurs à l'usage de la mémoire dynamique. C'est certes un des usages, mais il y a d'autres, à commencer par le "passage" d'un tableau à une fonction.

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Un pointeur c'est une variable dont la valeur est l'adresse d'un truc. Il n'y a vraiment rien de compliqué ou de mystérieux là dedans.

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gao,
    Citation Envoyé par Emmanuel Delahaye Voir le message
    le P.O.

    Tu as l'air d'assimiler l'usage des pointeurs à l'usage de la mémoire dynamique. C'est certes un des usages, mais il y a d'autres, à commencer par le "passage" d'un tableau à une fonction.
    Non, je n'assimile pas l'un à l'autre, mais mon expérience m'a appris que les problèmes de pointeurs, surtout pour les débutants, sont plus souvent liés à la mémoire dynamique qu'aux autres usages qui sont généralement plus facilement compris ("généralement", pas toujours, hélas).

  10. #10
    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 danielmorgan Voir le message
    Je débute avec la programmation c ,et je veux bien que tout le monde nous parle du comment il a vaincu la bête noir qui est les pointeurs ,quels question se poser pour savoir où les utiliser ,et quand bien sur,j'aimerais bien maitriser cette partie du C mais à chaque fois les pointeurs je ne sais pas manipuler ,de la meilleur façon ,et merci à vous tous...
    http://emmanuel-delahaye.developpez.....htm#pointeurs
    http://emmanuel-delahaye.developpez....util_pointeurs

  11. #11
    Invité de passage
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1
    Par défaut
    Bonjour,
    Tout les débutants du c ont des lacunes sur la notion des pointeurs.
    Mais, d'une façon générale, on peut dire que les pointeurs offrent la possibilité d'accéder aux données dans la mémoire de l'ordinateur.
    De plus les pointeurs ont une grande efficacité dans les programmes géants (l'accés au certaines variables,modification...)
    Donc, le pointeur vise toujours à éviter le gaspillage du mémoire.

  12. #12
    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 hajour Voir le message
    Bonjour,
    Tout les débutants du c ont des lacunes sur la notion des pointeurs.
    C'est peut être parce qu'on leur explique mal...
    Mais, d'une façon générale, on peut dire que les pointeurs offrent la possibilité d'accéder aux données dans la mémoire de l'ordinateur.
    Non. Uniquement aux données du processus courant (ou de la mémoire partagée si ce mécanisme existe.

    Les accès à la"mémoire de l'ordinateur" ne sont pas possible en C standard. Et quand une extension le permet, ils sont sévèrement réglementés par les système modernes avec MMU, même en mode noyau.

    De plus les pointeurs ont une grande efficacité dans les programmes géants (l'accés au certaines variables,modification...)
    Donc, le pointeur vise toujours à éviter le gaspillage du mémoire.
    Les pointeurs sont une facilité, un moyen, pas un but... Il permettent parfois une meilleure gestion de la mémoire en évitant les copies de blocs (seul l'adresse suffit).

Discussions similaires

  1. Votre vote pour les élections présidentielles 2007 ?
    Par hegros dans le forum Politique
    Réponses: 615
    Dernier message: 29/04/2007, 21h24

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