Строковая константа

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

Например: “Школа N 35”, “город Тамбов”, “YZPT”.

Строковый литерал имеет тип char[]. Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива.

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

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

Например:

#include <stdio.h>

main()

{ char *p;

p = “Это пример того, как Turbo C++ “

“автоматически\nвыполняет для вас конкатенацию “

“очень длинных строк,\nчто позволяет получить “

“более красивые программы“;

printf(“%s”,p); }

На выходе программы будет:

Это пример того, как Turbo C++ автоматически

выполняет для вас конкатенацию очень длинных строк,

что позволяет получить более красивые программы.

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

printf(“В действительности \

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

Отметим, что все управляющие символы, кавычка (“), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала “Школа \n N 35” его часть “Школа” будет напечатана на одной строке, а вторая часть “N 35” на следующей строке.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности (см.#2.1). Например, отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае символ или символы следующие за управляющей последовательностью будут рассматриваться как ее недостающая часть.

Например:

“ABCDE\x009FGH” данная строковая команда будет напечатана с использованием определенных функций языка С++, как два слова ABCDE FGH, разделенные 8-ю пробелами, в этом случае если указать неполную управляющую строку”ABCDE\x09FGH”,то на печати появится ABCDE=|=GH, так как компилятор воспримет последовательность \x09F как символ”=+=”.

printf(«\x0072.1Простая операционная система»);

Предполагается, что эта строка будет интерпретирована как \x007 и «2.1Простая операционная система». Однако, Turbo C++ (и TurboC версии 2.0) компилируют ее как шестнадцатеричное число \x0072 и литеральную строку «.1Простая операционная система».

Чтобы избежать этих проблем, надо переписать ваш код следующим образом:

printf(«\x007» «2.1Простая операционная система»);

Неоднозначность может возникнуть также и в случае, когда за восьмеричной управляющей последовательностью следует невосьмеричная цифра. Например, поскольку 8 и 9не являются допустимыми восьмеричными цифрами, константа \258 будет интерпретирована как двухсимвольная константа, составленная из символов \25 и 8.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: