Тип структура в Си

Этот тип является аналогом типа “запись” в 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;

Обе ссылочные переменные ссылаются на одну и ту же область памяти.


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



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