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).
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.
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] .
A null-végződésű karakterláncok kezeléséhez a C programozási nyelv számos függvényt használ :
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] .
C programozási nyelv | |
---|---|
Fordítók |
|
Könyvtárak | |
Sajátosságok | |
Néhány leszármazott | |
C és más nyelvek |
|
Kategória:C programozási nyelv |