Csak kiegészítésként:
A tömb azonos méretű és típusú elemekből áll, a memóriában egymás után, folytonosan. Hogy hány elemből áll, az jelölhető pl. az utolsó karakter utáni lezáró karakterrel (pl. C), vagy az elemek számának a tárolásával, leginkább a 0. helyen (pl. "klasszikus" Pascal).
A karaktertömb egy string tárolására alkalmas tömb, elemei azonos méretű, karaktereket leíró értékek.
Kedves Kérdező!
A karaktertömbbel kapcsolatos információk szerencsére elég közel állnak a valósághoz, így azt nem pontosítanám. A string-ekkel kapcsolatban viszont elég informális definíciókat adtak a válaszolók. A legfontosabb az, hogy a string típus. A típushoz tartozik egy reprezentáció, illetve a típuson értelmezett műveletek. Például stringek összefűzhetőek, rész sorozataik választhatók ki stb.
Aki a C nyelvről beszélt, hogy ott karaktertömbbel valósítják meg, nos el kell mondanom, hogy minden értelmes fordító program azzal valósítja meg, nyelvtől és paradigmától (funkcionális/oop) függetlenül. A C-ben is adott a string-en értelmezett műveletek, de mivel a nyelv nem objektum orientált, ezért nem igazán tudja megvalósítani az egységbe zárást. Vagyis a "típus" metódusai globális függvényekként testesülnek meg, pl. strcmp(...)
Előkerült még egy fogalom, amit dinamikus tömbként írt egy lehetséges reprezentációval kapcsolatban az egyik válaszoló. Szakzsargonként valóban így hívjuk, de természetesen ilyen nem létezik, csak dinamikusan, azaz futási időben lefoglalt tömb. A méretük ezeknek sem változtatható meg a későbbiekben! Ezért pl. a C++ a string/vector stb. adatszerkezetek esetében a típus megvalósítás során általában azt a módszert követi, hogy a növekvő memóriaigény esetén az adatszerkezet kapacitását duplázza.
Röviden összegezve, a karaktertömb egy indexelhető, azonos típusú elemeket tároló ADATSZERKEZET, míg a string egy ADATTÍPUS, amely karaktereket tárol és rajta értelmezett műveleteket biztosít azok kényelmes kezeléséhez.
Még egy utolsó dolgot kiemelnék, hogy a karakterkódolás mindkét módszer esetében megválasztható, ha a nyelv biztosít rá lehetőséget, de a string-nél ez sokkal transzparensebb módon lesz kezelhető, míg a karaktertömbök esetén eltérő nevű függvényekkel oldható ez meg, pl. strcmp -> wstrcmp (ANSI helyett UNICODE esetében).
"Röviden összegezve, a karaktertömb egy indexelhető, azonos típusú elemeket tároló ADATSZERKEZET, míg a string egy ADATTÍPUS, "
1. A string is indexelhető. Elvégre véges, egy dimenziós tömb.
2. A karaktertömb is lehet éppen adattípus, csak felhasználó által definiált.
"A string is indexelhető."
Biztos vagy benne, hogy ez az állításod minden programozási nyelvre igaz?
"A karaktertömb egy string tárolására alkalmas tömb"
A karaktertömb az karakterek tárolására alkalmas. Aztán ebből lehet stringet vagy stringeket képezni, az már más kérdés.
"Biztos vagy benne, hogy ez az állításod minden programozási nyelvre igaz?"
Abban nem kell biztosnak lennem.
Elég ha abban biztos vagyok, hogy léteznek nyelvek, amelyekre igaz és az állításod onnantól kezdve hamis.
PeldaString := "TesztString";
PeldaChar := PeldaString[5];
CommentStr := "A peldaString hossza: " + Peldastr[0];
print PeldaChar + " " + CommentStr;
"Elég ha abban biztos vagyok, hogy léteznek nyelvek, amelyekre igaz és az állításod onnantól kezdve hamis. "
Nem állította,hogy a string nem indexelhető semmilyen körülmény mellett, tehát milyen állítása is hamis?
Ez:
"Röviden összegezve, a karaktertömb egy indexelhető, azonos típusú elemeket tároló ADATSZERKEZET, míg a string egy ADATTÍPUS, "
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!