Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C.doc
Скачиваний:
29
Добавлен:
08.05.2015
Размер:
1.17 Mб
Скачать

Структуры и определения типов пользователя

Структура - это объединение элементов различного типа.

Общая форма описания:

struct <тег или список>

{

элементы структуры

. . .

}

<список символических имен>;

Здесь тег или список символических имен может отсутствовать.

Примечание: Можно также описать тип, являющийся типом структуры или одного из стандартных типов. Это можно сделать следующим образом:

typedef struct

{

элементы структуры

. . .

}

<тег или список>;

или

typedef <один из стандартных типов> <тег или список>;

В качестве элементов списка здесь могут быть использованы указатели.

Примеры:

1. Описание типа экрана

a.

typedef struct

{

int x_min,x_max; /* измерения экрана по горизонтали */

int y_min,y_max; /* измерения экрана по вертикали */

unsigned char color; /* цветной экран или нет (1/0) */

int x_cur,y_cur; /* положение курсора на экране */

int f_cur; /* форма курсора (его тип) */

} screen;

. . .

screen a,b,c;/* описание объектов типа структуры экрана */

. . .

б.

struct screen

{

int x_min,x_max; /* измерения экрана по горизонтали */

int y_min,y_max; /* измерения экрана по вертикали */

unsigned char color; /* цветной экран или нет (1/0) */

int x_cur,y_cur; /* положение курсора на экране */

int f_cur; /* форма курсора (его тип) */

} a,b,c; /* описание объектов типа структуры экрана */

в.

struct

{

int x_min,x_max; /* измерения экрана по горизонтали */

int y_min,y_max; /* измерения экрана по вертикали */

unsigned char color; /* цветной экран или нет (1/0) */

int x_cur,y_cur; /* положение курсора на экране */

int f_cur; /* форма курсора (его тип) */

} a,b,c; /* описание объектов типа структуры экрана */

г.

struct screen

{

int x_min,x_max; /* измерения экрана по горизонтали */

int y_min,y_max; /* измерения экрана по вертикали */

unsigned char color; /* цветной экран или нет (1/0) */

int x_cur,y_cur; /* положение курсора на экране */

int f_cur; /* форма курсора (его тип) */

} ;

. . .

/* описание объектов типа структуры экрана */

struct screen a,b,c;

2. Описание типа части записи базы данных по студентам

struct student

{

char family[30]; /* фамилия */

char name[30]; /* имя */

char name_fat[30]; /* отчество */

int year_r; /* год рождения */

char mp[60]; /* место постоянного проживания */

char mr[60]; /* место проживания */

int year_b; /* год поступления */

int n_gr_b; /* номер группы поступления */

char fakultet_b[30]; /* название факультета поступления */

int year_g; /* год начала учебы группы */

int n_gr; /* номер группы */

char fakultet[30]; /* название факультета */

} a5;

3. Описание своего типа

typedef unsigned long u_long; /*тип u_long-unsigned long*/

. . .

u_long x,y,z; /* описание объектов типа u_long */

. . .

Можно также описывать указатели на структуру. При этом обычным образом перед символическим именем объекта ставится *. Инициализируется указатель на структуру оператором присваивания, где в левой части стоит символическое имя объекта, а в правой части - адрес. Например:

struct screen

{

int x_min,x_max; /* измерения экрана по горизонтали */

int y_min,y_max; /* измерения экрана по вертикали */

unsigned char color; /* цветной экран или нет (1/0) */

int x_cur,y_cur; /* положение курсора на экране */

int f_cur; /* форма курсора (его тип) */

} *a,b;

. . .

a=. . .

. . .

При обращении к элементам структуры указывается символическое имя объекта, далее ставится . (в случае, когда описан указатель на структуру, ставится ->). Потом указывается элемент структуры и, если этот элемент является массивом, индексы в квадратных скобках.

Например, для обращения к элементу color объекта с символическим именем b, мы должны использовать b.color, а при обращении к тому же элементу объекта с символическим именем а a->color

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]