Составной тип данных - Composite data type

В Информатика, а составной тип данных или же составной тип данных есть ли тип данных который можно построить в программе с помощью язык программирования с примитивные типы данных и другие составные типы. Иногда его называют структура или же агрегированный тип данных,[1] хотя последний термин может также относиться к массивы, списки и т. д. Акт построения составного типа известен как сочинение. Составные типы данных часто противопоставляются скалярным переменные.

Структуры и классы C / C ++

А структура является C 'песок C ++ понятие составного типа, типа данных, который составляет фиксированный набор помеченных поля или же члены. Это так называется из-за структура ключевое слово, используемое при их объявлении, что является сокращением от структура или, точнее, определяемая пользователем структура данных.[нужна цитата ]

В C ++ единственная разница между структура и учебный класс по умолчанию Уровень доступа, который частный для занятий и общественный за структурас.

Обратите внимание, что пока классы и учебный класс ключевое слово были совершенно новыми в C ++, Язык программирования C уже был грубый тип структурас. Для всех намерений и целей C ++ структураs образуют суперсет из C структураs: практически все допустимые C структураs действительны C ++ структураs с той же семантикой.

Декларация

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

Например:

структура Счет {   int номер счета;   char *имя;   char *фамилия;   плавать баланс;};

определяет тип, сослался как struct Account. Чтобы создать новую переменную этого типа, мы можем написать struct Account myAccount;который имеет целочисленный компонент, доступ к которому осуществляется myAccount.account_number, и компонент с плавающей запятой, к которому обращается myAccount.balance, так же хорошо как имя и фамилия составные части. Структура мой счет содержит все четыре значения, и все четыре поля могут быть изменены независимо.

С момента написания struct Account многократно в коде становится громоздким, нет ничего необычного в том, чтобы увидеть typedef оператор в коде C, чтобы предоставить более удобный синоним для структура.

Например:

typedef структура Счет_ {   int    номер счета;   char   *имя;   char   *фамилия;   плавать  баланс;} Счет;

В коде C ++ typedef не требуется, потому что типы, определенные с помощью структура уже являются частью обычного пространства имен, поэтому тип может называться либо struct Account или просто Счет.

В качестве другого примера, трехмерный составной тип Vector, который использует тип данных с плавающей запятой, может быть создан с помощью:

структура Вектор {  плавать Икс;  плавать у;  плавать z;};

Переменная с именем скорость с Вектор составной тип будет объявлен как Векторная скорость; Члены скорость будет доступен через точечную нотацию. Например, скорость.x = 5; установил бы Икс компонент скорость равно 5.

Точно так же цветовую структуру можно создать, используя:

структура Цвет {  беззнаковый int красный;  беззнаковый int зеленый;  беззнаковый int синий;};

В трехмерной графике вы обычно должны отслеживать положение и цвет каждой вершины. Один из способов сделать это - создать Вершина составной тип, используя ранее созданный Вектор и Цвет составные типы:

структура Вершина {  Вектор позиция;  Цвет цвет;};

Создание

Создать переменную типа struct Vertex используя тот же формат, что и раньше: Vertex v;

Доступ для членов

Присвойте значения компонентам v вот так:

v.позиция.Икс = 0.0;v.позиция.у = 1.5;v.позиция.z = 0.0;v.цвет.красный = 128;v.цвет.зеленый = 0;v.цвет.синий = 255;

Примитивный подтип

Основное использование структура предназначен для создания сложных типов данных, но иногда он используется для создания примитивов структурный подтип. Например, поскольку Стандарт C[нужна цитата ] требует, чтобы если две структуры имели одинаковые начальные поля, эти поля были представлены одинаково, код

структура ifoo_old_stub {   длинный Икс, у;};структура ifoo_version_42 {   длинный Икс, у, z;   char *имя;   длинный а, б, c;};пустота operation_on_ifoo(структура ifoo_old_stub *);структура ifoo_version_42 s;. . .operation_on_ifoo(&s);

будет работать правильно.

Подпись типа

Типовые подписи (или же Типы функций ) построены из примитивных и составных типов и могут сами служить типами при построении составных типов:

typedef структура {    int Икс;    int у;} Точка;typedef двойной (*Метрическая) (Точка p1, Точка p2);typedef структура {    Точка центр;    двойной радиус;    Метрическая метрика;} Круг;

Смотрите также

Рекомендации

  1. ^ Хау, Денис. "Бесплатный он-лайн словарь по вычислительной технике". Dictionary.com. Получено 1 февраля 2016.