Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Nouveau Membre du Club
    Homme Profil pro Pierre Dufourcq
    Inscrit en
    avril 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre Dufourcq
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : avril 2011
    Messages : 73
    Points : 39
    Points
    39

    Par défaut Matrice de pointeur à initialiser..

    Bonjour,
    Je reviens aux bases car je m'aperçois qu'il y a quelques notions qui me font défaut. Voilà pour simplifier j'ai une structure avec un tableau dedans que je vais allouer dynamiquement. Mon pb n'est pas dans l'allocation mais dans l'initialisation --' :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    struct s_test{
    char *tab[DIM1][DIM2];
    };
     
    extern struct s_test test; //avec la déclaration dans le .c (au niveau de la structure pas de pb)
     
    //Puis plus loin, au début du main, je veux l'initailiser, alors je fais d'une certaine façon mais j'ai bien peur que ca ne soit pas très juste.Ca compile hein mais bon je trouve qu'il y a bcp de boucle pour une initialisation...
     
    int k, l;
     
    for(k=0;k<DIM1;k++){
         for(l=0;l<DIM2;l++){
              test.tab[k][l] = NULL;
         }
    }
     
    // J'arrive pas à me satisfaire de ça, où est le pb? Et comment je dois faire pour vmt tout mettre à NULL?
     
    //Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    avril 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : avril 2009
    Messages : 120
    Points : 607
    Points
    607

    Par défaut OK

    Tel que je lis ton code, je ne vois pas de faute a priori : tu es bien obligé de faire deux boucles imbriquées si tu veux initialiser un par un les pointeurs de ton tableau à deux dimensions.

    Maintenant, si cette initialisation se fait avec le pointeur NULL systématique, cela revient à remplir ton tableau de DIM1 * DIM2 pointeurs avec des zéros, ce qui peut se faire plus rapidement par un memset(test.tab,0,DIM1*DIM2*sizeof(char *)), à mon avis ...

  3. #3
    Nouveau Membre du Club
    Homme Profil pro Pierre Dufourcq
    Inscrit en
    avril 2011
    Messages
    73
    Détails du profil
    Informations personnelles :
    Nom : Homme Pierre Dufourcq
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : avril 2011
    Messages : 73
    Points : 39
    Points
    39

    Par défaut

    Nickel, c'est ce genre de fonction que je cherchais! Merci beaucoup!

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    juin 2009
    Messages
    1 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2009
    Messages : 1 131
    Points : 1 485
    Points
    1 485

    Par défaut

    Citation Envoyé par Ngork Voir le message
    ce qui peut se faire plus rapidement par un memset(test.tab,0,DIM1*DIM2*sizeof(char *))
    Ceci doit fonctionner aussi et est plus lisible:
    Code :
    memset(test.tab,0, sizeof(test.tab))
    En revanche cela ne fonctionnera que si test.tab est un tableau statique et pas un tableau dynamique...

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •