Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les adresses des variables

Tableaux...

    14 mai 2006 à 21:43:59

    Bonjour,

    En lisant le cours sur les tableaux, j'apprend que:
    "Les tableaux sont une suite de variables de même type, situées dans un espace contigu en mémoire"
    comme ceci:
    Image utilisateur
    et que lorsqu'on souhaite accéder à la valeur d'une case (exemple la deuxième), on peut utiliser tableau[1] ou *(tableau+1). Ca correspond ici à accéder à l'adresse 1602.

    Mais voilà qu'aujourd'hui je lis le cours sur l'allocation dynamique et que j'apprend qu'une variable comme celle utilisée dans le tableau de l'exemple précédent prend plusieurs cases:
    Image utilisateur
    Imaginons que ce schéma ci dessus soit un tableau, tout comme dans le schéma d'avant.
    Lorsque je demande la valeur *(tableau+1), je devrais alors avoir la valeur de la case 1602 qui est toujours la première valeur du tableau.
    Or, le cours sur les tableaux et la réalité (j'ai essayé) montrent l'inverse...
    C'est comme si tableau+1 c'est à dire 1600+1 = 1602 était égal à 1604.

    je sais pas si j'ai réussi à expliquer ce que je ne comprenais pas, mais il y a quelque chose qui m'échappe...
    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2006 à 22:02:33

      salut

      non non *(tableau+1) marchera dans tout les cas :)

      Je sais que ce n'est pas simple à comprendre au début, mais tu sais qu'un pointeur est "typé" (ça veut dire que cc'est un pointeur de int, ou de char, ou d'autre chose).

      Ainsi si tableau est un tableau de int genre
      int tableau[6]
      Et bien (*tableau+1) fera avancé le pointeur de sizeof(int), et non de 1 :).

      Si tu voulais vraiment passé de l'adresse 1600 à 1602 (par exemple), il faudrait incrementer le pointeur "à la main":
      tableau += 2;

      J'espère que c'est plus clair maintenant :)
      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2006 à 22:28:23

        Merci, je comprend effectivement mieux maintenant :)
        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2006 à 22:35:59

          tant mieux :)
          ces saloperies d'adresses faut les capter au début sinon ça va te bloquer :)
          • Partager sur Facebook
          • Partager sur Twitter

          Les adresses des variables

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown