Структуры

Структура – это составной объект, в котором под одним именем объединяются элементы одного или разных типов.

Элементами структуры могут быть переменные простых типов, массивы, указатели, объединения, другие структуры. Однако элементом структуры не может быть структура того же типа, в которой он содержится, а также функции.

Структура задается в программе шаблоном вида:

struct {

список описаний элементов}

Например,

struct{

int a;

float b;

}

В структуре должен быть обязательно указан хотя бы один элемент.

С типом структуры можно ассоциировать имя. Это можно делать при помощи меток.

struct метка {

список элементов;

};

Метка – это и есть имя. И тогда к структуре можно обращаться через это имя.

Например, опишем структуру так,

struct student

{

char name[25];

int id, age;

char sex;

};

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

1) struct {

список описаний элементов} имя объекта;

Пример:

struct {

float a;

int b;

} r, t[10];

2) С использованием меток

struct метка

{

список описаний элементов;

} имя объекта 1, имя объекта 2;

Или

struct метка

{

список описаний элементов;

};

struct метка имя объекта 1, имя объекта 2;

Пример:

struct student

{

char name[25];

int age;

char sex;

}s, t[5];

Или

struct student

{

char name[25];

int age;

char sex;

};

struct student s, t[5];

Список элементов, заключаемый в { }, называется полями структуры. Доступ к отдельному полю осуществляется с помощью следующей записи:

name. title

/ \

имя структурной переменной имя поля

Пример:

struct student

{

char name[25];

int age;

char sex;

};

struct student s, t[5];

Тогда присвоить значение элементу структуры можно так

s.age=5;

Указатели и структуры

Рассмотрим на примере.

Введем структуру:

struct student

{

char name[25];

int age;

char sex;

};

Введем указатель типа student:

struct student *new_student;

Предположим что была выделена память под объект на который указывает данный указатель. Тогда на компоненты данного объекта можно ссылаться:

(*new_student).name;

(*new_student).age;

Вместо такого обращения можно использовать:

new_student - > age;


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



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