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 :

familiarisez-vous avec les pointeurs !


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de Snack3r
    Homme Profil pro
    Doctorant à l'Université Cheikh Anta Diop de Dakar
    Inscrit en
    Octobre 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Doctorant à l'Université Cheikh Anta Diop de Dakar
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 118
    Par défaut familiarisez-vous avec les pointeurs !
    Bonsoir

    Pour ceux qui veulent s’exercer aux pointeurs en C afin de les bien comprendre, voici un petit exercice intéressant qui contient presque toutes les notions fondamentales des pointeurs.
    Je vous joins l'exercice sous format word pour que vous puissiez y répondre et le rejoindre de nouveau.

    On discutera de toutes les réponses fournies.

    -- Édit
    Pour qu'on puisse trouver les mêmes résultats il faut qu'on prenne les mêmes adresses, pour cela on suppose que l'adresse de a est 0022FF09, b : 0022FF52 et c : 0022FF17.


    Merci d'avance pour vos participations.
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Bonjour à vous,

    Je me permets de faire quelques remarques.

    Sur la premier ligne, il y a des comportements indéfinis, que faut-il réponde?

    Sur certaines autres lignes, comme p1=&a, on ne peut pas donner la valeur de p1 étant donné qu'on ne connait pas l'adresse de a.
    Peut-être ai-je mal compris l'énoncé, ou peut-être que dans ce cas là, il ne faut donner uniquement *p1 ?

    Je ne donne pas mes réponses pour ne pas "spoiler" ceux qui voudrait répondre.
    Corrigez moi si besoins,

    merci

  3. #3
    Membre très actif
    Avatar de Snack3r
    Homme Profil pro
    Doctorant à l'Université Cheikh Anta Diop de Dakar
    Inscrit en
    Octobre 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Doctorant à l'Université Cheikh Anta Diop de Dakar
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 118
    Par défaut
    Bienvenu Sidouillet

    Sur la premier ligne, il y a des comportements indéfinis, que faut-il réponde?
    C'est pour cela que j'ai ajouté des petites croix pour dire qu'il ne faut pas modifier cette ligne car les variables ne sont pas encore initialisées.

    Sur certaines autres lignes, comme p1=&a, on ne peut pas donner la valeur de p1 étant donné qu'on ne connait pas l'adresse de a.
    Vous avez raison, j'ai ajouté une petite remarque concernant ce point là.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Ces adresses ne sont pas très "maniables". Il serait plus simple d'y mettre "&a" à chaque fois. Mais bon...
    (aussi, pour le dernier, il m'a fallu vérifier que ce n'était pas indéfini).
    Fichiers attachés Fichiers attachés
    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.

  5. #5
    Membre très actif
    Avatar de Snack3r
    Homme Profil pro
    Doctorant à l'Université Cheikh Anta Diop de Dakar
    Inscrit en
    Octobre 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Mauritanie

    Informations professionnelles :
    Activité : Doctorant à l'Université Cheikh Anta Diop de Dakar
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2013
    Messages : 118
    Par défaut
    @Médinoc
    Votre solution est tout à fait correcte.

    Pour ceux qui veulent plus de détails :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 2 : a=1, b=2 ,c=3 ;
    les variables a,b et c contient successivement les valeurs : 1, 2 et 3 et les pointeurs p1 et p2 ne contiennent pas encore des adresses valides.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 3 : p1=&a, p2=&c ;
    les valeurs de a, b et c restent inchangées et p1 pointe sur a, p2 sur c.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 4 : *p1 = (*p2)++ ;
    cette écriture est équivalente à :
    1. *p1 = *p2 ;
    2. *p2 = *p2 + 1 ;

    donc la valeur de a sera 3 et la valeur de c va être incrémentée de 1 donc elle vaut 4.
    p1 et p2 pointent sur c, c'est à dire qu'il ont la même adresse 0022FF17 dans laquelle la valeur 4 est enregistrée. (p1 ,n'a plus une relation avec la variable a).
    p2 pointe maintenant sur c au lieu de b donc *p2 = b et p2 = 0022FF52.
    cette ligne est équivalente à : *p1 = *p1 - *p2.
    cette ligne est équivalente à : *p2 = *p2 + 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 9 : *p1*=*p2 ;//*p1 = (*p1) * (*p2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 10 : a=++*p2**p1 ;//a  = ( (*p2 = *p2 +1) * (*p1) ) ;
    p1 repointe sur la variable a.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne 12 : *p2=*p1/=*p 2 ;// *p2 = ( *p1 = *p1 / *p2 );
    Enfin on obtient :
    Images attachées Images attachées  

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    La grille en image est pas mal, mais sa ligne d'en-tête est bizarre: Ce ne sont pas p1 et p2 qui devraient y être en couleur, mais a (bleu), b (rose) et c (orange).
    (juste pour les en-têtes, hein. Le reste est OK)
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. souci avec les pointeurs
    Par arlette dans le forum C++
    Réponses: 2
    Dernier message: 15/04/2006, 23h33
  2. une erreur avec les pointeur..
    Par lecyberax dans le forum C
    Réponses: 12
    Dernier message: 15/04/2006, 12h04
  3. Comment fait ça avec les pointeurs, la fonction et les struc
    Par mahdianis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 24/02/2006, 18h01
  4. [LG]Tri alphabetique avec les pointeurs
    Par zbooon dans le forum Langage
    Réponses: 4
    Dernier message: 06/03/2005, 17h04
  5. [TTreeView] Problème avec les pointeurs d'objet
    Par BlackWood dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/07/2004, 14h31

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