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 :

Arithmétique de pointeurs


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut Arithmétique de pointeurs
    Bonjour à tous, je suis entrain d'approfondir ma connaissances sur les pointeurs et je lisais un tuto sur le site ou je trouve ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t[i][j] = *(p + N*i + j) /* ou encore p[N*i + j] */
    Pour bien comprendre j'ai fais des tests sur feuilles mais je coince, je vous explique

    Avec cette déclaration :
    Cela créer 10 tableaux de 3 int si j'ai bien compris soit 10 lignes 3 colonnes.

    Avec comme dis dans le tuto les équivalences suivantes :
    t <-> p
    t+1 <-> p+3
    ...

    Si je veux accéder à Je me retrouve donc en p+5

    Mais si je fais le calcul avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t[i][j] = *(p + N*i + j)
    Soit *(p+ 10*1+2) je me retrouve avec 12.

    Est-ce normal je devrais pas plutôt retrouver 5 ?

    Peut-être ai-je aussi mal compris quelque chose.

    Merci de votre aide.

  2. #2
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut
    C'est quoi la variable ou constante N dans ton code ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    t[N][M]

    Donc pour moi N correspond à la valeur 10 ?

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Normalement, on ne doit pas multiplier une coordonnée par son propre maximum, donc je suppose que la vraie formule est p[M*i + j].

    PS: Comment initialises-tu p? Avec p=&t[0][0]?
    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.

  5. #5
    Membre actif Avatar de Vespiras
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 168
    Points : 265
    Points
    265
    Par défaut
    ^^

    Essaye comme ca tu verras

    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    t[i][j] = *(p + M*i + j)

    Edit : Arf on m'a devancé de 4 minutes xD

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    J'initialise p comme ceci :

    C'est une erreur que d'écrire ça, du coup ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t[i][j] = *(p + N*i + j)
    Car c'est ce qui est indiqué dans le tuto.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Chaque ligne contient M éléments, il te faut donc ajouter M pour aller à chaque ligne suivante.
    ligne 0 : i = 0 => 0*3 + j =  0+j => { 0,  1,  2}
    ligne 1 : i = 1 => 1*3 + j =  3+j => { 3,  4,  5}
    ligne 2 : i = 2 => 2*3 + j =  6+j => { 6,  7,  8}
    ligne 3 : i = 3 => 3*3 + j =  9+j => { 9, 10, 11}
    ligne 4 : i = 4 => 4*3 + j = 12+j => {12, 13, 14}
    ligne 5 : i = 5 => 5*3 + j = 15+j => {15, 16, 17}
    ligne 6 : i = 6 => 6*3 + j = 18+j => {18, 19, 20}
    ligne 7 : i = 7 => 7*3 + j = 21+j => {21, 22, 23}
    ligne 8 : i = 8 => 8*3 + j = 24+j => {24, 25, 26}
    ligne 9 : i = 9 => 9*3 + j = 27+j => {27, 28, 29}
    Aurais-tu le lien vers le tutoriel ? [EDIT] IV-B-5. Exemple avec un tableau à plusieurs dimensions.
    Il y a effectivement une erreur, cela devrait être M.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2013
    Messages : 40
    Points : 29
    Points
    29
    Par défaut
    Merci de l'explication, je comprends mieux maintenant.

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

Discussions similaires

  1. Exercice tordu sur l'arithmétique des pointeurs
    Par Tamzoro dans le forum Débuter
    Réponses: 5
    Dernier message: 20/04/2015, 16h26
  2. Arithmétique des pointeurs
    Par Tamzoro dans le forum Débuter
    Réponses: 9
    Dernier message: 24/08/2014, 23h48
  3. Réponses: 4
    Dernier message: 23/04/2013, 15h39
  4. POD & arithmétique de pointeur
    Par oodini dans le forum C++
    Réponses: 3
    Dernier message: 17/04/2013, 12h48
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

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