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