Nulla végű karakterlánc

A null-végződésű karakterlánc vagy C-string ( a C nyelv nevéből ) vagy az ASCIIZ-karakterlánc a karakterláncok olyan ábrázolási módja programozási nyelvekben, amelyekben karaktertömböt használnak egy speciális karakterlánctípus bevezetése helyett, és a első speciális nullkarakter (NUL ASCII , 0 értékkel).

Leírás

Például egy 11 bájt méretű karakterlánc-pufferben (karakterlánc tárolására lefoglalt memóriaterület) a Windows-1251 kódolású "STRING" null-végződésű karakterlánc a következőképpen ábrázolható:

TÓL TŐL T R O Nak nek DE NUL F % NUL négy
0xD1 0xD2 0xD0 0xCE 0xCA 0xC0 0x00 0x46 0x25 0x00 0x34

Ebben a példában egy 11 bájtos memóriaterületet ábrázolunk, bár a valóságban a sor csak 7-et foglal el. A null karakter utáni karaktereket (8-11 bájt) szemétnek nevezzük – ezek az adatok a pufferben maradhattak. az előző sorokból vagy a memória egyéb felhasználásaiból. Tartalmazhatnak null karaktereket is.

Egybájtos kódolások ( ASCII ) használatakor az N karakterből álló karakterlánc megjelenítéséhez szükséges memória mennyisége N + 1 bájt. Ha Unicode -ot használnak a karakterek kódolására , a karakterlánc hossza a használt Unicode-ábrázolástól függ (például 2N + 2 bájt UCS-2 esetén ).

Az ilyen karakterláncok szabványosak a C -ben és néhány más programozási nyelvben. Mivel számos operációs rendszerben karakterlánc-argumentumot adnak át szabványos függvényeknek, a Pascalban és más nyelveken is megjelentek a null-végződésű karakterláncok kezelésére szolgáló műveletek .

A null-végződésű karakterláncra való hivatkozáshoz az első karakterre mutató mutatót használunk. Ez egy egyszerű, gyors és rugalmas megközelítés, de hibás [1] [2] . A programozónak folyamatosan figyelnie kell a kódját, nevezetesen:

Ezenkívül egyes karakterlánc-műveletek, például az összefűzés lassabbak null-végződésű karakterláncok esetén, mint más karakterlánc-típusok esetében.

Összehasonlítás alternatívákkal

A null-végződésű karakterláncok alternatívája a Pascal és a modern OOP nyelvekben elfogadott módszerek. Pascalban a karakterlánc a tömb első eleménél kezdődik, és a karakterlánc hosszát a null elem tárolja. Ebben az esetben nincs szükség speciális lezárásra a sor végének jelölésére. Másrészt itt a karakterlánc hosszát a tömb nulla elemének kapacitása korlátozza, vagyis egybájtos elemek esetén a karakterlánc hossza nem haladhatja meg a 255 karaktert. A nulla végű karakterláncokra ez a korlátozás nem vonatkozik, és elméletileg bármilyen hosszúságú karakterláncot tárolhatnak. Az objektumorientált nyelvek egy karakterlánc hosszúságú rekordot és egy karaktertömbre mutató hivatkozást (vagy mutatót) tárolnak. Ezek a módszerek nem szenvednek a null-végződésű karakterláncok hátrányától: torzítás és speciális kódolás nélkül képesek null karaktereket tárolni.

Számos interfész használ dupla nulla végű karakterláncokat, amelyek lezáró jele két egymást követő null-terminátor [3] .

C nyelven

A null-végződésű karakterláncok kezeléséhez a C programozási nyelv számos függvényt használ :

Assembly nyelven

Az assembly nyelvek bizonyos változatai egy speciális direktívát használnak a NUL végű karakterláncok meghatározására. Tehát a GNU Assemblerben van erre egy direktíva .asciz[4] [5] .

Lásd még

Jegyzetek

  1. Joel a szoftverről - Vissza az alapokhoz (a hivatkozás nem érhető el) . Letöltve: 2016. szeptember 17. Az eredetiből archiválva : 2016. szeptember 25.. 
  2. A legdrágább egybájtos hiba – ACM-sor . Letöltve: 2016. szeptember 17. Az eredetiből archiválva : 2016. szeptember 19.
  3. Mi a formátuma egy dupla nulla végű karakterláncnak, amelyben nincsenek karakterláncok? Archiválva : 2019. február 13., a Wayback Machine / MSDN, 2009
  4. A GNU assembler használata mint.: Assembly direktívák . Letöltve: 2016. szeptember 17. Az eredetiből archiválva : 2016. szeptember 17..
  5. Archivált másolat . Letöltve: 2016. szeptember 17. Az eredetiből archiválva : 2016. szeptember 17..

Irodalom

Linkek