Ссылки и структуры

 Ссылки

В С++ существует несколько видоизмененная форма указателя, называемая ссылкой. Ссылку можно рассматривать как указатель, который всегда разыменовывается. Для ссылки не требуется дополнительного пространства в памяти: она является просто другим именем или псевдонимом уже существующей объявленной или описанной переменной.

Формат объявления ссылки: тип & имя ссылки = выражение;

где тип — это тип величины, на которую указывает ссылка, & — оператор ссылки, означающий, что следующее за ним имя является именем переменной ссылочного типа.

Так как ссылка есть «другое имя уже существующего объекта», то в качестве инициализирующего выражения должно выступать имя некоторого объекта уже существующего в памяти. Значением ссылки после определения с инициализацией становится адрес этого объекта.

Переменная-ссылка должна явно инициализироваться при ее описании.

Тип ссылки должен совпадать с типом величины, на которую она ссылается. Не разрешается определять указатели на ссылки, создавать массивы ссылок и ссылки на ссылки.

Операции над ссылкой приводят к изменению величины, на которую она ссылается.

 Структуры

Реальные данные об объектах часто описываются величинами разных типов. Возникает необходимость хранить и обрабатывать совокупности данных различных типов, поэтому приходится использовать отдельные массивы для каждого типа, а для установления соответствия между ними вводятся соответствующие индексы. Такой подход не очень удобен и существенно усложняет написание программы. В С++ существует способ решения таких задач — использование комбинированного типа данных, который называется структурой (или структурным типом данных).

Структурный тип данных состоит из фиксированного числа компонент различного типа.

Переменная типа «структура» объявляется следующим образом:

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;

Ввод информации в структуру с клавиатуры и вывод данных из структуры осуществляется по полям.

Лабораторная работа №18