В программе строки могут определяться следующим образом:
* как строковые константы;
* как массивы символов;
* через указатель на символьный тип;
* как массивы строк.
Кроме того, должно быть предусмотрено выделение памяти для хранения строки.
### Строковые константы
Любая последовательность символов, заключенная в двойные кавычки, рассматривается как строковая константа.
Для корректного вывода любая строка должна заканчиваться нуль-символом '\0', целочисленное значение которого равно 0. При объявлении строковой константы нуль-символ добавляется к ней автоматически. Так, последовательность символов, представляющая собой строковую константу, будет размещена в оперативной памяти компьютера, включая нулевой байт.
Под хранение строки выделяются последовательно идущие ячейки оперативной памяти. Таким образом, строка представляет собой массив символов. Для хранения кода каждого символа строки отводится 1 байт.
Для помещения в строковую константу некоторых служебных символов используются символьные комбинации. Так, если необходимо включить в строку символ двойной кавычки, ему должен предшествовать символ «обратный слеш»: ' \\ \" '.
Строковые константы размещаются в статической памяти. Начальный адрес последовательности символов в двойных кавычках трактуется как адрес строки. Строковые константы часто используются для осуществления диалога с пользователем в таких функциях, как printf().
### Объявление массива символов
При определении массива символов необходимо сообщить компилятору требуемый размер памяти.
```
char m[82];
```
Компилятор также может самостоятельно определить размер массива символов, если инициализация массива задана при объявлении строковой константой:
```
char m2[]="Мороз и солнце;";
char m3[]={'д','е','н','ь',' ','ч','у','д','е','с','н','ы','й','!','\0'};
```
В этом случае имена m2 и m3 являются указателями на первые элементы массивов:
```
m2 эквивалентно &m2[0]
m2[0] эквивалентно ‘Г’
m2[1] эквивалентно ‘o’
m3 эквивалентно &m3[0]
m3[2] эквивалентно ‘x’
```