logo search
Подбельский Фомин_Программирование на языке СИ_

Строки, или строковые константы.

Строки, или строковые константы. Формально строки (в соответствии со стандартом) не относятся к константам языка Си, а представляют собой отдельный тип его лексем. Для них в литературе используется еще одно название "строковые литералы". Строковая константа определяется как последовательность символов (см. выше символьные константы), заключенная в двойные кавычки (не в апострофы):

''

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

Представления строковых констант в памяти ЭВМ подчиняются следующим правилам. Все символы строки размещаются подряд, и каждый символ (в том числе представленный эскейп-последовательностью) занимает ровно 1 байт. В конце записи строковой константы компилятор помещает символ '\0'.

Таким образом, количество байтов, выделяемое в памяти ЭВМ для представления значения строки, ровно на 1 больше, чем число символов в записи этой строковой константы:

При работе с символьной информацией нужно помнить, что длина константы 'F' равна 1 байту, а длина строки "F" равна 2 байтам.

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

Если в последовательности символов (литер) константы встречается литера '\', за которой до признака '\n' конца строки текстового файла размещены только пробелы, то эти пробелы вместе с символом '\' и окончанием '\n' удаляются, и продолжением строковой константы считается следующая строка текста. Например, следующий текст представляет одну строковую константу:

В программе эта константа будет эквивалентна такой:

Начальные (левые) пробелы в продолжении константы на новой строке не удаляются, а считаются входящими в строковую константу.

Две строковые константы, между которыми нет других разделителей, кроме обобщенных пробельных символов (пробел, табуляция, конец строки и т.д.), воспринимаются как одна строковая константа. Таким образом,

''

воспринимается как одна константа:

Тем же правилам подчиняются и строковые константы, размещенные на разных строках. Как одна строка будет воспринята последовательность

Эти четыре строковые константы эквивалентны одной:

Обратите внимание, что в результирующую строку здесь не включаются начальные пробелы перед каждой константой-продолжением.