Главная

Популярная публикация

Научная публикация

Случайная публикация

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

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






типы определяемые программистом.




Переименование типов

typedef unsigned int unit;

typedef char Msg[10];

unit I,j;

Msg str[10];

Перечисление.

Перечисляемый тип данных определятся списком целочисленных констант.

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

enum err {err_read, err_write, err_convert}

err error = err_read;

 

switch(error)

{

case err_read: break;

}

 

другой пример

enum { two =2, three, four, ten = 10, eleven};

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

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

При выполнении арифметических операций константы рассматриваются, как целочисленные.

т. к. перечислимый тип определяется программистом, то можно вводить собственные операции.

Структуры

Структура — совокупность разнотипных данных, объединенных одним

"struct"[имя] "{"тип1 элемент1; тип2 элемент2;... "}" [список описателей];

 

//primer

struct worker{

char fio[30];

int date, code;

double celery;

};

worker staff[100], *ps;

 

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

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

Например

struct list;

struct link

{

list *p;

link *prew, *succ;

}

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

 

struct

{

char fio[30];

int date, code;

double celery;

}

worker = {"ivanov",31,215,312.60}

return 0;

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

struct complex

{

float real, im;

};

complex[2][3]={

{{1,1},{ и т.д.}

}

для переменных одного и того же типа определена операция присваивания.

доступ к полям структуры определяется с помощью операции выбора.

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

Например

struct A {int a; double x;};

struct B {A a; doble x;};

x[2];

x[0].a.a = 1;

x[1].x = 0.1;

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

Особый вид полей структуры — битовые поля.

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

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

Пример

struct Options

{

bool centerX: 1;

bool centerY: 1;

unsigned int shadow: 2;

unsigned int palette: 4;

}

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

Объединения

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

Длина объединения равна наибольшей из длин полей.

В каждый момент времени переменная типа union содержит одно значение.

#include <iostream>

using namespace std;

 

int main()

{enum paytype (card, check);

paytype ptype;

union payment;

{char card[25];

long check;

} info:

switch(ptype)

{

case card: cout <<"Oplata" << info.card; break;

case check:

и т.д.

Объединение можно использовать в качестве поля структуры, при этом следует добавить еще одно поле, которое определяет какое именно элемент объединения используется в данный момент

Пример

#include <iostream>

using namespace std;

 

int main()

{

enum paytype{card, check};

struct

{paytype ptype;

union

{char card[25];

long check;

};

} info;

//...

switch(info.ptype)

{case card: cout <<"Oplata po karte" <<info.card; break;

case check: cout << "oplata chekom "<< info.check; break;

}

return 0;

}

на объединение налагаются следующие ограничения

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

2. объединение не может содержать битовые поля.

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

4. не может входить в иерархию классов

 

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных