2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 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 че авторите на C не е задължително мисля за преди години. 14 00:00:42,660 --> 00:00:45,630 За да направите това, ние можем да използваме ключовата дума typedef, заедно с 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 Аз следващия ще въведете typedef структура, а след това и къдрава скоба. 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 студенти скоба аз. 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 къща, а сега отивам да се уточни че областта студенти къщата на I-ия 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, отново е по-малко от студенти, аз + +, ФОРМАТ "% S е в% S. 57 00:03:07,580 --> 00:03:12,600 наклонена черта н ", а сега нека да включите стойностите на тези две области, 58 00:03:12,600 --> 00:03:19,055 студенти скоба аз. име, запетая, студенти скоба аз. къща, в близост 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, I е по-малко от студенти, аз + +, и вътре в тялото на 66 00:03:42,610 --> 00:03:48,670 това за цикъл, аз съм просто ще предоставя безплатно ученици скоба аз. име, 67 00:03:48,670 --> 00:03:52,300 и свободни студенти скоба аз. къща. 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 правят structs 0. / structs 0, ученик име, нека да предостави на Давид, той ще живее 77 00:04:26,850 --> 00:04:31,580 в Mather House, име на ученик, нека казват Lauren, тя ще живее в Leverett 78 00:04:31,580 --> 00:04:36,590 Къща, име на студента, Роб, той ще живеят в Kirkland House. 79 00:04:36,590 --> 00:04:39,440 И наистина, Давид е в Mather, Лорън е в Leverett, 80 00:04:39,440 --> 00:04:40,810 и Роб е в Kirkland. 81 00:04:40,810 --> 00:04:43,425