Нуль-терминированная строка

Нуль-терминированная строка

Нуль-терминированная строка или C-строка (от названия языка Си) или ASCIZ-строка (от названия директивы ассемблера .asciz) — способ представления строк в языках программирования, при котором вместо введения специального строкового типа используется массив символов, а концом строки считается первый встретившийся специальный нуль-символ (код ASCII 0x00). Например, в строковом буфере (области памяти, выделенной для хранения строки) размером 11 байт нуль-терминированная строка «СТРОКА» в кодировке Windows-1251 может представляться следующим образом:

С Т Р О К А NULL F % NULL 4
0xD1 0xD2 0xD0 0xCE 0xCA 0xC0 0x00 0x46 0x25 0x00 0x34

Символы после нуль-символа называются мусором — это данные, которые могли остаться в буфере от предыдущих строк или от других использований памяти. Среди них также могут находиться нулевые символы.

При использовании однобайтных кодировок (ASCII) объём памяти, требуемый для представления строки из N символов, равен N + 1 байт. В том случае, когда для кодирования символов применяется Юникод, длина строки зависит от используемого представления Юникода (например, 2N + 2 байта для UCS-2).

Такие строки являются стандартом в Си и некоторых других языках программирования. Поскольку они используются для передачи строковых аргументов в стандартные функции во многих операционных системах, операции для работы с нуль-терминированными строками появились в Паскале и других языках.

Для ссылки на нуль-терминированную строку применяется указатель на первый её символ. Это простой, быстрый и гибкий подход, но чреватый ошибками. Программист постоянно должен следить за своим кодом, а именно:

  • быть уверенным, что не случаются переполнения буфера;
  • если на одну строку есть несколько ссылок, убедиться, что изменение или уничтожение этой строки не приведёт к нарушению работы программы;
  • высвобождать память, занятую строкой, как только она больше не нужна, и наоборот, не высвобождать, если строка ещё требуется.

Кроме того, некоторые операции со строками, например, конкатенация, для нуль-терминированных строк выполняются медленнее, чем для других типов строк.

Альтернативой нуль-терминированным строкам является способ, принятый в Паскале: строка начинается с первого элемента массива, а в нулевом элементе хранится длина строки. В этом случае не требуется специального терминатора для обозначения конца строки. С другой стороны, здесь на длину строки накладывается ограничение, связанное с вместимостью нулевого элемента массива, то есть в случае с однобайтовыми элементами длина строки не может превышать 255 символов. Нуль-терминированные строки такому ограничению не подвержены и теоретически могут хранить строки любой длины.

В языке Си

Для работы с нуль-терминированными строками в языке программирования Си используется ряд функций:

  • strcpy, wcscpy — копирование строк;
  • strlen, wcslen — вычисление длины строки;
  • strchr — поиск символа в строке;
  • strdup — дублирование строк;
  • strstr — поиск подстроки.

См. также


Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Нуль-терминированная строка" в других словарях:

  • Нуль — Нуль: В Викисловаре есть статья «нуль» Нуль, 0 (число)  целое число, разделяющее на числовой прямой положительные и отрицательные числа …   Википедия

  • Пустая строка — (в информатике)  это термин, обозначающий значение строкового типа, не содержащее символов (то есть содержащее 0 символов, нулевой длины). Несмотря на то, что пустая строка не содержит символьных данных, тем не менее ее представление в… …   Википедия

  • Строковый тип — В программировании, строковый тип (англ. string «нить, вереница»)  тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть… …   Википедия

  • ASCII (значения) — ASCII может значить: ASCII  американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов. ASCIIZ (Нуль терминированная строка)  способ представления строк в памяти компьютера, при котором конец… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»