- •Введение история разработки языков программирования
- •Структура программы
- •Основные понятия. Типы данных.
- •Организация ветвлений
- •Структуры данных. Массивы
- •Структура (struck)
- •Объединения. Строковые литералы
- •Функции
- •Рекурсия
- •Указатели
- •Динамические массивы.
- •Динамические массивы.
- •Полиморфизм
- •Конструкторы и деструкторы
- •Перегрузка операторов
- •Шаблоны. Стандартная библиотека шаблонов (stl).
- •Язык программирования с#
Объединения. Строковые литералы
Объединение (union) – представляет собой частный случай структуры, все поля которой располагаются по одному и тому же адресу. Формат описания такой же, как у структуры, только вместо ключевого слова struct используется слово union.
Длинна объединения равна наибольшей из длин его полей. В каждый момент времени в переменной типа объединение хранится только одно значение, и ответственность за его правильно использование лежит на программисте.
Объединения применяют для экономии памяти в тех случаях, когда известно, что больше одного поля одновременно не требуется.
Пример:
#include <iostream>
Using namespace std;
Int main () {
Enum paytype {CARD, CHECK};
Paytype ptype;
Union payment {
Char card[25];
Long check; }
Info;
// присваивание значений info и ptype
Switch (ptype) {
Case CARD: cout «”Оплата по карте:”« info.card;break;
Case CHECK: cout « “Оплата чеком:”«info.check;break;
}
Return 0;
}
Объединение часто используют в качестве поля структуры, при этом в структуру удобно включить дополнительное поле, определяющее, какой, именно элемент объединения используется в каждый момент.
Имя объединения можно не указывать, что позволяет обращаться к его полям непосредственно.
Пример 2:
#include <iostream>
Using namespace std;
Int main () {
Enum paytype {CARD, CHECK};
Paytype ptype;
Union payment {
Char card[25];
Long check; }
Info;
// присваивание значений info и ptype
Switch (ptype) {
Case CARD: cout «”Оплата по карте:”« info.card;break;
Case CHECK: cout « “Оплата чеком:”«info.check;break;
}
Return 0;
}
СТРОКИ
Строка представляет собой массив символов, заканчивающийся нуль-символом.
Нуль-символ – это символ с кодом, равным 0, что записывается в виде управляющей последовательности ‘\0’. По положению нуль-символа определяется фактическая длина строки. Строку можно инициализировать строковым литералом.
Под строку «Vasja» выделяется 10 байт, 5 из них которых занято под символы строки, а шестой – под нуль-символ.
Char str[10]=”Vasja”;
// выделено 10 элементов с номерами от 0 до 9
// первые элементы – ‘V’, ‘a’, ‘s’, ‘j’, ‘a’, ‘\0’
Если строка при определении инициализируется, её размерность можно опускать (компилятор сам выделит соответствующее количество байт):
Char str[] = “Vasja”;// выделено и заполнено
// 6 байт.
Оператор char*str=”Vasia” создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. Знак равенства перед строковым литералом означает инициализацию, а не присваивание. Операция присваивания одной строки другой не определена (поскольку строка является массивом( и может выполняться с помощью цикла или функций стандартной библиотеки).
Функции для работы со строками
Strcmp – сравнивает две строки
Stricm -
strcpy – копирует строку в другую строку
strcat – добавляет строку
strstr – поиск строки
strlen – вычисление длинны строки
#include <iostream>
#include <cstring>
Using namespace std;
Int main() {
Char s[80],passw[] = “kuku”;
Int I; k=0;
For (i=0; !k && i<3; i++){
Cout <<”vvedite parol:” <<endl;
Gets (s);
If (strstr(s,passw)) k=1;
}
If (k) cout <<”yes”;
Else cout << “NO”;
Return 0;
}
