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 :

manipulation de tableau


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut manipulation de tableau
    Bonjour,
    d'après moi, les lignes suivantes sont équivalentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a = *(b+(i*sizeof (double)));
    a = b[i];
    Pourtant, elle ne le sont pas car quand je compile le programme avec la première ligne, le programme plante.

    Inutile de dire que b est un tableau de double.

    Comment faire pour désigner le ième élement d'un tableau de double, sans utiliser les crochets ?

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    tout simplement.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 836
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par _Michel Voir le message
    Bonjour,
    d'après moi, les lignes suivantes sont équivalentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    a = *(b+(i*sizeof (double)));
    a = b[i];
    Pourtant, elle ne le sont pas car quand je compile le programme avec la première ligne, le programme plante.

    Inutile de dire que b est un tableau de double.

    Comment faire pour désigner le ième élement d'un tableau de double, sans utiliser les crochets ?
    T'as presque bon... sauf que dans l'arithmétique des pointeurs t'as pas besoin de te préoccuper de la taille de l'élément pointé => c'est implicite

    Ex:
    double var;
    double *pt=&var
    Imaginons que "pt" contienne "0x1000" (adresse de "var", alors "pt + 1" vaudra non pas 0x1001 mais 0x1008 => le "1" sera implicitement vu comme "1 * sizeof(double)"

    Ainsi tab[i] <=> *(tab + i) <=> *(i = tab) <=> i[tab]

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    double tab[]={3.1415, 2.718, 3.123, 4.567, 0.0};
     
    printf("%f\n", tab[2]);
    printf("%f\n", *(tab + 2));
    printf("%f\n", 2[tab]);
    Ce mécanisme permet un balayage simple d'un tableau quel qu'il soit en utilisant "++"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    double *pt
    for (pt=tab; *pt > 0.0; pt++)
         printf("%f\n", *pt);
    Même pour les tableaux complexes

    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
    struct s_ville {
         char *ville;
         int dep;
    };
     
    struct s_ville tabVille[]={
        {"Marseille", 13},
        {"Paris", 75},
        {"Lyon", 69},
        {"Rennes", 35},
        {NULL, 0}
    };
    struct s_ville *pt;
     
    for (pt=tabVille; pt->ville != NULL; pt++)
         printf("Ville:%s - dep: %s\n", pt->ville, pt->dep);
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut
    Waaaa, c'est génial...
    Ben merci.

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

Discussions similaires

  1. Manipulation de tableau
    Par fifi87 dans le forum Assembleur
    Réponses: 1
    Dernier message: 13/12/2006, 17h17
  2. [Tableaux] Manipulation de tableau
    Par Diss dans le forum Langage
    Réponses: 5
    Dernier message: 29/08/2006, 18h08
  3. manipuler un tableau <table> </table>
    Par faico dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/08/2006, 09h51
  4. [Tableaux] Manipulation de tableau
    Par BenoitDenis dans le forum Langage
    Réponses: 3
    Dernier message: 04/04/2006, 09h49
  5. Manipulation de tableau
    Par BoBy9 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 22/01/2006, 10h34

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