Files
symbl-data/loc/ru/symbols-desc/0000.axyml
2016-03-10 18:26:45 +03:00

38 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Во многих языках программирования нулевой символ используется для обозначения окончания строки.
Это так называемые "Си-строки" (название происходит от языка Си, где используются такие строки).
Другие названия: null-терминированная строка или ASCIZ-строка.
При таком подходе, код работающий со строкой изначально не знает её длины и обрабатывает символы последовательно, пока не встретит нулевой.
[[[code:c
/* Вывод строки */
i = 0; // начать с начала строки
while (s[i] != 0) { // работать, пока текущий символ не \0
echo s[i]; // вывести очередной символ
i++; // перейти к следующему
}
]]]
Из минусов такого подхода:
[*] Заранее неизвестна длина строки
[*] Строка не может содержать непосредственно символ \0
[*] Если забыть поставить в конце \0 или случайно удалить его, код пойдёт работать дальше с непредвиденными последствиями.
В случае использования многобайтовых кодировок фиксированной ширины, нулевой символ также должен занимать положенное количество байт.
Например, в UCS-2: два нулевых байта.
Альтернативный подход при организации строк - хранить длину строки в отдельной переменной.
При выводе Unicode-строки нулевой символ не имеет никакого представления и никого влияния на поток вывода.
Некоторые программы и устройства могут отображать его в виде пробела, но это не совсем корректно.
Однако, полное игнорирование данного символа иногда может приводить к неприятным последствиями.
Например, некоторые старые браузеры расценивали строку типа [code <\0script>] как [code <script>], что позволяло злоумышленникам внедрять XSS на чужие сайты (авторы которых при обработке данных не предусмотрели такой нюанс).
Для вставки данного символа во многих языках программирования имеется escape-последовательность [code \0].
Это один из восьми управляющих символов, чьё наличие требует стандарт POSIX.