2.6  Строковые литералы

Строковые литералы, известные также как строковые константы, образуют специальную категорию констант, используемых для работы с фиксированными последовательностями символов. Строковый литерал есть тип данных array of char и класс памяти static, записываемый как последовательность произвольного количества символов, заключенных в двойные кавычки:

"This is literally a string!"  /*  "Это строковый литерал!"  */

Нулевая (пустая) строка записывается как "". Если строковые литералы имеют большое количество символов, не умещающихся на одной строке, то можно с помощью символа наклонной черты влево () переносить символы строкового литерала на следующую строку, т.е. выполнить «склеивание» этих строк. В этом случае символ наклонной черты влево (обратный слеш) и символ новой строки (Enter) пpи синтаксическом анализе отбрасываются, что позволяет рассматривать две части строкового литерала как единое целое, Например:

"Borland

International"

будет рассматриваться, как

"Borland    International".

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

"tt"Имя \tАдресnn

распечатается функцией printf следующим образом:

"Имя "   Адрес

Слову "Имя" будет предшествовать два символа табуляции; слову "Адрес" предшествует один символ табуляции. Строка заканчивается двумя символами новой строки. Последовательность " обеспечивает вывод внутренних кавычек.

Строковый литерал хранится в памяти как заданная последовательность символов, плюс конечный пустой символ (‘’), означающий конец строки. Нулевая строка хранится в виде одного символа ‘’.

Не следует путать ‘’, ‘0’ и "0". Первое – символьный литерал, соответствующий символу с кодом 0. Второе – такой же литерал, но обозначающий цифру 0, ее код в ASCII-кодировке 48. Третий – это строковый литерал, содержащий два символа, цифру 0 и нуль-терминатор ‘’.

На фазе лексического анализа соседние строковые литералы, разделенные только пробелами, конкатенируются (объединяются).

Для расширения строковой константы за границы строки в качестве символа продолжения можно использовать обратную наклонную черту ():

put("В действительности

это однострочная строка символов");