Этот тип является аналогом типа “запись” в Turbo Pascal. Позволяет объединить данные различных типов.
<тип структура> ≡ struct
{
<резерв. пам.>;
{ <резерв. пам.>; }
}
Компоненты этого типа называются членами структуры.
Описание переменной с типом <структура>:
Сначала определяется идентификатор типа <структура>, затем описываются переменные с использованием этого идентификатора.
<определение типа пользователя> ≡ typedef <тип><идент. типа>
Пример:
typedef struct
{
char F[15], I[15], O[15];
int B[4];
float SB;
}
rez;
rez GR [25];
GR[5].F //Фамилия 6-го студента группы//
GR[5].B[1] //Оценка этого студента на втором экзамене//
Ввод фамилии, имени и отчества можно организовать с помощью оператора cin, т.к. эти переменные не будут содержать пробелов.
Тип указатель.
Программные объекты, которые порождаются с помощью соответствующих описаний называются статическими. Память за ними закрепляется на все время работы программы.
Данные, созданием и уничтожением которых управляет сам программист, внутренне строение которых формируется по особому закону, но количество, взаимное расположение и взаимосвязи которых могут изменяться в процессе выполнения программы, называются динамическими.
|
|
При объявлении данных динамической структуры в разделе описания указывается не сама переменная, а только ссылка на нее. Такая организация данных позволяет динамически занимать и освобождать память в процессе работы блока программы.
Это осуществляется с помощью типа указателя.
Синтаксис:
typedef <тип >* <тип указатель>;
<тип указатель> <идентификатор>;
Над указателями выполняются следующие простейшие действия:
Объявление переменной
int *p;
char *s;
Выделение области памяти
Это осуществляется с помощью процедуры new, она выделяет область памяти из области «куча» соответствующий тому типу, который описан для указателя и записывает ее адрес в указатель.
p=new float;
Операция взятия указателя
Для этого служит унарная операция ”&”.
int *p;
int n;
…
p=&n;
Операция &n даст адрес величины n и в программе его значение будет присвоено указателю p.
Занесение информации
*p:=1;
*n:=2;
Операция сравнения
if (p!=NULL)
…
Копирование информации
*p=*n;
В область памяти одной переменной заносится значение, хранившееся в другой.
Копирование адреса
p=n;
Обе ссылочные переменные ссылаются на одну и ту же область памяти.