У програмуванні нуль-термінований рядок — це рядок символів, що зберігаються у символьному масиві та завершуються нуль-символом[en] ('\0'
у ASCII позначається як NUL). Альтернативна назва — Cі-рядок, якщо це стосується мови програмування Cі та ASCIIZ (варто зауважити, що Cі-рядок не має на увазі використання ASCII). Нуль-термінальні рядки широко використовуються при зверненнях до API-функцій Windows.[1].
Приклад 10-байтного нуль-термінованого рядка у кодуванні Windows-1251:
Р | Я | Д | О | К | NULL | F | % | NULL | 4 |
0xD0 | 0xDF | 0xC4 | 0xCE | 0xCA | 0x00 | 0x46 | 0x25 | 0x00 | 0x34 |
Нуль-термінований рядок був створений за допомогою .ASCIZ
директиви PDP-11 мовою асемблера та директиви ASCIZ
з використанням мови асемблера MACRO-10 для PDP-10.
Вони передують розповсюдженню мови C, але й інші форми рядків часто використовуються.
В той час, коли C (та мови, які від нього походять) розвивалися, пам'ять була вкрай обмежена, тому використання всього одного зайвого рядка для збереження довжини рядка було привабливою ідеєю. Єдина, популярна на той момент, альтернатива називалася «Рядок Pascal» (хоча використовувалась вона і у ранніх версіях BASIC). Вона використовувала перший байт, щоб зберігати довжину рядка. Такий спосіб дозволяє записати значення NUL (довжини рядка) надсилаючи лише один сигнал до пам'яті. В цьому випадку не потрібно спеціального термінатора для позначення кінця рядка. З іншого боку, тут на довжину рядка накладається обмеження, пов'язане з місткістю нульового елемента масиву, тобто у випадку з однобайтовими елементами довжина рядка не може перевищувати 255 символів. Нуль-терміновані рядки до такого обмеження не схильні і теоретично можуть зберігати рядки будь-якої довжини.
Нуль-термінований однобайтовий рядок (null-terminated byte string, NTBS) — послідовність ненульових байтів з наступним байтом з нульовим значенням (термінальний нульовий символ). Кожен байт в однобайтовому рядку кодує один символ деякого набору символів. Наприклад, символьний масив {'\ x63', '\ x61', '\ x74', '\ 0'} — NTBS, що зберігає рядок «cat» в кодуванні ASCII. В таблиці наведено символи, їх класифікацію та функції, що вони виконують[2].
Крім того, деякі операції з рядками, наприклад, конкатенація, для нуль-термінованих рядків виконуються повільніше, ніж для інших типів рядків.
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |