- •2)Этапы изготовления загрузочного модуля.
- •4)Типы данных.
- •5)Описание типов переменных и именованных констант.
- •6) Классы памяти, область действия, область видимости, время жизни переменных
- •7) Уточнение типа константы (литерала).
- •8)Выражения. Арифметические операции, операции отношения.
- •12) Операция явного приведения типа. Правила преобразования операндов при вычислении выражений. Приоритет операций и порядок их выполнения.
- •Int main(){ // или просто main()
- •14) Форматный ввод-вывод. Функции ввода и вывода;
- •15) Управляющая строка: управляющие символьные константы, поясняющий текст, спецификации преобразования (флаги, ширина, точность, модификаторы, типы преобразования).
- •16) Оператор- выражение. Примеры использования.
- •17) Оператор безусловного перехода. Примеры использования.
- •18) Операторы условного перехода: switch. Примеры использования.
- •19) Операторы условного перехода: if. Примеры использования.
- •20) Операторы цикла: while, do while. Примеры использования.
- •21)Операторы цикла: for. Примеры использования
- •22)Внутреннее представление целых данных.
- •23) Внутреннее представление данных с плавающей точкой
- •24) Другие операторы: break, continue, return. Примеры использования
- •25) Понятие указателя. Виды указателей. Их описание
- •26) Специальные операции, связанные с указателями. Стандартные операции, применимые к указателям.
- •27) Инициализация указателей.
- •28) Одномерные массивы. Описание массивов, их инициализация.
- •29) Связь одномерных массивов с указателями. Динамическое выделение памяти для одномерных массивов.
- •30) Одномерные массивы. Описание массивов, их инициализация.
- •31) Связь двумерных массивов с указателями. Динамическое выделение памяти для двумерных массивов.
- •32) Функции пользователя. Прототипы функций (объявление функций). Структура функции пользователя. Вызов функции. Виды функций.
- •33) Функции пользователя. Способы передачи информации между функциями.
- •34) Функции пользователя. Механизм передачи аргументов в функцию. Передача аргументов функции: передача значений, передача адресов. Возврат результатов из функции.
- •35) Соответствие между фактическими и формальными аргументами. Использование указателей в качестве аргументов. Возврат результатов из функции.
- •36) Понятие ссылки, ее описание. Использование ссылок для передачи аргументов в функцию и обратно.
- •37) Виды функций. Функции с переменным числом аргументов.
- •38) Виды функций. Функции с аргументами, заданными по умолчанию. Inline-функции.
- •39) Виды функций. Рекурсивные функции.
- •40) Виды функций. Перегруженные функции.
- •41) Виды функций. Шаблоны функций.
- •Inline - функция
- •42) Передача аргументов функции main(). Возврат из функции main().
- •43) Описание строк и символов. Функции ввода-вывода символов и строк.
- •44) Действия над строками и символами.
- •46.Использование указателей на строки. Выделение памяти под строку и под массив строк.
- •47.Типы данных, задаваемые пользователем. Оператор typedef. Перечислимый тип
- •48.Структурированный тип данных: структуры, их описание, доступ к полям структуры, вложенные структуры, указатель на структуру, массивы структур
- •49.Разновидности структуры: битовые поля, смеси (объединения). Использование их для построения сложных структур.
- •50.Файлы в с. Способы обмена. Файловый тип. Описание файлов.
- •51.Файлы в с. Потоковый обмен: блоковый, форматный.
- •53.Объекты и классы. Описание классов. Объявление объектов.
- •2 Способа вызова:
- •54Указатель this.
- •55.Конструкторы и деструкторы. Их назначение. Виды конструкторов.
- •61) Наследование. Производный класс. Конструкторы и деструкторы производных классов.
- •62) Множественное наследование.
47.Типы данных, задаваемые пользователем. Оператор typedef. Перечислимый тип
В реальных задачах информация, которую требуется обрабатывать, может иметь достаточно сложную структуру. Для ее адекватного представления используются типы данных, построенные на основе простых типов данных, массивов и указателей. Язык C++ позволяет программисту определять свои типы данных и правила работы с ними. Исторически для таких типов сложилось наименование типы данных, определяемые пользователем, хотя правильнее было бы назвать их типами, определяемыми программистом.
К типам данных, определяемых пользователем, относятся
Задание нового имени существующему типу данных.
Структуры
Разновидности структур
Битовые поля
Объединение
Перечисления
Задание нового имени существующему типу данных
typedef имя_старого_типа имя_новое [размерность];
Пример 1:
typedef float real;
Тогда можно использовать следующие описания
float x,y;
или (что тоже самое)
real x,y;
Пример 2:
Если введены следующие новые имена типам
typedef unsigned long DLIN;
typedef char S[50];
typedef struct {
char nazv[50];
int code;
double cena; } izdel;
то можно использовать следующие описания:
DLIN a, b; // a и b переменные типа unsigned long
S otv [20]; // массив из 20 строк по 50 символов
izdel naz[40] // массив из 40 структур
48.Структурированный тип данных: структуры, их описание, доступ к полям структуры, вложенные структуры, указатель на структуру, массивы структур
Структура – это множество логически связанных именованных элементов различных типов.
Элементом структуры может быть объект любого типа, в том числе структура. Структура объединяет данные разных типов в одно целое. Элементы структуры называют полями структуры.
Различают описание структуры – шаблон, и структурную переменную типа заданного шаблона.
Описание шаблона структуры не обеспечивает выделение памяти под структуру. Необходимо объявить структурные переменные для заданного шаблона, для которых будет выделена память.
Шаблон:
struct [имя_шаблона]
{ тип1 имя1, имя2…;
тип 2 имя 21, имя 22…;
};
Пример шаблона
struct anketa
{
char FIO[30];
char ADRES[40];
int GODR;
long ZARPL;
};
Описание структурной переменной может быть сделано и при описании шаблона либо отдельно от описания шаблона.
struct [имя_шаблона]
{ тип1 имя1, имя2…;
тип 2 имя 21, имя 22…;
} пер1, пер 2…; // структурные переменные
struct anketa
{
char FIO[30];
char ADRES[40];
int GODR;
long ZARPL;
}P,MP[10],*у; // описание структурных переменных:
// структурная переменная P или структура P,
//массив структур MP из 10 элементов,
//указатель на структуру y
отдельно
struct anketa P, MP[10];
Если шаблон структуры описан в typedef, либо используются отличные от BC инструментальные среды, то можно не использовать слово struct, а только имя шаблона.
Например,
typedef struct {
char FIO[30];
char ADRES[40];
int GODR;
long ZARPL;
} anketa;
Тогда описание структурных переменных следующее
anketa P, MP[10];
Имя структуры можно использовать сразу после его объявления (определение можно дать позднее) в тех случаях, когда компилятору не требуется знать размер структуры, например:
struct List;. // объявление структуры List
struct Link{
List *p; // указатель на структуру List
Link *prev. *succ; // указатели на структуру Link
}:
struct List { / * определение структуры List * / };
Это позволяет создавать связные списки структур.
При описании структурной переменной можно сделать инициализацию ее полей.
Для инициализации структуры значения ее элементов перечисляют в фигурных скобках в порядке их описания:
struct{
char fio[30];
int date, code;
double salary;
}work1 = {"Страусенке", 31, 215, 3400.55};
При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива (учитывая, что многомерный массив — это массив массивов):
struct complex{
float real, im;
} compl [2][3] = {
{{1, 1}, {1, 1}, {1, 1}}, // строка 1. TO есть массив compl[0]
{{2, 2}, {2, 2}, {2, 2}} // строка 2. то есть массив compl[1]
};
Для переменных одного и того же структурного типа определена операция присваивания, при этом происходит поэлементное копирование. Структуру можно передавать в функцию и возвращать в качестве значения функции. Другие операции со структурами могут быть определены пользователем. Размер структуры не обязательно равен сумме размеров ее элементов, поскольку они могут быть выровнены по границам слова.
При работе со структурой иногда необходимо знать размер структуры – сколько байт она занимает. Для этого нужно использовать операцию опреления размера sizeof
sizeof(anketa)
Например, размер структуры используется для записи ее в бинарный файл.
Доступ к полям структуры:
ИмяСтруктурнойПеременной . имяПоля
P.FIO
P.GODR
MP[i].ZARPL;
Если задан указатель на структуру, то доступ к элементам (полям) структуры
ИмяУказателяНаСтруктуру -> ИмяПоля
y->GODR
Примеры функций работы со структурами
Пусть имеется описание шаблона anketa и массива структур типа anketa
struct anketa
{
char FIO[30];
char ADRES[40];
int GODR;
long ZARPL;
} mas[50];
// N - номер свободной структуры или количество заполненных структур.
int N=0;
Функция добавления структуры в массив структур.
void dobav()
{
clrscr();
while(1)
{
printf(“Введи FIO(* - конец ввода) ”);
scanf(“%s”,mas[N].FIO);
if (mas[N].FIO[0]==’*’) return;
printf(“\n адрес->”);
scanf(“%s”,mas[N].ADRES);
printf(“\nГод рождения ”);
scanf(“%d”,&mas[N].GODR);
printf(“\nЗарплата”);
scanf(“%ld”,&mas[N].ZARPL);
N++;
}}