Составной тип данных - Composite data type
Эта статья нужны дополнительные цитаты для проверка.Май 2016) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В Информатика, а составной тип данных или же составной тип данных есть ли тип данных который можно построить в программе с помощью язык программирования с примитивные типы данных и другие составные типы. Иногда его называют структура или же агрегированный тип данных,[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 структура { Точка центр; двойной радиус; Метрическая метрика;} Круг;
Смотрите также
Рекомендации
- ^ Хау, Денис. "Бесплатный он-лайн словарь по вычислительной технике". Dictionary.com. Получено 1 февраля 2016.