>> 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.