Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Техн. прогр. - Конспект лекций.doc
Скачиваний:
31
Добавлен:
15.03.2016
Размер:
877.06 Кб
Скачать

Строки.

Строкой является массив данных типа char. Используется строка с завершающим нулём, то есть признаком конца строки является символ с кодом «0».

Строки могут инициализироваться текстом, заключенным в двойные кавычки: строковой константой, – которая имеет тип const char*.

char t[] = “Hello, World”;

Функции работы со строками (библиотека string.h).

char *strcat(char *dest, char *src) – в dest помещается результат объединения dest и src, возвращает ссылку на dest (!!! в dest должно быть достаточно места для помещения результата)

char *strchr(char *str, int c) – поиск символа «c» в str, результат – ссылка на первый найденный символ или NULL, если символ не найден;

int strcmp(char *str1, char *str2) – посимвольное сравнение строк, возвращает -1, если str1<str2, +1 если str1>str2 и 0 если str1==str2;

char* strcpy(char *dest, char *src) – копирует src в dest, возвращает указатель на dest;

unsigned strlen(char *str)

char* strset(char *str, int c) , возвращает s.

char *strstr(const char *str, const char *substr)

Определены модификации некоторых функций, принимающие в качестве дополнительного аргумента длину строки. Данные функции начинаются с strn вместо str. Это функции strncat, strncmp, strncpy, strnset.

Пример:

char* strncat(char *dest, char *src, unsigned n) – то же, что strcat, но используются n символов src.

Время жизни и область видимости переменных

В языках С / С++, как и в большинстве остальных ЯВУ есть три типа переменных.

1. Статические. Статическими являются переменные, объявленные вне какой-либо функции, а также объявленные внутри функций и классов с использованием служебного слова static. Такие переменные создаются при запуске программы, уничтожаются при её завершении и доступны из любой функции программы.

2. Автоматические. Это все переменные, объявленные внутри какой-либо функции (кроме объявленных с использованием слова static). Такие переменные создаются при их объявлении и уничтожаются при выходе за пределы операторных скобок фрагмента программы, в котором они определены. Эти переменные размещаются в стеке. Поэтому максимальный размер всех автоматических переменных ограничен размером выделенного стека, на это следует обращать внимание при создании больших автоматический массивов.

3. Динамические. Это переменные, созданные с помощью специальных функций (malloc, calloc и др.) или операций (new, new[]). Временем жизни таких переменных управляет программист. Область видимости определяется доступностью указателей. Такие переменные расположены как правило в «куче» (heap). В Ms Windows при завершении приложения все динамические переменные также уничтожаются в связи с уничтожением кучи, связанной с данным приложением.

Пример (С++).

int main()

{

char a = 5;

{

int b = a + 5; //здесь a существует и доступно

} //уничтожена переменная b

short c;

c = a + b; // ошибка, т.к. b уже не существует

for(int i = 0;i<10;i++) {…}

c = i; //ошибка, i существует только в теле цикла for

int i=0; //переменная может быть объявлена, т.к. i объявленная выше уже не существует

for(;i<10;i++) {…}

c = i; //допустимо, т.к. i объявлено в этом же блоке

i = 10;

{

int i = 3; //допустимо, перекрывает видимость i, объявленной ранее

}

// здесь i=10;

} //уничтожены переменные a,c,i