КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Решение. Операции над структурами
Решение Операции над структурами Инициализация структур Обращение к полям структуры Для обращения к отдельным полям структуры в языке Си служат два оператора: ·. · -> Оператор. используется в том случае, когда известна переменная, имеющая тип структуры. Оператор -> при работе со структурой через указатель. Оба оператора относится к категории бинарных операторов. Эти операторы имеют следующий формат: · <α1>. <b>. · <α2> -> <b>. Здесь α1 – переменная, имеющая тип структуры, α2 – указатель, установленный на объект типа структуры, а b - поле структуры. Важно отметить, что результат вычисления рассматриваемых выражений имеет все свойства своего правого операнда. К ним относятся значение и тип результата. Рассмотрим следующий пример. Пусть имеется следующий программный код. #define MLEN 81 struct person_salary { char fio[MLEN]; double salary; }; //… struct person_salary employee; struct person_salary* p = &employee; Тогда можно написать следующий программный код, содержащий обращения к полям объекта employee. strcpy(employee.fio, “Petrov Ivan Ivanovich”); puts(p->fio); p->salary = 10000; printf(“%10.3f\n”, employee.salary);
Структура может быть инициализирована во время своего определения. Ограничимся примером. #define MLEN 81 struct person_salary { char fio[MLEN]; double salary; };
int main(void) { struct person_salary new_person = { “Ivanov I.I”, }; // … } Со структурой как со структурной переменной можно выполнять следующие операции: · присваивание, · передавать в функцию по значению, · передавать в функцию с использованием указателя, · структуру можно использовать как значение, возвращаемое функцией. Остальные операции со структурами выполняются по компонентно. Пример 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”, };
struct person_salary person2 = { “Petrov P.P”,
}; 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 int main(void) struct person_salary form_struct(const char* fio, double
Пример 3. Использование указателей для передачи структур в качестве аргументов функций. Постановка задачи. Выполнить обмен значений двух структур. Решение #define MLEN 81 struct person_salary { char fio[MLEN]; double salary; };
void swap_struct(struct person_salary* p1, int main(void) swap_struct(&person1, &person2); void swap_struct(struct person_salary* p1,
Дата добавления: 2014-01-06; Просмотров: 328; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |