Accéder à un tableau vide

Zarquoi Messages postés 246 Statut Membre -  
NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je débute en C++.
Je me pose une question : Quand j'affiche un tableau qui possède des cases vides, j'obtiens un résultat étonnant. Pourquoi ?

#include <iostream>

using namespace std;

int main()
{
    int const tT1(5);
    double t1[tT1];

    t1[0] = 4.1;
    t1[1] = 3.4;

    for(int i(0); i<tT1; ++i)
        {
            cout << t1[i] << endl;
        }


    return 0;
}


J'obtiens ceci :


Les 2 premiers nombres affichés sont normaux :D
Mais pourquoi il n'y a pas 0 ou "undefined" pour les suivants ?
Ça correspond à quoi ces nombres ??
Il ne sont pas censés exister !

Merci :)

1 réponse

  1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Pas défaut, C/C++ ne définit pas la valeur des cases mémoire, l'allocation est faite, mais le remplissage n'est pas fait par le code sous-jacent.
    0
    1. Zarquoi Messages postés 246 Statut Membre 48
       
      D'accord ;)

      Mais c'est quoi ces nombres ?
      Ils sortent d'où ?
      Pourquoi ai-je le "2.07339e-317" et pas un autre ?

      J'ai créé une fonction, et j'ai un résultat différent !

      #include <iostream>
      
      using namespace std;
      
      void t1()
          {
              int const tT1(5);
              double t1[tT1];
      
              t1[0] = 4.1;
              t1[1] = 3.4;
      
              for(int i(0); i<tT1; ++i)
                  {
                      cout << t1[i] << endl;
                  }
          }
      
      int main()
      {
          t1();
      
          return 0;
      }


      J'obtiens :


      Pourquoi je n'ai pas les mêmes nombres que le même code sans la fonction ?
      0
    2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      Car tu récupères les valeurs qui ont précédemment assignées avant à ces adresses.
      Après que ça reste fixe, c'est peut être logique en fonction du code qui est passé avant.
      0