Accéder à un tableau vide

Fermé
Zarquoi Messages postés 218 Date d'inscription samedi 28 mars 2015 Statut Membre Dernière intervention 13 décembre 2016 - 2 oct. 2015 à 21:38
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 3 oct. 2015 à 00:55
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

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
2 oct. 2015 à 21:46
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
Zarquoi Messages postés 218 Date d'inscription samedi 28 mars 2015 Statut Membre Dernière intervention 13 décembre 2016 48
Modifié par Zarquoi le 2/10/2015 à 21:59
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
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
3 oct. 2015 à 00:55
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