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 :

Pointeur vers tableaux


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Pointeur vers tableaux
    Bonjour,

    Je comprends pas trop les syntax:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int (*p1)[5];    // Qu'est ce que ça veut dire?
    int (*p2)[3][5];
     
    p1 = new int[2][5];
    p2 = new int[10][3][5];
    Quelqu'un pourait m'expliquer?
    Merci beaucoup.

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    déclare p1 comme un pointeur sur un tableau de 5 int
    déclare p2 comme un pointeur sur un tableau à deux dimensions de 3*5 int (soit l'espace mémoire pour 15 int)

    Les parenthèses autour de *p1 et *p2 sont nécessaires pour créer des pointeurs de tableaux d'int plutôt que des tableaux de pointeurs d'int.

    alloue 2 tableaux de 5 int consécutif mémoire (soit 10 int) et place le pointeur dans p1. On pourra donc accéder de p1[0][0] jusqu'à p1[1][4]. On créé donc dynamiquement un tableau à 2 dimensions à partir d'une définition statique (à la compilation) d'un tableau à 1 dimension
    alloue 10 tableaux de 3 tableaux de 5 int consécutif en mémoire, soit 150 int. On pourra donc accéder de p2[0][0][0] jusqu'à p2[9][2][4]. On créé donc dynamiquement un tableau à 3 dimensions à partir d'une définition statique (à la compilation) d'un tableau à 2 dimensions.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    int (*p1)[5], ça correspondrait à un pointeur du genre int[5] * p1.
    Mais comme la seconde forme ne compile pas, c'est la première qui marche...

    Si tu veux, tu peux t'amuser avec les typedefs:
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    typedef int cinqInt_t[5];
    typedef cinqInt_t quinzeInt_t[3];
    cinqInt_t * p1 = NULL;
    quinzeInt_t * p2 = NULL;
    int (*q1)[5];
    int (*q2)[3][5];
    q1 = p1;
    q2 = p2;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    int (*p1)[5], ça correspondrait à un pointeur du genre int[5] * p1.
    Mais comme la seconde forme ne compile pas, c'est la première qui marche...
    Oui, ce sera beaucoup plus clair avec le syntax int[5] * p1.

    Merci pour vos réponses!

Discussions similaires

  1. Tableaux de pointeurs vers des objets
    Par Pinou421 dans le forum Débuter
    Réponses: 3
    Dernier message: 16/07/2013, 12h59
  2. Réponses: 11
    Dernier message: 17/05/2010, 10h40
  3. Utilité d'un pointeur vers une fonction ?
    Par Nasky dans le forum C
    Réponses: 10
    Dernier message: 20/03/2010, 19h54
  4. Pointeur vers fonction
    Par flopaname dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2005, 15h46
  5. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43

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