Partage
  • Partager sur Facebook
  • Partager sur Twitter

taille d'un tableau

c++

Sujet résolu
    28 septembre 2008 à 0:01:30

    Salut à la toute la communauté des zèros,
    j'ai à plusieurs reprises lu les lignes suivantes dans des bouts de codes .
    1. int array[] = { 3, 1, 4, 1, 5, 9 };
    2. unsigned int array_size = sizeof(array) / sizeof(array[0]); // ligne incompréhensible
    3. int taille = sizeof(array);  // j'ai ajouté cette ligne au code
    

    Jusqu'à présent, je ne comprends toujours pas ce qui est effectué à ligne 2.
    En d'autres termes, quelle est la difference entre "taille" et "array_size" dans le code si dessus ?

    Je vous remercie pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      28 septembre 2008 à 0:24:40

      L'opérateur sizeof renvoie la taille qu'occupe un 'objet' en mémoire.

      array est de type int et contient 6 éléments. Sa taille totale en mémoire et donc de 6 * sizeof(int), et c'est ce que renvoie sizeof(array) (taille).

      Par contre, sizeof(array[0]) renvoie la taille en mémoire du premier élément du tableau. Or celui est de type int. C'est donc comme si l'on écrivait sizeof(int).

      Au final, on a l'opération suivante :

      unsigned int array_size = (6 * sizeof(int)) / sizeof(int);
      


      Ce qui nous donne 6, c'est à dire le nombre d'éléments du tableau. C'est une très bonne astuce. On peut aussi utiliser une macro du style :

      #define SIZE(a) sizeof (a) / sizeof *(a)
      
      • Partager sur Facebook
      • Partager sur Twitter
        28 septembre 2008 à 0:32:52

        Merci pour ton aide "Octal".
        Je crois que je comprends mieux maintenant de quoi il est question.
        Bonne soirée
        • Partager sur Facebook
        • Partager sur Twitter
          28 septembre 2008 à 1:50:19

          Accessoirement, en C++, on évite cette macro comme la peste car elle ne permet pas de distinguer un tableau d'un pointeur.
          -> http://www.developpez.net/forums/d5693 [...] eau-statique/
          • Partager sur Facebook
          • Partager sur Twitter
          C++: Blog|FAQ C++ dvpz|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS| Bons livres sur le C++| PS: Je ne réponds pas aux questions techniques par MP.

          taille d'un tableau

          × 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