Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
это то что у меня есть в электронном виде.docx
Скачиваний:
1
Добавлен:
23.04.2019
Размер:
141.72 Кб
Скачать

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

Синтаксис: "символы"["символы"]...

Строковый литерал это последовательность символов из представительной таблицы символов, которая заключена в двойные цитатные скобки. Например, строковый литерал может быть таким:

"This is f string literal."

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

Для форсированного перехода на новую строку в строковом литерале нужно в месте предполагаемого разрыва строки вставить управляющую последовательность перехода на новую строку (\n), следующим образом:

"Enter a number between 1 and 100\nOr press Return"

Традиционный способ формирования строк литералов, которые не умещаются на одной строке, состоит в том, что вводится знак обратного деления и нажимается клавиша RETURN. Знак обратного деление заставляет компилятор игнорировать следующий за ним символ новой строки. Например, строковый литерал

"Long strings can be bro\

ken into two or more pieces."

идентичен строке

"Long strings can be broken into two or more pieces."

Два или несколько строковых литералов, разделенных только символами разделения будут конкатенированы в одну строку. Например, если передать в функцию printf длинные строки как литералы, то они могут быть продолжены с любой колонки следующей строки без возникновения эффекта сдвига при печати:

printf ("This is the first half of the string,"

" this is the second half") ;

Поскольку каждая часть строки заключена в цитатные скобки, то произойдет их конкатенация и Мы получим в результате:

This is the first half of the string, this is the second half

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

char *string = ("This is the first half of the string,"

" this is the second half") ;

printf("%s" , string);

Для использования в строковом литерале двойной цитатной скобки или обратного деления нужно перед ним поставить знак обратного деления, как это показано в следующем примере:

"First\\Second"

"\"Yes", I do,\" she said."

Обратите внимание на то, что управляющая последовательность (например, \\ или \") в строковом литерале рассматривается как один символ.

Символы строки хранятся последовательно в непрерывной области памяти. Пустой символ (представленный управляющей последовательностью \0) автоматически добавляется в конец строки и отмечает конец каждого строкового литерала. Каждая строка программы рассматривается отдельно, однако не гарантируется, что две идентичные строки получат разные места памяти. Кроме того, программы должны быть разработаны таким образом, чтобы не допускать в процессе своего выполнения модификации строковых литералов.

Строковые литералы имеют тип массива char (char[]). Это значит, что строка это массив элементов типа char. Число элементов массива равно числу символов в строке плюс один для заканчивающего пустого символа.