Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Билет №13 Тип данных - структура. Инициализации элементов структуры.






Структура – это множество разнотипных переменных с общим именем, доступ к которым осуществляется по имени.

Структура – структурированный комбинированный тип данных, состоящий из фиксированного числа компонент (полей) разного типа.

Определение структурированного типа:

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
{
int value; //само число
unsigned char chars[4]; //байты числа
};

Размер структуры – 4 байта.

Программа:

int main()
{const unsigned char intSize=sizeof(int); //размер инта

union {
int value; //само число
unsigned char chars[intSize]; };

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
char[0]=148
char[1]=136
char[2]=1
char[3]=0

Пример: Обновление переменных управляющей программы и отображение текущей координаты на форме

Обновление 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; }

}

}

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.