![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Билет №13 Тип данных - структура. Инициализации элементов структуры. ⇐ ПредыдущаяСтр 2 из 2
Структура – это множество разнотипных переменных с общим именем, доступ к которым осуществляется по имени. Структура – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа. Определение структурированного типа: struct < имя> {тип Имя поля; … тип Имя поля; }; Единственная операция, которую можно произвести над однотипными записями – это присваивание. Все другие операции производятся над отдельными полями записи. man C, D [20], * p; // Структурированная переменная C, массив переменных D и указатель p man * create() {... } // Функция возвращает указатель на структуру void f(man * q) {... } // Функция получает параметр - указатель на структуру Инициализация элементов структуры, присваивание структур: man A = { " Петров", 1, 10, 1969, " Морская-12" }; man X[10] = { { " Смирнов", 12, 12, 1977, " Дачная-13" }, { " Иванов", 21, 03, 1945, " Северная-21" }, {.................................. } }; Пример: void FF(man X){ …} void main(){ man A, B[10], *p; A = B[4]; // Прямое присваивание структур p = & A; // Присваивание через косвенное обращение по указателю B[0] = *p; // B[0]=A FF(A); } // Присваивание при передаче по значению X=A
Билет №14 Тип данных - объединение, назначение и использование. Объединение (англ. union) — структура данных, члены которой расположены по одному и тому же адресу. Размер объединения равен размеру его наибольшего члена. Описание объединения: union Размер структуры – 4 байта. Программа: int main() union { value=100500; cout< < " value" < < value< < “\n”; for (unsigned char i=0; i < intSize; i++) { cout< < " char[" < < i< < " ]=" < < (int)chars[i]< < “\n”; //выводим по отдельности все байты числа (в десятичном виде) } return 0; Результат: value=100500 Пример: Обновление переменных управляющей программы и отображение текущей координаты на форме Обновление x в структуре объединения (n ключ) 2 обновить - 2 младших байта первого элемента массива 3 обновить - 2 старших байта первого элемента массива 4 обновить - 2 младших байта второго элемента массива 5 обновить - 2 старших байта второго элемента массива 6 обновить - 2 младших байта третьего элемента массива 7 обновить - 2 старших байта третьего элемента массива union XU { int x; short ix[2]; }; XU xx[3]; - член класса MyFrame void MyFrame:: UpdateX(int n, int val); //работа с координатами обновление xx[i].x { switch (n) { case 2: {xx[0].ix[0]=(short)val; break; } case 4: {xx[1].ix[0]=(short)val; break; } case 6: {xx[2].ix[0]=(short)val; break; } case 3: {xx[0].ix[1]=(short)val; break; } case 5: {xx[1].ix[1]=(short)val; break; } case 7: {xx[2].ix[1]=(short)val; break; } } }
|