Книга: Язык Си - руководство для начинающих

Строковые константы

Строковые константы

     Всякий раз, когда компилятор встречается с чем-то, заключенным в двойные кавычки, он определяет это как строковую константу. Символы, заключенные в кавычки, плюс завершающий символ '', записываются в последовательные ячейки памяти. Компилятор подсчитывает количество символов, поскольку ему нужно знать размер памяти, необходимой для запоминания строки. Наша программа использует несколько таких строковых констант, чаще всего в качестве аргументов функций printf( ) и puts( ). Заметим также, что мы можем определять строковые константы при помощи директивы #define.

     Если вы хотите включить в строку символ двойной кавычки, ему должен предшествовать символ обратной дробной черты:

рrintf(""Беги, Спот, беги!" - сказал Дик.n");

В результате работы этого оператора будет напечатана строка:

"Беги, Cпот, беги! - "сказал Дик.

     Cтроковые константы размещаются в статической памяти. Вся фраза в кавычках является указателем на место в памяти, где записана строка. Это аналогично использованию имени массива, служащего указателем на расположение массива. Если это действительно так, то как выглядит оператор, который выводит строку?

/* строки в качестве указателей */

main( )

{

printf("%s, %u, %c n", "We", "love", *"figs");

     Итак, формат %s выводит строку We. Формат %u выводит целое без знака. Если слово "love" является указателем, то выдается его значение, являющееся адресом первого символа строки. Наконец, *"figs" должно выдать значение, на которое ссылается адрес, т. е. первый символ строки "figs". Произойдет ли это на самом деле? Да, мы получим следующий текст:

We, 34, f

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

Оглавление книги


Генерация: 0.159. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз