3.1.4. Строки
3.1.4. Строки
Строка – это последовательность символов алфавита, заключенных в двойные кавычки:
"<последовательность символов>"
Примером строки является следующая конструкция: "Это строка языка Си". Пробел является значащим символом строки, а двойные кавычки вводятся для того, чтобы отметить в программе начало и конец строки. По тому, как строки выглядят в тексте программы, их можно отнести к классу строковых констант, однако, строго говоря, строка не является константой и рассматривается компилятором как массив (последовательность элементов), в котором каждый элемент занимает один байт и имеет значение кода соответствующего символа, входящего в состав строки.
В конец строки компилятор помещает нулевой байт – "нуль-символ" (NULL), который используется для того, чтобы отметить конец строки. Таким образом, строка занимает в памяти на 1 байт больше, чем количество содержащихся в ней символов. Нуль-символ – это не символ алфавита 0, он не выводится на печать, в таблице кодов ASCII имеет номер 0 и его двоичный код состоит только из нулей (\0). В отличие от нуль-символа "символ-цифра 0" имеет код \60.
Ввиду того, что строка рассматривается компилятором не как константа, а как массив символов, каждая строка сохраняется в отдельном месте памяти, даже если она идентична уже имеющейся в памяти какой-либо другой строке.
В состав последовательности символов строки могут входить любые символы, в том числе символы из таблицы 3.3 (без обрамления их одинарными кавычками) и символы, определяемые кодами \ddd и \xHHH. Например, чтобы напечатать из программы текст Запомните, "символ \ называется обратной дробной чертой (back slash)", выводимую строку в программе можно записать так:
"Запомните, \"символ \\ называется обратной дробной чертой (back slash)\".\n"
или
"Запомните, \x22 символ \x5c называется обратной дробной чертой (back slash)\x22.\n"
В состав строки включены символы таблицы 3.3: \" , \\ и \n. Наличие управляющего символа \n в конце сроки вызовет после вывода текста перевод на новую строку.
Необходимо четко различать символьные константы и строки. Например, 'xy' – это двухбайтовая символьная константа, "xy" – строка, занимающая 3 байта памяти, "" – пустая строка, занимающая 1 байт памяти, в котором записан нуль-символ.
Так как строки – это, по сути, массивы, их можно программным путем обрабатывать, заменяя или перекомпоновывая в памяти символы, определять длину строки по конечному нуль-символу и т.д.
Компилятор Турбо-Си производит объединение нескольких строк в одну, если они записаны в программе друг за другом.
Например:
"Это пример того, как Турбо-Си"
"автоматически \n осуществляет объединение"
"строк в одну длинную строку, \n"
"что может быть нами использовано для большей"
"наглядности программы. \n"
В этом случае в памяти будет сформирована одна длинная строка, в конце которой будет проставлен нуль-символ.
Оставить комментарий