Ссылки и структуры
Ссылки
В С++ существует несколько видоизмененная форма указателя, называемая ссылкой. Ссылку можно рассматривать как указатель, который всегда разыменовывается. Для ссылки не требуется дополнительного пространства в памяти: она является просто другим именем или псевдонимом уже существующей объявленной или описанной переменной.
Формат объявления ссылки: тип & имя ссылки = выражение;
где тип — это тип величины, на которую указывает ссылка, & — оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа.
Так как ссылка есть «другое имя уже существующего объекта», то в качестве инициализирующего выражения должно выступать имя некоторого объекта уже существующего в памяти. Значением ссылки после определения с инициализацией становится адрес этого объекта.
Переменная-ссылка должна явно инициализироваться при ее описании.
Тип ссылки должен совпадать с типом величины, на которую она ссылается. Не разрешается определять указатели на ссылки, создавать массивы ссылок и ссылки на ссылки.
Операции над ссылкой приводят к изменению величины, на которую она ссылается.
Структуры
Реальные данные об объектах часто описываются величинами разных типов. Возникает необходимость хранить и обрабатывать совокупности данных различных типов, поэтому приходится использовать отдельные массивы для каждого типа, а для установления соответствия между ними вводятся соответствующие индексы. Такой подход не очень удобен и существенно усложняет написание программы. В С++ существует способ решения таких задач — использование комбинированного типа данных, который называется структурой (или структурным типом данных).
Структурный тип данных состоит из фиксированного числа компонент различного типа.
Переменная типа «структура» объявляется следующим образом:
struct <имя типа структуры>
{< тип списка 1> <список имен полей 1>;
< тип списка 2> <список имен полей 2>;
…
< тип списка k> <список имен полей k>;};
< имя типа структуры> <имя переменной>;
Опишем структуру «автомобиль», которая имеет следующие характеристики: модель, год выпуска, объем и мощность двигателя.
Struct Avto {char Model[20]; int Year; double DV; int Power;}; Avto M,V; |
// объявление типа структуры из 4 полей // модель автомобиля // год выпуска // объем двигателя // мощность двигателя // объявление переменных типа Avto |
Обращение к значению поля осуществляем с помощью составного имени, которое состоит из имени переменной типа «структура» и идентификатора поля, разделенных точкой.
Полям записи можно присваивать значения с помощью оператора присваивания.
V.Year=2010;
V.DV=1.4;
V.Power=121;
Ввод информации в структуру с клавиатуры и вывод данных из структуры осуществляется по полям.