(C++) Miért működik ez a kód?
Figyelt kérdés
char c[10]{'a','s','d'};
cout<<c;
Ez miért működik? Hogy-hogy kiírja az összes elemét mikor csak a tömb nevét adtuk meg de tömb indexet nem?
2015. jan. 2. 16:06
1/4 anonim válasza:
kapcsos zárójelek helyet csak sima zarójelet használj
2/4 anonim válasza:
Úgy, hogy C++-ban a típusdefiníciók kicsit jobban ki vannak találva, mint sima C-ben.
A változód nem "char" vagy "char*" típusú, még csak nem is "char[]" hanem "char[10]".
3/4 anonim válasza:
Kiegészíteném még annyival, hogy a char tömböket a C++ úgynevezett C-stílussú sztringként kezeli, ezért létezik rá a kiíró operátor
4/4 anonim válasza:
A cout << operátora túl van terhelve 'const char *' típusú paraméterre is. A char[] pedig implicit kasztolható const char *-gá. Így a fordító számára érvényes.
Mivel az initializer lsita nem teljes, így a 3. elem után a default zéró '\0' lesz érvényes a többi 7 elemre.
Mivel a const char* C típusú null terminált karaktertömböt tartalmaz, így a kiíratás teljesen legális és helyes.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!