Главная » Статьи » Программирование » С++ |
Структуры
Структуры – формат данных в С++, благодаря которому можно объединить различные, но логически связанные типы данных под одним именем. В этом отношении структуры очень похожи на массивы, однако последние не могут объединять в себе переменные разных типов. Структуры считаются чисто пользовательским элементом составных типов данных. Объявление структур происходит при помощи слова struct: struct идентификатор {элементы (или поля) структуры}; Идентификатор в С++ определяет полностью тип структуры, поэтому может использоваться как имя типа создаваемых переменных-экземпляров структуры.
struct brows //описание типа
{
int bar; //элемент типа int
char joy (4); //элемент типа char
double zip; //элемент типа double
}best_br, worse_br; //экземпляры структуры
Тип этой структуры определяется ее именем brows. Компоненты best_br и worse_br считаются ее экземплярами. При этом элементы структуры, заключенные в фигурные скобки, копируются в экземпляры структуры и являются независимыми от копий других экземпляров, поэтому изменять их можно безболезненно. Каждый элемент объявления считается оператором, а поэтому записывается с точкой с запятой. Создание переменных типа brows происходит также следующим образом:
brows key; //переменная key, тип которой brows, представляющая собой структуру key
Обращение к элементам структуры происходит через оператор принадлежности, представляющий собой точку ' . ', поэтому, чтобы обратиться через переменную key к элементу bar, следует создать запись вида:
key.bar; - при этом этот элемент имеет тип int, хотя key – это структура.
key.bar=3; - инициализация элемента int bar структуры;
Инициализация структуры происходит следующим образом:
brows key =
{
3,
«name»,
3.00
};
а можно записать и так (в одну строчку):
brows key = { 3, «name», 3.00};
Объявление структуры может быть внешним – вне скобок функции main(), тогда структура примет вид шаблона, который можно применять в разных функциях. Если же ее объявить лишь в скобках main(), то и применить ее можно будет лишь только в области видимости этой функции.Структуры можно присваивать другим структурам того же типа. Структуры можно передавать в виде значений в функции, а можно делать и возвращаемыми значениями функций. Кроме того, можно создавать целые массивы структур.
Структуры могут также принимать динамический вид. При этом для создания динамической структуры типа brows потребуется оператор new для выделения области памяти под структуру, а также указатель на создаваемую тип структуры.
brows *pt = new brows;
Создавая динамическую структуру, уже нельзя обращаться к элементам структуры через оператор принадлежности в виде точки. В этом случае обращение идет через оператор принадлежности в виде стрелочки ->. Если указатель на структуру brows принимает вид:
brows *pt = &key;
тогда можно использовать следующую запись для обращения к элементу структуры brows
pt ->bar;
или же:
key.bar;
еще один метод доступа к элементу:
(*pt).bar;
| |
Просмотров: 1018 | | |
Всего комментариев: 0 | |