Duplicata possible:
C et C++: initialisation partielle de la structure automatique
En lisant Code Complete , je suis tombé sur un exemple d'initialisation de tableau C++:
float studentGrades[ MAX_STUDENTS ] = { 0.0 };
Je ne savais pas que C++ pouvait initialiser l'ensemble du tableau, donc je l'ai testé:
#include <iostream>
using namespace std;
int main() {
const int MAX_STUDENTS=4;
float studentGrades[ MAX_STUDENTS ] = { 0.0 };
for (int i=0; i<MAX_STUDENTS; i++) {
cout << i << " " << studentGrades[i] << '\n';
}
return 0;
}
Le programme a donné les résultats escomptés:
0 0
1 0
2 0
3 0
Mais changer la valeur d'initialisation de 0.0
dire, 9.9
:
float studentGrades[ MAX_STUDENTS ] = { 9.9 };
A donné le résultat intéressant:
0 9.9
1 0
2 0
3 0
La déclaration d'initialisation définit-elle uniquement le premier élément du tableau?
Si vous utilisez autre chose que des accolades vides, vous initialisez uniquement les N premières positions à cette valeur et toutes les autres sont initialisées à 0. Dans ce cas, N est le nombre d'arguments que vous avez passés à la liste d'initialisation, c'est-à-dire,
float arr1[10] = { }; // all elements are 0
float arr2[10] = { 0 }; // all elements are 0
float arr3[10] = { 1 }; // first element is 1, all others are 0
float arr4[10] = { 1, 2 }; // first element is 1, second is 2, all others are 0
Non, il définit tous les membres/éléments qui n'ont pas été explicitement définis sur leur valeur d'initialisation par défaut, qui est zéro pour les types numériques.