Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемjofr.ru
1 Лекция 10 Структуры
2 Классификация типов данных Простые Целые, вещественные, void, перечисления Являются атомарными не состоят из других типов Адресные Указатели, массивы, ссылки Порождаются другими типами Составные Структуры, объединения Состоят из данных других типов
3 Задача составных типов Представление свойств сущности Пример: Животное Кличка Тип Порода Группировка различных данных в одной переменной Пример: Точка на плоскости: координата по x координата по y цвет
4 Структуры vs массивы Массив Последовательность однотипных данных Структура Последовательность разнотипных данных
5 Задание структуры Объявление структуры Определение структуры Безымянные структуры struct Point ; struct Point { int x ; int y ; }; struct Point { int x ; int y ; }; struct { int head ; int tail ; }; struct { int head ; int tail ; };
6 Правила определения структур Общепринято задание вне функций Применение локальных структур очень ограниченно и никогда не используется. Задают тип, а не переменную Чтобы обратиться к данным, необходимо иметь переменную данного типа Данные хранятся в порядке указания Порядок объявления данных определяет порядок создания и размещения данных в памяти
7 Использование структур (POD) Создание переменной Инициализация Обращение к полям Point p1 ; Point p2 ; Point p1 ; Point p2 ; p1.x = 4 ; p2.x = 3 ; p2.y = p1.y = 8 ; p1 = p2 ; p1.x = 4 ; p2.x = 3 ; p2.y = p1.y = 8 ; p1 = p2 ; Point p3 = { 3, 8 }; Point p4 = { 7, 1 }; Point p3 = { 3, 8 }; Point p4 = { 7, 1 };
8 Пример struct Point { int x ; int y ; }; int crossProduct ( Point const & a, Point const & b ) { return a.x * b.x + a.y * b.y ; } void main () { Point pts[3]={{0,0},{1,1},{2,2}}; bool acute = true ; for ( int i = 0 ; i < 3; ++i ) if ( crossProduct( pts[i], pts[(i+1)%3] ) ) acute = false ; } struct Point { int x ; int y ; }; int crossProduct ( Point const & a, Point const & b ) { return a.x * b.x + a.y * b.y ; } void main () { Point pts[3]={{0,0},{1,1},{2,2}}; bool acute = true ; for ( int i = 0 ; i < 3; ++i ) if ( crossProduct( pts[i], pts[(i+1)%3] ) ) acute = false ; }
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.