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 :

problème acccès tableau statique dans une structure


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut problème acccès tableau statique dans une structure
    Voici mon code (écouté) :

    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
     
     
    #define TAILLE 5
     
    struct matrice
    {
      int mat[TAILLE][TAILLE];
    };
     
    int main (int argc, char* argv[])
    {
      struct matrice *mat1;
     
      mat1->mat[0][0] = 7;
     
      return 0;
    }
    Ceci segfault sur l'affectation et je ne comprends pas pourquoi.

    Merci de votre aide,

    Olivier

    P.S. : Ma matrice doit rester dans une structure (pour mmapper celle-ci ensuite)

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Pose toi la question de savoir sur quoi pointe mat1.

    Une variable automatique si on ne l'initialise pas sa valeur est : n'importe quoi.

    Donc initialise mat1.

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par hegros
    Pose toi la question de savoir sur quoi pointe mat1.
    Ou lit le sujet deux lignes plus bas : afficher une chaine de caractères
    Le problème est identique

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    merci beaucoup a tous les deux.

    Effectivement la reponse etait assez aisee :

    mat1 = (struct matrice *) malloc(sizeof(struct matrice));


    Olivier

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    Citation Envoyé par Olivier14
    merci beaucoup a tous les deux.

    Effectivement la reponse etait assez aisee :

    mat1 = (struct matrice *) malloc(sizeof(struct matrice));


    Olivier
    Par contre on peut préciser, cela a déja été dis ailleurs, avec un compilateur C le transtypage ( struct matrice*) n'est pas nécessaire.

    voila voilou

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    On m'a appris à coder comme cela.
    Et puis cela permet de toujours savoir de quoi nous parlons (c'est plus lisible non ?)

  7. #7
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    On m'a appris à coder comme cela.
    Et puis cela permet de toujours savoir de quoi nous parlons (c'est plus lisible non ?)
    Y a des journées à thême sur developpez.net, on dirait... Je laisserais la place à Emmanuel (un petit copier-coller rapide fera sans doute l'affaire )

    A quand la journée picon sur developpez (attention à l'abus...)?


  8. #8
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Faudrait surtout une journee "arretons d'allouer de la memoire dynamiquement a tout bout de champ" (bon, c'est pas super vendeur comme titre).
    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    struct matrice mat1;
     
    mat1.mat[0][0] = 7;
    est aussi efficace, non?
    Et si on a vraiment besoin d'un pointeur, un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    struct matrice *p;
    ...
    p = &mat1;
    suffit. Evidemment, si la variable est locale a une fonction, c'est une autre histoire...

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 09/02/2010, 11h42
  2. parcourir un tableau dynamique dans une structure
    Par brunolekid dans le forum C
    Réponses: 4
    Dernier message: 23/10/2009, 15h24
  3. Réponses: 4
    Dernier message: 11/02/2008, 18h03
  4. Problème sur un pointeur dans une structure
    Par steph_1 dans le forum Langage
    Réponses: 5
    Dernier message: 05/09/2007, 18h59
  5. [C# 2.0] Tableau statique dans une méthode
    Par margagn dans le forum Framework .NET
    Réponses: 4
    Dernier message: 21/05/2007, 12h46

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