Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции по С++.doc
Скачиваний:
121
Добавлен:
19.05.2015
Размер:
2.43 Mб
Скачать

2. Определение нового имени типа

При решении прикладных задач на компьютере часто возникает необходимость в типах данных, которые не определены в языке программирования. В языке С++ можно создавать новые имена типов данных – пользовательские типы данных. Эта возможность реализуется при помощи спецификатора typedef или директивы задания макроопределений #define. Ключевое слово typedef позволяет заменить имя заранее созданного пользовательского или стандартного типа данных на имя, которое задает программист. Это очень удобно при работе со структурами. Пример определения нового (пользовательского) имени структурного типа данных приведен в табл.10.

Таблица 10

Определение tovarс помощьюtypedef

Определение tovarс помощью #define

typedefstruct

{

charname[50];// Наименование

floatprice; // Цена оптовая

floatpercent; // Наценка в %

int vol; // 06ъем партии

chardate[9] ; // Дата поставки партии

} tovar;

tovartv;

#define tovar struct tvr

tovar

{

charname[50]; // Наименование

floatprice; // Цена оптовая

floatpercent; // Наценка в %

int vol; // 06ъем партии

chardate[9] ; // Дата поставки

//партии

};

tovartv;

В обоих примерах именем нового типа пользователя будет tovar, а tv – это структура-переменная типа tovar. Надо заметить, что такие определения записываются в разделе программы: директивы препроцессора, т.е. перед заголовком главной функции main().

Примечание. В языке С++ кроме структур существует такое понятие, как объединение. Объединение от структуры отличается тем, что объем оперативной памяти, занимаемой объединением, будет равен объему, который необходим для размещения максимального по объёму памяти элемента этого объединения.

3. Массивы структур. Указатели на структуры

При решении большинства задач приходится иметь дело не с одним, а с совокупностью однотипных объектов, которые отличаются только значениями, а не описанием. Поэтому в таких случаях создают и работают с массивами структур. Если количество объектов можно определить до запуска программы, то объявляют статический массив структур. В противном случае объявляют указатель на структурный тип.

Указатели на структуры определяются, как и указатели на переменные других типов. Если объявлен указатель на структурный тип, то в этом случае говорят о динамическом массиве структур. Динамическим массивам структур ОП выделяется в процессе выполнения программы с помощью одной из соответствующих библиотечных функций, например malloc().

Допустим, что определён новый тип пользователя stud (студент) – структура с полями fio, kurs, facultet, spec.

typedef struct

{

char fio[30]; // ФИО студента

int kurs ; // курс

char facultet[50]; // наименование факультета

charspec[50] ; // специальность

} stud;

Тогда, чтобы решать задачи об обработке списков студентов, необходимо создать массив структур (статический или динамический) типа stud и обработать его согласно поставленной задаче.