2 00:00:00,000 --> 00:00:02,760 >> Виступаючий 1: Давайте напишемо програму, яка запитує у користувача імена і 3 00:00:02,760 --> 00:00:04,700 будинку трьох студентів. 4 00:00:04,700 --> 00:00:08,840 Тепер, щоб зберегти ці імена і вдома ми могли б використовувати, що, шість змінних. 5 00:00:08,840 --> 00:00:12,260 Три рядки для імен, а інший три рядки для будинків, 6 00:00:12,260 --> 00:00:16,560 але ми вже знаємо, що ми можемо очистити що код по замість використання масивів, 7 00:00:16,560 --> 00:00:20,220 наприклад масив розміру 3 для три імені, а інший масив 8 00:00:20,220 --> 00:00:22,110 Розмір 3 для будинків. 9 00:00:22,110 --> 00:00:25,870 Але, виявляється, ми можемо очистити це ще далі, і насправді тримати тих, 10 00:00:25,870 --> 00:00:30,520 імена і вдома разом, так що Ім'я студента і його або її будинок 11 00:00:30,520 --> 00:00:34,940 якось інкапсульовані, так сказати, в тій же змінної. 12 00:00:34,940 --> 00:00:39,095 >> Щоб зробити це, тим не менш, ми повинні оголосити наш власний тип даних, наш власний тип в C, 13 00:00:39,095 --> 00:00:42,660 що автори С не обов'язково думаю років тому. 14 00:00:42,660 --> 00:00:45,630 Для цього ми можемо використовувати ключове слово ЬурейеЕ, поряд з 15 00:00:45,630 --> 00:00:47,200 інша структура ключовими словами. 16 00:00:47,200 --> 00:00:48,160 Давайте поглянемо. 17 00:00:48,160 --> 00:00:50,650 Усередині structs.h, я вже отримали розпочата 18 00:00:50,650 --> 00:00:52,560 включаючи бібліотеку CS50. 19 00:00:52,560 --> 00:00:57,640 Я поруч збираються ввести ЬурейеЕ структури, а потім фігурна дужка. 20 00:00:57,640 --> 00:01:01,370 Всередині структури, я збираюся вказати, що студент повинен мати 21 00:01:01,370 --> 00:01:04,960 рядок називається ім'я, а інший рядок називається будинок. 22 00:01:04,960 --> 00:01:08,430 Я збираюся потім закриваю фігурні дужки, і вказати, що ім'я 23 00:01:08,430 --> 00:01:11,420 цей новий тип даних повинен бути студентом. 24 00:01:11,420 --> 00:01:15,550 Іншими словами, за допомогою цього синтаксису мати я заявив новий тип даних самостійно 25 00:01:15,550 --> 00:01:19,910 що не існувало деякий час тому, і всередині цього типу даних дві дані 26 00:01:19,910 --> 00:01:24,270 поля або елементи даних, одна називається ім'я, одна називається будинок, обидва з яких 27 00:01:24,270 --> 00:01:25,630 мають тип рядка. 28 00:01:25,630 --> 00:01:27,690 >> Давайте тепер використовувати цей тип в реальній програмі. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 У structs0.c, я ж отримав сам починав уже з деякими 31 00:01:34,090 --> 00:01:36,999 стандартний код, і я зараз збираєтеся використовувати ці дані 32 00:01:36,999 --> 00:01:39,100 введіть студента, таким чином. 33 00:01:39,100 --> 00:01:42,450 Я спочатку збирається оголосити Масив типу студента, я буду 34 00:01:42,450 --> 00:01:43,920 подзвонити студентів масиву - 35 00:01:43,920 --> 00:01:44,630 множинне - 36 00:01:44,630 --> 00:01:49,360 і я буду вказувати, що його розмір буде три, який, зауважте, є значенням 37 00:01:49,360 --> 00:01:50,880 постійні студентів - 38 00:01:50,880 --> 00:01:51,890 у всіх столицях - 39 00:01:51,890 --> 00:01:54,930 що я заявив тут, раніше у файлі. 40 00:01:54,930 --> 00:01:58,280 Давайте тепер перебору цих трьох студенти, і запитувати у користувача 41 00:01:58,280 --> 00:02:00,050 їх імена і вдома. 42 00:02:00,050 --> 00:02:05,422 >> для міжнар я отримую 0, я менше ніж константа, I + +. 43 00:02:05,422 --> 00:02:08,600 А тепер всередині тіла цього для цикл, я збираюся роздрукувати щось 44 00:02:08,600 --> 00:02:11,470 як ім'я студента. 45 00:02:11,470 --> 00:02:14,890 Я то при переході насправді отримати, що Ім'я студента, вказавши 46 00:02:14,890 --> 00:02:17,290 студенти дужки I. 47 00:02:17,290 --> 00:02:21,550 Іншими словами я хочу г-у студента в масив називається студенти, але тепер 48 00:02:21,550 --> 00:02:25,340 Я хочу, щоб на що я-я студентська ім'я, а для цього, я збираюся використовувати 49 00:02:25,340 --> 00:02:30,160 . оператор, для того, щоб отримати по крайней конкретній області всередині структури. 50 00:02:30,160 --> 00:02:37,100 Так що я вказати студенти дужки я. Назва отримує значення, що повертається GetString (). 51 00:02:37,100 --> 00:02:40,310 Тим часом, я збираюся роздрукувати щось подібне, кажучи студента 52 00:02:40,310 --> 00:02:45,410 будинок, і тепер я збираюся вказати що я-я студенти будинок поле 53 00:02:45,410 --> 00:02:49,480 повинні отримати значення, що повертається інший виклик GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Тепер давайте зробимо що-небудь з цими трьома Імена і вдома студентів, 55 00:02:52,350 --> 00:02:56,230 щось просте, як друку кожен в реченні. 56 00:02:56,230 --> 00:03:07,580 для міжнар я отримую 0, знову я менше студенти, я + +, Е "% и в% с. 57 00:03:07,580 --> 00:03:12,600 коса риса п ", а тепер дозвольте мені підключити значення цих двох полів, 58 00:03:12,600 --> 00:03:19,055 студенти дужки я. назва, кома, студенти дужки I. будинок, поруч 59 00:03:19,055 --> 00:03:21,290 Хлопець, крапка з комою. 60 00:03:21,290 --> 00:03:23,020 >> А тепер мені потрібно зробити ще одну річ. 61 00:03:23,020 --> 00:03:26,600 У нижній частині цього файлу, мені потрібно звільнити пам'ять, яка була виділена 62 00:03:26,600 --> 00:03:30,290 за лаштунками GetSring (), яка Звичайно викликає Танос, щоб 63 00:03:30,290 --> 00:03:32,500 виділити пам'ять для рядків користувач вводить. 64 00:03:32,500 --> 00:03:35,720 Але це просто. 65 00:03:35,720 --> 00:03:42,610 для міжнар я отримую 0, я менше студенти, я + + і всередині тіла 66 00:03:42,610 --> 00:03:48,670 це цикл, я просто збираюся забезпечити вільний студентів кронштейн я. ім'я, 67 00:03:48,670 --> 00:03:52,300 і безкоштовних студенти дужки I. будинок. 68 00:03:52,300 --> 00:03:55,620 >> Тепер, ми чітко використовується три для петель у цій програмі, коли насправді я 69 00:03:55,620 --> 00:03:58,800 міг би просто використовувати один, але це тільки заради демонстрації, так що 70 00:03:58,800 --> 00:04:02,850 ми можемо вказати в трьох різних кроки, що саме ми робимо. 71 00:04:02,850 --> 00:04:06,120 Ми спочатку отримати ім'я і будинок для кожного зі студентів, ми потім 72 00:04:06,120 --> 00:04:08,900 роздрукувавши ім'я і будинок для кожен з трьох студентів, і 73 00:04:08,900 --> 00:04:11,910 потім ми збираємося, щоб звільнити пам'ять використовується кожним із студентів. 74 00:04:11,910 --> 00:04:15,310 Але, звичайно, ми, можливо, поєднати це в один великий цикл. 75 00:04:15,310 --> 00:04:18,650 >> Давайте тепер зберегти, скомпілювати, і запустити цю програму. 76 00:04:18,650 --> 00:04:26,850 роблять Структури 0. / Структури 0, студента назвати, давайте забезпечити Давида, він буде жити 77 00:04:26,850 --> 00:04:31,580 в Mather House, ім'я студента, давайте сказати Лорен, вона буде жити в Леверетт 78 00:04:31,580 --> 00:04:36,590 Будинок, ім'я студента, Роб, він буде жити в Kirkland House. 79 00:04:36,590 --> 00:04:39,440 І справді, Давид в Mather, Лорен в Леверетт, 80 00:04:39,440 --> 00:04:40,810 і Роб знаходиться в Kirkland. 81 00:04:40,810 --> 00:04:43,425