SPEAKER 1: Да се ​​напише програма, която подсказва на потребителя за имената и къщи на трима студенти. Сега, за да съхрани тези имена и къщи бихме могли да използваме, какво, шест променливи. Три струни за имената, както и друга три струни за къщите, но ние вече знаем, че можем да се почисти този код вместо с употребата на масиви, например масив с размер 3 за трите имена и друг масив от размер 3 за къщите. Но се оказва, че ние можем да изчистя допълнително още, и всъщност пазят тези имена и къщи заедно, така че име на ученика и неговата или нейната къща по някакъв начин са капсулирани, така да се каже, в една и съща променлива. За да направите това, обаче, ние трябва да се декларира нашата собствена тип данни, нашият собствен тип в C, че авторите на C не е задължително мисля за преди години. За да направите това, ние можем да използваме ключовата дума typedef, заедно с друга дума структура. Нека хвърлим един поглед. Вътре на structs.h, аз вече съм намерила е започната от включително CS50 библиотеката. Аз следващия ще въведете typedef структура, а след това и къдрава скоба. Вътре в структурата, аз отивам да уточни, че един студент трябва да има низ, наречен име, а друг низ наречен къща. Отивам след това да затворите моите фигурни скоби, и уточнява, че името на този нов тип данни трябва да бъде студент. С други думи, чрез този синтаксис имам Обявен е за нов тип данни на моя собствен която не е съществувала преди малко, и във вътрешността на този вид данни са два данни полета или членове на данни, един нарече, една, наречена къща, и двете от които са от тип низ. Нека сега се използва този тип в действително програма. В structs0.c, аз съм по същия начин намерила самият започнах вече с някои шаблон код, и аз съм сега ще използваме тези данни въведете студент, както следва. Аз съм първи ще обявят масив от тип студент, аз ще обадите на масива на студентите - множествено число - и аз ще се уточни, че размерът му ще бъде три, които, забележка, е стойността на постоянните ученици - във всички столици - че съм обявен до тук, рано във файла. Нека сега обхождане на тези три студенти, и напомни на потребителя за техните имена и къщи. за вътр аз добивам 0, I е по-малко от това постоянно, аз + +. И сега, вътре в тялото на този за контур, аз отивам да разпечатате нещо като името на студента. Аз тогава ще се получи в действителност, че студента име, като се посочва студенти скоба аз. С други думи искам аз-ти студент в масива наречен студенти, но сега Аз искам да отида в който аз-ти ученик име, и да направи това, аз отивам да се използва на. оператор, за да получите по- конкретна област вътре в структурата. Така че аз се уточни студенти скоба аз. Име получава стойността връщане на GetString (). Междувременно, аз отивам да разпечатате нещо подобно, заявявайки, че на студента къща, а сега отивам да се уточни че областта студенти къщата на I-ия ще получите стойността връщане на друг разговор да GetString (). Сега нека да се направи нещо с тези три имена и къщи на студентите, нещо просто като печат всеки в едно изречение. за средно и се 0, отново е по-малко от студенти, аз + +, ФОРМАТ "% S е в% S. наклонена черта н ", а сега нека да включите стойностите на тези две области, студенти скоба аз. име, запетая, студенти скоба аз. къща, в близост скоба, точка и запетая. И сега аз трябва да направя още едно нещо. В долната част на този файл, трябва да освободи паметта, която е разпределена зад кулисите на GetSring (), който Разбира се нарича изчистване, за да памет за конците видовете потребителски. Но това е много проста. за вътр аз добивам 0, I е по-малко от студенти, аз + +, и вътре в тялото на това за цикъл, аз съм просто ще предоставя безплатно ученици скоба аз. име, и свободни студенти скоба аз. къща. Сега, ние сме очевидно се използва за три линии в тази програма, когато наистина съм Можеше просто да се използва един, но това е просто заради демонстрация, така че ние може да уточни в три обособени стъпки, какво точно правим. Ние сме първата си изгради име и къща за всеки един от студентите, ние сме след това отпечатване на името и къщата за всяка от трите студентите и След това отиваме да освободи паметта използва от всеки един от студентите. Но ние със сигурност можеше да комбинирате в един по-голям за цикъл. Нека сега спаси, изготвят, и стартирате тази програма. правят structs 0. / structs 0, ученик име, нека да предостави на Давид, той ще живее в Mather House, име на ученик, нека казват Lauren, тя ще живее в Leverett Къща, име на студента, Роб, той ще живеят в Kirkland House. И наистина, Давид е в Mather, Лорън е в Leverett, и Роб е в Kirkland.