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

В программировании на С нуль имеет много значений, и важно понимать различные применения нуля.

Нулевой символ имеет нулевое значение ASCII и обычно представляется программами как макроопределе­ние NULL, определенное в файле STDIO.H и других заголовочных файлах. NULL может иметь тип int или long в зависимости от модели памяти.

Строка с завершающим нулем представляет собой массив с нулевым символом после последнего значащего символа в строке. Все строки должны иметь одну дополнительную позицию для завершающего нулевого символа.

Нулевая строка — это строка, которая начинается с нулевого символа. Длина нулевой строки равна нулю, но ее размер в памяти может занимать больше одного байта. Нулевые строки обычно представляют пустые строки в текстовых редакторах и пустые поля в окнах ввода баз данных. Литеральная нулевая строка за­писывается как "".

Нулевой указатель на строку не адресует никаких символьных данных — он не является эквивалентом ну­левой (с нулевой длиной) строки. Чтобы создать нулевой указатель на строку, присвойте указателю мак­роопределение NULL. Чтобы создать нулевую строку, присвойте NULL первому байту строки.

Рис. 6.2 иллюстрирует важный факт: содержимое строки может занимать только часть общего объема памя­ти, выделенного строке. Строка может иметь от 0 до п -1 символов, где n — объявленная длина. Верхняя строка на рисунке нулевая — она не содержит значащих символов, только завершающий нуль в своем первом байте. Все остальные байты в этой строке не используются. Средняя строка на рисунке целиком заполнена символами. В этой строке не пропадает зря ни одного байта. Нижняя строка представляет самый типичный случай — сим­вольный массив заполнен частично, и несколько байтов после завершающего нуля не используются.

Рис.6.2 Типичные строки в памяти

 

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

еще рефераты
Еще работы по информатике