Составной тип данных - 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.