A karakterekből álló tömb az stringnek számít?
Ha van egy tömb, amiben csak karakterek vannak, akkor az string?
És akkor a string az tömbnek számít? Abból a szempontból az, hogy több karakter tárolására képes. De vajon van más különbség is? A változó, és a tömb között helyezkedik el van valahol?
Az a karaktertömb számít stringnek, amiben a karakterek logikailag összefüggenek és egy egészet képeznek abban a környezetben, ahol alkalmazzák, feltéve, ha egyáltalán van string adattipus abban a környezetben.
Ha valaki létre akar hozni egy karakterkészletet, ami mondjuk az angol ABC subsetje, és ezért definiál egy char tömböt, amikben a subset van, akkor az is karakterek tömbje, de mégsem string.
C-ben igen, stringnek számít egy karaktertömb. Meg is figyelheted, hogy C-ben nincs is string kulcsszó, csak char*, tehát char-ra mutató pointer. És ahogy korábban is írták, C-ben a tömb operátor csak szintaktikai segítség, ami valójában pointer aritmetikát és dereferenciát hajt végre, tehát ha pl van egy char* típusú c változód, akkor a c[3] jelentése *(c+3).
DE figyelned kell arra, hogy a C-beli stringet a '\0' karakterrel lezárd. Alapból ezt meg fogja neked csinálni magától, amikor létrehozol egy stringet, de ha teszem azt karakterenként rakosgatod össze, akkor ezt neked kell megcsinálni. Ez egy 0 értékű bájt, ami a string végét jelzi, ha ez nincs meg, addig fog olvasni amíg 0-t nem talál, ezáltal elérhetsz olyan memóriaterületet, amit nem kéne.
A kompatibilitás miatt C++-ban is elérhető ugyanez a fajta "nyers" C string, de ott tipikusan nem ezt használjuk, hanem a std::string típust, ami már egy objektum, nem csak egy sima pointer.
További 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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!