Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_по_пяву_4.doc
Скачиваний:
101
Добавлен:
15.03.2015
Размер:
1.29 Mб
Скачать
    1. Инициализация структур

Структура может быть инициализирована во время своего определения. Ограничимся примером.

#define MLEN 81

struct person_salary

{

char fio[MLEN];

double salary;

};

int main(void)

{

struct person_salary new_person = {

“Ivanov I.I”,

25000

};

// …

}

    1. Операции над структурами

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

  • присваивание,

  • передавать в функцию по значению,

  • передавать в функцию с использованием указателя,

  • структуру можно использовать как значение, возвращаемое функцией.

Остальные операции со структурами выполняются по компонентно.

Пример 1.Присваивание структур.

Постановка задачи. Имеются две структурыperson1 иperson2. Требуется скопировать поля структурыperson1 в структуруperson2.

Решение

#define MLEN 81

struct person_salary

{

char fio[MLEN];

double salary;

};

int main(void)

{

struct person_salary person1 = {

“Ivanov I.I”,

25000

};

struct person_salary person2 = {

“Petrov P.P”,

17000

};

person2 = peson1;

// …

}

После выполнения этого фрагмента программного кода все поля структуры person1 оказались скопированными в структуруperson2.

Пример 2. Возврат функцией значения типа структуры.

Постановка задачи.Заданы значения полей. Требуется сформировать структуру (построить структурную переменную) структуру.

Решение

#define MLEN 81

struct person_salary

{

char fio[MLEN];

double salary;

};

// Прототип функции, которая формирует структуру

struct person_salary form_struct(const char* fio, double salary); int main(void) { struct person_salary = form_struct(“Petrov P.P.”, 20000); //… } struct person_salary form_struct(const char* fio, double salary) { struct person_salary temp; strcpy(temp.fio, fio); temp.salary = salary; return temp; }

Пример 3. Использование указателей для передачи структур в качестве аргументов функций.

Постановка задачи. Выполнить обмен значений двух структур.

Решение

#define MLEN 81

struct person_salary

{

char fio[MLEN];

double salary;

};

void swap_struct(struct person_salary* p1, struct person_salary* p2); int main(void) { struct person_salary person1, person2; //…

swap_struct(&person1, &person2); //… } void swap_struct(struct person_salary* p1, struct person_salary* p2) { struct person_salary temp = *p1; *p1 = *p2; *p2 = temp; }

    1. Массивы структур

Массивы структур широко используются на практике.

      1. Объявление массива структур

При определении массива структур используются обычные правила определения массивов:

<α> <>[<γ>];

Здесь α – имя типа элементов, - имя массива, γ – размер массива.

Приведем пример.

#define MLEN 81 #define MSIZE 20 struct person_salary

{

char fio[MLEN];

double salary;

};

struct person_salary ar[MSIZE]; // … }

Здесь объявлен массив структур. В массиве можно хранить до 20 структур, имеющих тип structperson_salary.