Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпори частина 2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
656.84 Кб
Скачать
  1. Структури. Оголошення та ініціалізація. Розміщення у пам’яті. Приклади.

Структура - це складовою об'єкт, до якого входять елементи будь-яких типів, за винятком функцій. На відміну від масиву, який є однорідним об'єктом, структура може бути неоднорідною. Тип структури визначається записом види: struct (список визначень) У структурі обов'язково повинен бути вказаний хоча б один компонент. Визначення структур має такий вигляд: тип-даних описувач; де тип-даних вказує тип структури для об'єктів, що визначаються у описувача. У простій формі Описувачі є ідентифікатори або масиви. Приклад:

struct { double x,y; } s1, s2, sm[9];

struct { int year;

char moth, day; } date1, date2;

Змінні s1, s2 визначаються як структури, кожна з яких складається з двох компонент х та у. Змінна sm визначається як масив з дев'яти структур. Кожна з двох змінних date1, date2 складається з трьох компонентів year, moth, day. > p> Існує й інший спосіб асоціювання імені з типом структури, він заснований на використанні тега структури. Тег структури аналогічний тегу перечіслімого типу. Тег структури визначається наступним чином: struct тег (список описів;); де тег є ідентифікатором. У наведеному нижче прикладі ідентифікатор student описується як тег структури:

struct student { char name[25];

int id, age;

char prp; };

Тег структури використовується для подальшого оголошення структур даного виду у формі: struct тег список-ідентифікаторів; Приклад: struct studeut st1, st2; Використання тегів структури необхідно для опису рекурсивних структур. Нижче розглядається використання рекурсивних тегів структури.          struct node (int data;                       struct node * next;) st1_node; Тег структури node дійсно є рекурсивним, так як він використовується у своєму власному описі, тобто у формалізації вказівника next. Структури не можуть бути прямо рекурсивними, тобто структура node не може містити компонент, що є структурою node, але будь-яка структура може мати компоненту, яка є покажчиком на свій тип, як і зроблено у наведеному прикладі. Доступ до компонентів структури здійснюється за допомогою вказівки імені структури і проходить через точку імені виділеного компонента, наприклад:           st1.name = "Іванов";           st2.id = st1.id;           st1_node.data = st1.age;

  1. Структури. Вкладені структури. Доступ до полів структур, вкладених структур. Приклади.

Структура може бути елементом структури іншого типу. При цьому вкладення структур однакового типу не допускається. Наприклад, структуру, що містить дані про студента, можна представити в наступному виді.  Вкладені структури #include <iostream.h>  int main()  {  // Дата надходження struct Date  {  unsigned int day;  unsigned int month;  unsigned int year;  };  // Персональні дані struct Personal  {  char* surname;  char* name;  double score;  };  struct Record  {  struct Date a;  struct Personal b;  } record={{1,9,2003}, {"Іванов","Іван",4.8}};  cout « record.a.day « "."  « record.a.month « "."  « record.a.year « " "  « record.b.surname « " "  « record.b.name « ": "  « record.b.score;  return 0;  }  На екран виводиться наступна рядок.  1.9.2003 Іванов Іван: 4.8  Зверніть увагу на те, що ініціалізувати екземпляр структури Record екземплярами структур Date і Personal неможливо. Таким чином, ініціалізація наступного виду неможлива.  struct Data  {  unsigned int day;  unsigned int month;  unsigned int year;  }data = {1, 9, 2003};  struct Personal  {  char* surname;  char* name;  double score;  }personal = {"Іванов", "Іван", 4.8};  struct Record  {  struct Data a;  struct Time b;  } record={Date, Personal}}; // Помилка

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]