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 :

erreur de pointeur


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 10
    Points
    10
    Par défaut erreur de pointeur
    Bonjour,

    Je ne comprend pas pourquoi les résultat affiché suite à la compilation de ce code ne sont pas les mêmes alors que l'instruction aux=t[0].lien; est bien là

    Pourriez vous m'aider ?
    Merci d'avance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #include<stdio.h>
    #include<stdlib.h>
    #define N 10
     
    typedef struct cellule{
    	int info;
    	struct cellule *lien;
    }cellule;
     
    main()
    {	cellule t[N];
    	cellule *aux;
     
    	t[0].info=1;
    	aux=t[0].lien;
    	aux=malloc(sizeof(cellule));
    	aux->info=3;
    	printf("%d  %d",aux->info,t[0].lien->info);
    	return(0);
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le problème est que aux est une simple copie de t[0].lien, donc lorsque tu effectues l'allocation avec malloc(), seul aux est modifié.
    Comme si tu faisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int a = 1;
    int b = a;
    b = 2;
    tu assignes bien b à a, mais lorsque tu modifies b, a reste le même.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Points : 608
    Points
    608
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	aux=t[0].lien;
    	aux=malloc(sizeof(cellule));
    	aux->info=3;
    	printf("%d  %d",aux->info,t[0].lien->info);
    La première assignation est inutile, elle est même probablement éliminée par le compilateur.
    Je pense que tu voulais peut-être écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	aux=malloc(sizeof(cellule));
    	t[0].lien=aux;
    	aux->info=3;
    	printf("%d  %d",aux->info,t[0].lien->info);
    Tu devrais reprendre les bases de C avant de s'attaquer trop violemment aux pointeurs peut-être.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    merci Winjerome et Joker-eph je comprends l'erreur
    Connaissez vous où pourrais-je trouver de bon exercices sur les pointeurs avec une difficulté croissante ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 33
    Points : 38
    Points
    38
    Par défaut
    Salut

    Si tu veux un bon exercice pour t'entraîner avec les pointeurs, essaye de coder un module sur les liste chaînées ou un tri générique sur les tableaux

    Bonne journée :p

    EDIT
    Ou alors plus facile : l'échange générique de deux variables entre elles.

Discussions similaires

  1. erreurs sur pointeurs ?
    Par darkwall_37 dans le forum Débuter
    Réponses: 14
    Dernier message: 05/11/2009, 21h11
  2. Réponses: 10
    Dernier message: 03/04/2009, 13h09
  3. pb erreur de pointeur aidez moi please
    Par campgourou dans le forum Java ME
    Réponses: 20
    Dernier message: 16/03/2006, 16h36
  4. Réponses: 24
    Dernier message: 23/02/2006, 11h04
  5. erreur C2664 : pointeur sur fonction
    Par hiko-seijuro dans le forum C++
    Réponses: 2
    Dernier message: 26/07/2005, 14h50

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