Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Символьные строки и размещение их в памяти



Символьные строки представляют один из наиболее полезных и важных типов данных языка Си. Символьная строка является массивом типа char, который заканчивается нуль – символом (‘\0’). Компилятор автоматически вставляет его после последнего символа строки. При резервировании памяти под строку программист должен предусмотреть один байт для признака конца строки. Например, строка «СТРОКА» будет иметь представление в памяти, показанное на рис.1.

____________________

| С | Т | Р | О | К | А| \ 0 |

____________________

Рис.1.

Всякий раз, когда компилятор встречается с чем-то, заключенным в двойные кавычки, он определяет это как строковою константу. Символы, заключенные в кавычки, плюс завершающий символ ‘\0’, записываются в последовательные ячейки памяти. Строковые константы размещаются в статической памяти.

При определении массива символьных строк необходимо сообщить компилятору требуемый размер памяти. Один из способов сделать это – инициализировать массив пр помощи строковой константы. Так как автоматические массивы нельзя инициализировать, необходимо для этого использовать статические или внешние массивы.

Например,

Static char stroka [ ] = {‘с’, ‘т’, ‘р’, ‘о’, ‘к’, ‘а’, ‘\0’};

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

Static char stroka [ ] = “строка”;

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

char *str;

str = ” строка”;

Это же самое можно записать так:

char *str = “строка”;

Иной путь выделения памяти заключается в явном ее задании. Во внешнем описании мы могли бы указать;

char m1[13] = “одна_строка”;

В этом случае все неиспользованные элементы автоматически инициализируются нуль–символом, как показано на рис.2.

----------------------------------------------

| о | д | н | а | с | т | р | о | к | а | \0 | \0 |

----------------------------------------------

Рис.2.





Дата публикования: 2014-11-28; Прочитано: 251 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...