- •1) Структурные типы данных и переменные этих типов .-
- •2) Передача структурных переменных функциям .-
- •3)Указатели на структурные переменные .
- •4) Массивы структурных переменных .
- •6)Поля битов. Средство typedef-
- •7) Понятие макроподстановки .
- •8) Включение файлов .
- •9)Условная компиляция.
- •12)Обработка двоичных файлов . Последовательный и произвольный доступ.
- •2)Произвольный доступ.
- •13)Аргументы используемые по умолчанию .-
- •14)Использование ссылок .
- •15)Встроенные функции.-
- •16)Операция разрешения видимости .(::)
- •17)Пространства имен.
- •18)Перегруженные функции.-
- •20)Определение классов.
- •21)Элементы класса.
- •22) Способы доступа к элементам класса .
- •23) Конструктор и деструктор.
- •24) Конструктор копии . Операция присваивания.-
- •25) Преобразование объектов класса в другие типы и их получение из других типов .
- •26)Перегрузка операций .
- •27)Дружественные функции.
- •28)Наследование классов .
- •29)Обработка исключительных ситуаций .
- •30)Визуалка.
1) Структурные типы данных и переменные этих типов .-
Структурный тип – это тип созданный на основе компонентов базовых типов или ранее созданных структурных типов . При создании структурного типа его имя пишется после struct , а после имени в {} пишется список компонентов . Имена этих компонентов могут совпадать с именами обычных переменных , так как их можно различать по контексту . Имя структурного типа может и не задаваться при описании нового структурного типа . Описание структурного типа не резервирует память , память выделяется только при описании какой-либо переменной структурного типа . Доступ к отдельным компонентам структурного типа осуществляется при помощи конструкции имя переменной _ компонент.
Struct Kristina {
Int a;
Float b;
};
Struct Kristina obsch
Над структурными переменными возможно присваивание , взятие адреса с помощью специальных операций и осуществления доступа к ее компонентам.
Struct point a;
&a …. A=b; b…
B=a; a….
2) Передача структурных переменных функциям .-
Частным случаем этих операций является передача структурных переменных в функции и возврат их из функций в виде результата . Функцию можно передавать компоненты структурных переменных по отдельности , структурные переменные целиком , а так же указатель на структурную переменную .
Main ()
{struct vect screen;
Struct point middle;
Struct point makepoint (int,int);
Screen.pt1=makepoint(0,0);
Screen.pt2=makepoint(xMax,yMax);
Middle=makepoint((screen.pt1.x+screen.pt2.x);screen.pt1.y+screen.pt2.y)/2);
}
Struct point makepoint (int x , int y)
{struct point tmp;
Tmp.x=x;
Tmp.y=y;
Return tmp;}
Struct point addpoint (struct point p1,struct point p2)
{p1.x+=p2.x;
P1.y+=p2.y;
Return p1;}
Как правило при передачи структурных переменных функции используется передача по адресу . Наличие скобок необходима из-за того , что приоритет оператора «.» выше приоритета оператора «*» , а запись без () неверна .
3)Указатели на структурные переменные .
При работе с указателем на переменную со структурным типом используют операцию «->». Операторы доступа к компонентам структурных переменных вместе с операторами вызова функции и обращение к элементам массивов занимают самое высокое положение в таблице приоритетов и выполняются раньше других операторов.
Struct {int len;
Char str;
}*p;
++p->len
В этом примере на единицу увеличится значение компонента len , а не указателя *p.
4) Массивы структурных переменных .
В Си существует возможность описывать массивы переменных того или иного структурного типа . Для работы с такими массивами используют те же механизмы , что и при работе с обычными массивами.
Struct key
{chfr *word;
Int count;
}keytab[100];
For (i=0;I<=100;i++)
Massiv[i].count++
Struct key *p;
For (p=keytab;p<keytab+99;p++)
If (p->count>0)
Printf(“%d %s\n”,p->count,p->word);
Используя массивы структурных переменных средствами языка Си++ можно решать ряд задач обработки таблиц , то есть выполнять часть функций систем управления БД.
5)Объединения (для экономии памяти)
Объединение – переменная , которая может в разные моменты времени содержать в себе объекты различных типов и размеров . Размер памяти таков , что хватило места под самый большой компонент объединения . Синтаксис доступа к компонентам объединения такой же , как и при работе со структурными .
Union {
Int klasha;
Float glasha;
Long double sasha;
}kreslo;
В случае рассогласования типов результат непредсказуем . Объединения могут являться компонентами структурных типов и наоборот объединение может включать в свой состав в качестве компонента структурную переменную .