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.

Kapcsolódó cikkek