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 :

Accès direct et liste chainée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 5
    Par défaut Accès direct et liste chainée
    Bonjour,

    Je cherche à pointer des éléments, non pas comme une liste chainée pure, mais plutôt à accéder à un élément particulier et suivre un index qui me permet de savoir quel élement prendre "après" au sens de l'exploitation.

    J'ai fait ceci, mais ça ne marche pas, évidemment, mais je ne vois pas comment le rendre réalisable.

    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
    typedef struct _prm {
       const int   x;
       const int   y;
             int   valid;
             int   select;
       const char  title[6];
             char  val[20];
       const char  params[12][20];
           struct  _prm* next;
    } prm;
     
    typedef struct _prms {
       prm prm1;
       prm prm2;
    } prms;
     
    prms test = {.....};
     
    test.prm1.next = *test.prm2;
    1. Je ne vois pas pourquoi ceci n'est pas acceptable.
    Je veux pointer une structure identique à celle définie dans typedef.
    Pourquoi le compilateur refuse-t-il de les voir identiques ?

    2. Question subsidiaire quand ceci sera résolu, peut-on initialiser le chainage à la déclaration (??? j'y crois pas trop, les espaces mémoires étant en cours d'allocation), mes liens n'ayant pas à se modifier durant l'exécution du programme.

    Merci de votre aide.

  2. #2
    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
    1- il faut mettre l'adresse de (opérateur unaire &) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     test.prm1.next = &test.prm2;
    2- non, sauf si l'allocation de la structure dont on veut avoir l'adresse est static :

    Exemple OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    struct s
    {
      int i;
      struct s* next;
    };
    struct s s1 ={0,NULL};
    struct s s2 ={1,&s1};
    int main(void)
    {
      return 0;
    }
    Exemple OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main(void)
    {
      static struct s s1 ={0,NULL};
      struct s s2 ={1,&s1};
      return 0;
    }
    Exemple faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main(void)
    {
      struct s s1 ={0,NULL};
      struct s s2 ={1,&s1}; //ERREUR
      return 0;
    }

Discussions similaires

  1. Liste déroulante accès direct feuille
    Par cyborgus dans le forum Excel
    Réponses: 4
    Dernier message: 16/10/2014, 16h24
  2. Réponses: 5
    Dernier message: 15/03/2008, 21h44
  3. Problème d'acces aux données d'une liste Chainée
    Par Le Payton dans le forum Langage
    Réponses: 4
    Dernier message: 27/08/2007, 11h00
  4. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  5. Accès direct au disque dur
    Par Berdo dans le forum x86 16-bits
    Réponses: 4
    Dernier message: 12/01/2003, 16h21

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