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 :

[Demande d'éclaircissement] Pointeurs et tableaux


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut [Demande d'éclaircissement] Pointeurs et tableaux
    Bonjour à tous,

    Actuellement plongé dans la lecture d'un livre fascinant, j'aimerais pouvoir bénéficier de votre expérience afin de bien comprendre ce que je viens de lire.

    Il s'agit d'un chapitre traitant des pointeurs et faisant le lien avec les tableaux.

    Je lis la phrase suivante :
    "Si l'on est sûr que les éléments en question existent, on peut aussi indexer un tableau à rebours ; p[-1], p[-2], et ainsi de suite sont des expressions syntaxiquement correctes et représentent les éléments qui précèdent immédiatement p[0]. Bien sûr, il est interdit de se référer à des objets qui dépassent les limites d'un tableau"

    Je comprends mal ce concept : comment peut-on indexer un tableau à rebours tout en restant dans les limites d'un tableau?

    En vous remerciant bien fort, bien entendu

  2. #2
    Membre émérite Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Par défaut
    Bonjour,

    Si par exemple tu déclare un tableau tab de 20 entiers, et que tu déclare ensuite un pointeur int* ptab = & tab[10], alors tu sais que ptab[-2] existe.
    Selon moi c'est ce qu'explique la phrase extraite du livre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut
    Citation Envoyé par MythOnirie Voir le message
    Bonjour,
    Si par exemple tu déclare un tableau tab de 20 entiers, et que tu déclare ensuite un pointeur int* ptab = & tab[10], alors tu sais que ptab[-2] existe.
    Selon moi c'est ce qu'explique la phrase extraite du livre.

    Bonjour,

    C'est également ce que j'avais envisagé. Manquant d'expérience avec ces (foutus) pointeurs, j'ai préféré demander l'avis du public

    Un grand merci

  4. #4
    Membre chevronné
    Femme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2009
    Messages : 236
    Par défaut
    p[-1], p[-2], et ainsi de suite sont des expressions syntaxiquement correctes
    Je comprend qu'on l'on peut ainsi aller voir ce qui se trouve dans les "cases" mémoire précédentes, à condition de rester dans le même type. Mais je pense que le mot clé est syntaxiquement: en pratique, je n'en comprend pas bien l'utilité :s

  5. #5
    Membre émérite Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Par défaut
    Citation Envoyé par Malinaka Voir le message
    Je comprend qu'on l'on peut ainsi aller voir ce qui se trouve dans les "cases" mémoire précédentes, à condition de rester dans le même type. Mais je pense que le mot clé est syntaxiquement: en pratique, je n'en comprend pas bien l'utilité :s
    L'utilité est peut être présente pour un tableau avec pointeur de début et de fin, afin d'arriver par exemple à l'avant dernier élément sans avoir à recalculer la taille du tableau.

  6. #6
    Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2012
    Messages : 3
    Par défaut
    Citation Envoyé par Malinaka Voir le message
    Je comprend qu'on l'on peut ainsi aller voir ce qui se trouve dans les "cases" mémoire précédentes, à condition de rester dans le même type. Mais je pense que le mot clé est syntaxiquement: en pratique, je n'en comprend pas bien l'utilité :s

    Justement, tu trouveras toujours des éléments du même type, quelque soit l'endroit de la mémoire.

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 179
    Par défaut
    Citation Envoyé par VieuxSalopard Voir le message
    Justement, tu trouveras toujours des éléments du même type, quelque soit l'endroit de la mémoire.
    Je vois pas trop pourquoi tu dis ça...

    Sinon l'opérateur [] n'est pas à proprement parler un opérateur "d'indiçage", en fait il additionne des pointeurs (le nom du tableau désignant un pointeur vers l'adresse de son élément 0), du coup il va interpréter p[-1] comme "va à l'adresse de l'élément 0 de p et recule d'un cran (la taille du cran étant celle, en octet, d'un élément du tableau)"

    l'autre exemple rigolo de bizarrerie que permet [], c'est l'inversion de l'indice et du nom de tableau : p[-1] et (-1)[p] reviennent au même

  8. #8
    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
    Pour compléter la remarque de pythéas, l'opérateur [] est défini par : L'expression A [B] est équivalente à *(A+B)
    (ce qui explique qu'on puisse écrire aussi bien A[B] que B[A]).
    C'est simplement un raccourci syntaxique très commode.

    Un autre exemple du même genre , l'opérateur -> est defini par : A->B est équivalent à (*A).B

Discussions similaires

  1. Pointeurs et tableaux
    Par sebdu94 dans le forum C
    Réponses: 4
    Dernier message: 22/03/2007, 16h27
  2. pointeurs et tableaux
    Par gauguin dans le forum C
    Réponses: 8
    Dernier message: 07/02/2007, 23h25
  3. Réponses: 4
    Dernier message: 31/08/2006, 16h31
  4. Réponses: 12
    Dernier message: 03/01/2006, 17h23

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