Работа со структурой

Доступ к отдельным полям структуры осуществляется с помощью операции “.” (“точка”). При этом сначала записывается имя структурной переменной (но не типа!), а затем через “точку” — имя поля структуры. Например, ввод массива arr выполняется следующим образом: for (int i=0; i<12; i++) cin>>S1.arr[i]; а оператор gets(S1.name); вводит поле с наименованием. Оператор S1.Par=12.3; полю Par структурной переменной S1 присваивает значение 12.3.

Присваивание структур является одним из преимуществ рассматриваемого типа. Информация, содержащаяся в одной структуре, может быть присвоена другой структуре с помощью одиночного оператора присваивания. Например, оператор S2=S1; копирует все поля (строковую переменную, 12 элементов массива и вещественную переменную) переменной S1 в переменную S2.

При объявлении структуры можно инициализировать её элементы. Например tPoint P2={1.1, 2.2, 0.3};

1.3. Вложенные структуры и статические массивы в структурах

В качестве поля структуры можно использовать переменную другого ранее определённого структурного типа. В таком случае говорят о вложенных структурах. Например, сначала определим структуру для координат одной точки плоскости:

struct tpoint2 { float x; float y; };

В другой структуре определим координаты центра и радиус окружности:

struct tcircle { tpoint2 senter; float rad;

} MyCircle;

Тогда для ввода координат центра окружности надо выполнить следующий оператор:

cin >> MyCircle.senter.x>> MyCircle.senter.y;

То есть доступ к полям вложенной структуры осуществляется с помощью нескольких операций “точка”.

Полем структуры может быть одномерный или двумерный массивы фиксированной размерности. Пример объявления и доступ к такому полю показан в структуре tstr1(см. 1.1).

Статический массив структур

Для объявления массива структур желательно сначала определить структурный тип, а затем объявляем массив переменных данного типа. Например, массив из 10 точек структуры типа tpoint2(см. 1.3) объявляем следующим образом:

const n=10; tpoint2 ArrPoints[n];

Такой массив в памяти занимает (4+4)*n= 80 байт. Доступ к полям каждого элемента массива, например, ввод координат точек, осуществляется так:

for (int k=0; k<10; k++)

cin>>ArrPoints [k].x>> ArrPoints [k].y;

Для массива, объявленного

const n=10; tstr1 AS[n];,

доступ к его элементам и полям осуществляется, например, следующим образом:

a) AS[i].Par=1.2; — полю Par i -го элемента массива структур присваивается значение 1.2 (i=0,1,…,n-1);

b) int Sum=0; for (int j=0; j<12; j++) Sum+=AS[0].arr[j]; — суммирование всех 12-ти элементов массива arr (поля структуры) 0-го элемента массива структур AS


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: