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

Из объявления tst *arSd; ещё не видно, будет создан указатель на одну структуру или динамический массив структур. Это зависит от того, как будет проинициализирован этот указатель. Если, как в предыдущем пункте, выполнить операцию arSd=new tst; то будет создан указатель на одну структуру.

С помощью этой же операции new можно выделить память для динамического массива структур. Это выполняется следующим образом:

int n; cin>>n; // или const n=5;

arSd=new tst[n];

Адрес начала массива структур присваивается переменной указателю arSd. Доступ к полям i – й структуры осуществляется следующим образом:

for (int i=0; i<n;i++)

{ arSd [i].m=random(5)+1;

arSd [i].ard=new float [arSd [i].m];

for (int j=0; j< arSd [i].m; j++)

cin>>(arSd [i].ard[j]);

}

Здесь и массив структур arSd, и массив в структуре ard динамические.

Ссылка на структуру.

Для структур, как и для простых переменных, можно использовать ссылочный тип. Например, tst &SS1=S1; При этом ссылка на структуру должна быть проинициализирована другой ранее объявленной переменной такого же структурного типа, но не указателем.

По аналогии с простыми переменными после такого объявления SS1 и S1 — это два альтернативных имена (синонимы) одной и той же переменной структурного типа. Поэтому если мы изменим какое-нибудь поле в структуре S1, то этим самым изменится и это же поле в структуре SS1. Например, если выполнить

S1.per=20; cout<<(SS1.per);

то выведем число 20, несмотря на то, что SS1.per мы явно, казалось бы, не меняли.


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



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