 
        
        7.5 Указатели на структуры
Если структурная переменная (или массив) является динамической или передаётся в функцию по адресу (через указатель), то возникает необходимость добраться до полей через указатель. Для этого можно использовать два способа:
1) доступ с помощью операций «разадресация» и «точка». Этот способ использовался в языке С: (*Указатель) . ИмяПоля
Скобки здесь стоят для того, чтобы повысить приоритет операции *.
2) доступ с помощью операции «стрелка», которая появилась в языке С++:
Указатель -> ИмяПоля
И в том, и в другом случае мы получим значение поля.
Если же нам необходим адрес поля, то необходимо использовать операцию «взятия адреса»:
&(*Указатель) . ИмяПоля или &(Указатель -> ИмяПоля).
Покажем на простом примере работу с полями динамической структурной переменной:
#include <stdio.h>
struct MyType {
float A;
double B;
int C[2];
};
void main()
{
MyType *Ptr; // объявление указателя
Ptr = new MyType; // создание динамической структурной переменной
(*Ptr).A = 0.5; // доступ к полю A 1-м способом
Ptr->B = 3.5; // доступ к полю B 2-м способом
}
Если необходимо получить доступ к полям динамического массива структур, то используется операция «индексации» указателя Ptr[i], как и для обычного динамического массива, например:
void main()
{
MyType *Ptr; // объявление указателя
printf ( " N = " );
scanf ( "%d", &N );
Ptr = new MyType [N]; // создание динамического массива структур
for( int i = 0; i < N; i++ ) // блок ввода массива структур
{
scanf ( " %f ", &(Ptr[i].A) );
scanf ( " %lf ", &(Ptr[i].B) );
for( int j = 0; j < 2; j++ )
scanf ( " %d ", &(Ptr[i].C[j]) );
}
}
7.6 Передача информации о структурах функциям
