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 :

Incrémentation de pointeur sur tableau


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 118
    Points : 419
    Points
    419
    Par défaut Incrémentation de pointeur sur tableau
    Bonjour à tous !

    Mon problème est le suivant: ayant besoin de coder une application assez critique je dois incrémenter un pointeur sur tableau pour passer à l'élément suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char** ptrTableau;
    ptrTableau+=sizeof(char*);
    Ce qui ce passe après vérification c'est qu'au lieu d'être incrémenté de 4 (je suis sous 32bits) l'adresse est incrémentée de 16 et personne n'aime l'adressage aléatoire...

    Merci d'avance
    <noscript>
    <script type="text/javascript">alert("Votre navigateur ne supporte pas JavaScript");</script>
    </noscript>

    [Batch] [Dos9]

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Bonjour,

    Voir « arithmétique des pointeurs en C ».

    Le « pas » utilisé lors de telles opérations n'est pas l'octet mais la taille de l'élément pointé, entre autres pour pouvoir faire « p++ » lors de traitements en boucle.

    Donc « sizeof (char *) » te renvoie 4 car c'est la taille en octets d'un pointeur sur un caractère (ou sur n'importe quoi d'autre, mais ce n'est pas ce qui nous intéresse ici) et, passé à ton addition, celle-ci fait donc avancer le pointeur de quatre éléments, mesurant chacun quatre octets puisqu'il s'agit là aussi de pointeurs. Soit 16 octets en tout.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2010
    Messages : 118
    Points : 419
    Points
    419
    Par défaut
    bonjour!

    ah bon ... je savais pas qu'il y avait une arithmétique particulière pour les pointeurs en c...

    je vais lire ça alors.
    En tout cas merci

    @+
    <noscript>
    <script type="text/javascript">alert("Votre navigateur ne supporte pas JavaScript");</script>
    </noscript>

    [Batch] [Dos9]

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

Discussions similaires

  1. Pointeur sur tableau de structure
    Par Mercenary Developer dans le forum Débuter
    Réponses: 3
    Dernier message: 22/09/2008, 09h35
  2. [x86_64] Passer un pointeur sur tableau défini dans .data
    Par khazna dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 24/04/2008, 20h49
  3. [Debutant] Pointeur sur tableau
    Par Pahcixam dans le forum Débuter
    Réponses: 7
    Dernier message: 25/05/2007, 22h19
  4. Réponses: 11
    Dernier message: 20/10/2006, 14h19
  5. Incrémenter un pointeur sur un buffer de uchar
    Par Flo. dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 12/12/2005, 09h38

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