Accéder à un tableau vide

Zarquoi Messages postés 217 Date d'inscription   Statut Membre Dernière intervention   -  
NHenry Messages postés 15220 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 :)
A voir également:
  • E fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ?
  • Tableau word - Guide
  • Tableau ascii - Guide
  • Trier un tableau excel - Guide
  • Tableau croisé dynamique - Guide
  • Imprimer un tableau excel - Guide

1 réponse

NHenry Messages postés 15220 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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 217 Date d'inscription   Statut Membre Dernière intervention   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
NHenry Messages postés 15220 Date d'inscription   Statut Modérateur Dernière intervention   365
 
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