logo
OAiP_shporka

50. Инициализация и доступ к элементам структуры.

К примеру – представьте ОДНУ переменную, которая бы в себе несла информацию об имени, фамилии, дате рождения, месту жительства, номере телефона конкретного человека. Эта переменная есть ни что иное, как переменная пользовательского типа: ее создал пользователь, т.е. программист. По отдельности, каждое из вышеперечисленных данных можно занести в соответствующую перемену, а набор этих переменных – и есть структура! Итак, структура – это пользовательский тип данных, который может содержать в себе переменные различных типов. Массив же мог состоять из элементов, имеющих один тип данных (при. – массив целых чисел).

Структура с вышеперечисленными полями (имя, фамилия, дата рождения, место жительства, номер телефона) будет выглядеть в языке С так:

struct person

{

char firstName[20];

char secondName[20];

int birthYear;

int birthMonth;

int birthDay;

unsigned phone;

};

Точка с запятой после закрывающейся фигурной скобки обязательна.

Слово, следующее за ключевым словом struct является именем структуры, и его можно использовать для создания объектов:

person man1, man2;

person list[20];

Здесь создается 2 объекта структуры – man1 и man2, а также массив из 20 объектов типа person.

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

person man;

man.birthYear=1978;

man.birthMonth=9;

man.birthDay=28;

man.phone=325658;

man.firstName=”Name”;

man.secondName=”Surname”;

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

Инициализировать объект структуры можно с использованием списка инициализации – как в массиве, однако необходимо четко соблюдать порядок инициализируемых значений. Они должны следовать в том порядке, в котором объявлены в самой структуре:

person man=(“Name”, “Surname”, 1978,9,28, 325658);