Разделы презентаций


Типы данных, определяемые пользователем

Содержание

Типы данных, определяемые пользователемПереименование типов (typedef). Перечисления(enum).Структуры (struct). Битовые поля. Объединения (union).

Слайды и текст этой презентации

Слайд 1ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ

ТИПЫ ДАННЫХ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ

Слайд 2Типы данных, определяемые пользователем
Переименование типов (typedef).
Перечисления(enum).
Структуры (struct).
Битовые поля.


Объединения (union).

Типы данных, определяемые пользователемПереименование типов (typedef). Перечисления(enum).Структуры (struct). Битовые поля. Объединения (union).

Слайд 3Переименование типов (typedef)
Для того чтобы сделать программу более ясной, можно

задать типу новое имя с помощью ключевого слова typedef .

Переименование типов  (typedef)Для того чтобы сделать программу более ясной, можно задать типу новое имя с помощью

Слайд 4Переименование типов (typedef).
typedef тип новое_имя [ размерность ];
Размерность может отсутствовать.
Примеры:
typedef

unsigned int UINT;
typedef char Msg[100];
typedef struct{
char fio[30];
int date, code;
double

salary; } Worker;
Переименование типов (typedef).typedef тип новое_имя [ размерность ];Размерность может отсутствовать.Примеры:typedef unsigned int UINT;typedef char Msg[100]; typedef struct{		char

Слайд 5ПЕРЕИМЕНОВАНИЕ ТИПОВ
Кроме задания типам с длинными описаниями более коротких псевдонимов,

typedef используется для облегчения переносимости программ:
если машинно-зависимые типы объявить с

помощью операторов typedef, при переносе программы потребуется внести изменения только в эти операторы
ПЕРЕИМЕНОВАНИЕ ТИПОВКроме задания типам с длинными описаниями более коротких псевдонимов, typedef используется для облегчения переносимости программ:если машинно-зависимые

Слайд 6ПЕРЕИМЕНОВАНИЕ ТИПОВ
Новые имена типов можно использовать таким же образом, как

и имена стандартных типов.
UINT i, j; // две переменных

типа unsigned int
Msg str[10]; // массив из 10 строк по 100 символов
Worker staff[100]; // массив из 100 структур
ПЕРЕИМЕНОВАНИЕ ТИПОВНовые имена типов можно использовать таким же образом, как и имена стандартных типов.UINT i, j;

Слайд 7Перечисления (enum)
При написании программ часто возникает потребность определить несколько именованных

констант, для которых требуется, чтобы все они имели различные значения,

при этом конкретные значения могут быть не важны
Для этого удобно воспользоваться перечисляемым типом данных, все возможные значения которого задаются списком целочисленных констант.

Перечисления  (enum)При написании программ часто возникает потребность определить несколько именованных констант, для которых требуется, чтобы все

Слайд 8П Е Р Е Ч И С Л Е Н

И Я
Формат:
enum [ имя_типа ] { список_констант };
Имя типа задается

в том случае, если в программе требуется определять переменные этого типа.

Компилятор обеспечивает, чтобы эти переменные принимали значения только из списка констант

Константы должны быть целочисленными и могут инициализироваться обычным образом.

При отсутствии инициализатора первая константа обнуляется, а каждой следующей присваивается па единицу большее значение, чем предыдущей

П Е Р Е Ч И С Л Е Н И ЯФормат:enum [ имя_типа ] { список_констант

Слайд 9П Е Р Е Ч И С Л Е Н

И Я
Пример:
enum Err {ERR_READ, ERR_WRITE, ERR_CONVERT};
Err error;
......
switch (error){
case ERR_READ; /* операторы

*/ break;
case ERR_WRITE; /* операторы */ break;
case ERR_CONVERT; /* операторы */ break;
}

Константам ERRREAD, ERRWRITE, ERRCONVERT присваиваются значения 0, 1 и 2 соответственно.

П Е Р Е Ч И С Л Е Н И ЯПример:enum Err {ERR_READ, ERR_WRITE, ERR_CONVERT};Err error;......switch

Слайд 10П Е Р Е Ч И С Л Е Н

И Я
Пример:

enum {two = 2, three, four, ten = 10,

eleven, fifty = ten + 40};

Константам three и four присваиваются значения 3 и 4, константе eleven — 11.

П Е Р Е Ч И С Л Е Н И ЯПример:enum {two = 2, three, four,

Слайд 11Структуры (struct)
В языке C++ структура является видом класса и обладает

всеми его свойствами.
Во многих случаях достаточно использовать структуры так,

как они определены в языке С.

Структуры  (struct)В языке C++ структура является видом класса и обладает всеми его свойствами. Во многих случаях

Слайд 12С Т Р У К Т У Р Ы
Формат:
struct [

имя_типа ] {
тип_1 элемент_1;
тип_2 элемент_2;
тип_n элемент_n;
} [

список_описателей ];

Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры,
но могут быть указателями на него.

С Т Р У К Т У Р ЫФормат:struct [ имя_типа ] { 	тип_1 элемент_1; 	тип_2 элемент_2;	тип_n

Слайд 13С Т Р У К Т У Р Ы
struct {
char

fio[30];
int date, code;
double salary;
} staff[100], *ps;
Если отсутствует имя типа, должен

быть указан список описателей переменных, указателей или массивов.

В этом случае описание структуры служит определением элементов этого списка.

Определение массива структур и указателя на структуру:

С Т Р У К Т У Р Ыstruct {	char fio[30];	int date, code;	double salary;} staff[100], *ps;Если отсутствует

Слайд 14С Т Р У К Т У Р Ы
struct Worker{

// описание нового типа Worker
char fio[30];
int date,

code;
double salary;
}; // описание заканчивается точкой с запятой
/* определение массива типа Worker и указателя на тип Worker*/
Worker staff[100], *ps;

Если список отсутствует, описание структуры определяет новый тип, имя которого можно использовать в дальнейшем наряду со стандартными типами.

Например:

С Т Р У К Т У Р Ыstruct Worker{   	// описание нового типа Worker

Слайд 15С Т Р У К Т У Р Ы
struct List; //

объявление структуры List
struct Link{
List *p; // указатель на структуру List
Link *prev,

*succ; // указатели на структуру Link
};
. . . . . . . . . . . .
struct List { /* определение структуры List */};

Имя структур можно использовать сразу после объявления в тех случаях, когда компилятору не требуется знать размер структуры.

Например:

Это позволяет создавать связные списки структур.

С Т Р У К Т У Р Ыstruct List;			// объявление структуры Liststruct Link{	List *p;		// указатель на

Слайд 16Инициализация структур
struct{
char fio[30];
int date, code;
double salary;
}worker = {"Страусенко", 31,

215, 3400.55};
Для инициализации структуры значения ее элементов перечисляют в фигурных

скобках в порядке их описания:
Инициализация структурstruct{	char fio[30];	int date, code;	double salary; }worker = {

Слайд 17Инициализация структур
struct complex{
float re, im;
} compl[2][3] = {
{{1, 1},

{1, 1}, {1, 1}}, // строка 1, то есть массив

compl[0]
{{2, 2}, {2, 2}, {2, 2}} // строка 2. то есть массив compl[1]
};

При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива:

Учтите, что многомерный массив — это массив массивов

Инициализация структурstruct complex{	float re, im; } compl[2][3] = {	{{1, 1}, {1, 1}, {1, 1}}, // строка 1,

Слайд 18Доступ к полям структуры
Worker worker, staff[100], *ps;
......
worker.fio = "Страусенко";
staff[8].code =

215;
ps -> salary = 0.12;
Доступ к полям структуры выполняется с

помощью :
операции выбора . (точка)
при обращении к полю через имя структуры
->
при обращении через указатель

Если элементом структуры является другая структура, то доступ к ее элементам выполняется через две операции выбора.

struct A {int a; double x;};
struct В {A a; double x;} х[2];
х[0].а.а = 1;
х[1].х = 0.1;


Слайд 19Операции со структурами
Для переменных одного и того же структурного типа

определена операция присваивания
при этом происходит поэлементное копирование
Структуру можно передавать в

функцию и возвращать в качестве значения функции

Другие операции со структурами могут быть определены пользователем

Операции со структурамиДля переменных одного и того же структурного типа определена операция присваиванияпри этом происходит поэлементное копированиеСтруктуру

Слайд 20Битовые поля
Битовые поля — это особый вид полей структуры.
Они

используются для плотной упаковки данных, например, флажков типа «да/нет».

Битовые поляБитовые поля — это особый вид полей структуры. Они используются для плотной упаковки данных, например, флажков

Слайд 21Битовые поля
struct Options{
bool centerX: 1;
bool centerY: 1;
unsigned int shadow: 2;
unsigned

int palette: 4;
};
При описании битового поля, после имени через

двоеточие указывается длина поля в битах (целая положительная константа).
Битовые поляstruct Options{	bool centerX: 1;	bool centerY: 1;	unsigned int shadow: 2;	unsigned int palette: 4; };При описании битового поля,

Слайд 22Битовые поля
Битовые поля могут быть любого целого типа.
Имя поля может

отсутствовать
такие поля служат для выравнивания на аппаратную границу
Доступ к полю

осуществляется обычным способом — по имени

Адрес поля получить нельзя, однако в остальном битовые поля можно использовать точно так же, как обычные поля структуры

Битовые поляБитовые поля могут быть любого целого типа.Имя поля может отсутствоватьтакие поля служат для выравнивания на аппаратную

Слайд 23Битовые поля
Следует учитывать, что операции с отдельными битами реализуются гораздо

менее эффективно, чем с байтами и словами и экономия памяти

под переменные оборачивается увеличением объема кода программы.
Битовые поляСледует учитывать, что операции с отдельными битами реализуются гораздо менее эффективно, чем с байтами и словами

Слайд 24Объединения (union)
Объединение (union) представляет собой частный случай структуры, все поля

которой располагаются по одному и тому же адресу.
Объединения применяют

для экономии памяти в тех случаях, когда известно, что больше одного поля одновременно не требуется.
Формат описания такой же, как у структуры, только вместо ключевого слова struct используется слово union.
Объединения  (union)Объединение (union) представляет собой частный случай структуры, все поля которой располагаются по одному и тому

Слайд 25О Б Ъ Е Д И Н Е Н И

Я
Длина объединения равна наибольшей из длин его полей
В каждый момент

времени в переменной типа объединение хранится только одно значение,
и ответственность за его правильное использование лежит на программисте
О Б Ъ Е Д И Н Е Н И ЯДлина объединения равна наибольшей из длин его

Слайд 26О Б Ъ Е Д И Н Е Н И

Я
#include
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;
}

Пример:

О Б Ъ Е Д И Н Е Н И Я#include int main(){   enum paytype

Слайд 27О Б Ъ Е Д И Н Е Н И

Я
Объединение может инициализироваться только значением его первого элемента
Объединение не может

содержать битовые поля

Объединение не может содержать виртуальные методы, конструкторы, деструкторы и операцию присваивания

Объединение не может входить в иерархию классов

По сравнению со структурами на объединения налагаются некоторые ограничения:

О Б Ъ Е Д И Н Е Н И ЯОбъединение может инициализироваться только значением его первого

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика