Mit jelent a inicializálása a tömb egy eleme verem túlcsordulás az orosz
A következő lánc idézetek a C ++ szabvány, amelyek leírják mezőelem inicializálva inicializálása során a tömb típusú
Az első dolog, amit meg kell jegyezni, hogy a tömbök moduláris típusok. Ezért a címet a szakasz, amely leírja az inicializálás aggregált típusok 8.5.1 Adalékanyagok:
7. Ha kevesebb kezdőérték-záradékok a listán, mint ahány tagja az összesített, majd minden egyes tagja külön nem inicializált kell inicializálni annak merevítő-or-equalinitializer, vagy ha nincs zárójel-or-equalinitializer, honnan egy üres inicializáló lista (8.5.4).
Ez a részlet a szabvány azt mondja, hogy ha inicializáló kisebb a tömb elemeinek a tömb elemeit, amelyek nem rendelkeznek a kezdőérték inicializálódnak mintha egy üres zárójelek minden egyes tételt. Ez azt jelenti, leírható az alábbiak szerint:
Most viszont, hogy magyarázatot a szabvány, ami azt jelenti, ha van egy üres zárójelek. Szakaszban №3 szakasz 8.5.4 List-inicializálás, meg van írva
- Egyébként, ha az inicializáló lista nincsenek olyan elemek, a tárgy értéke inicializált
Mi érték inicializálja. Meg van írva a 8.5 szekcióban inicializáló szabvány
8 A értéket-inicializálása egy objektum típusú T jelenti:
- egyébként, az objektum zéró-inicializálva.
Végül, a koncepció a nulla-inicializált eszköz (8,5 inicializáló)
6 nulla-inicializálása egy tárgy vagy referencia típusú T jelenti:
- ha T egy skalár típusú (3.9), az objektum inicializáljuk az értéket megkaphatjuk a egész szám szó 0 (nulla) a T;
Azaz, az összes elemet a tömb, nem kerültek be kifejezetten inicializáló vannak nullára inicializálunk. Így a végén ezt a bejegyzést
egyenértékű a következő bejegyzést:
És végül, azt találjuk, hogy a rekord
Tartsuk szem előtt, hogy a C az utolsó két nyilvántartást nem egyenértékű. A C nyelv bejegyzés
Ez rossz, és a fordító kiad egy hibaüzenetet.