2 00:00:00,000 --> 00:00:02,760 >> Ræðumaður 1: Við skulum skrifa forrit sem hvetja notandann um nöfn og 3 00:00:02,760 --> 00:00:04,700 hús þremur nemendum. 4 00:00:04,700 --> 00:00:08,840 Nú, til að geyma þau nöfn og hús við gátum notað, hvað, sex breytur. 5 00:00:08,840 --> 00:00:12,260 Þrír strengir fyrir nöfn og annað þrjú strengir fyrir húsunum, 6 00:00:12,260 --> 00:00:16,560 en við vitum nú þegar að við getum hreinsa upp að kóða með því að nota fylki í staðinn, 7 00:00:16,560 --> 00:00:20,220 til dæmis fylki af stærð 3 fyrir þrjú nöfn, og annar array 8 00:00:20,220 --> 00:00:22,110 stærð 3 fyrir húsunum. 9 00:00:22,110 --> 00:00:25,870 En það kemur í ljós að við getum hreinsa þetta upp frekar enn, og í raun að halda þeim 10 00:00:25,870 --> 00:00:30,520 nöfn og hús saman, þannig að nafn nemandans og hús hans eða hennar 11 00:00:30,520 --> 00:00:34,940 eru einhvern veginn encapsulated, svo að tala, í sömu breytu. 12 00:00:34,940 --> 00:00:39,095 >> Til að gera þetta, þó, þurfum við að lýsa eigin gögn okkar tegund, eigin tegund okkar í C, 13 00:00:39,095 --> 00:00:42,660 að höfundar C ekki endilega hugsa um árum. 14 00:00:42,660 --> 00:00:45,630 Til að gera þetta sem við getum notað leitarorð typedef, ásamt 15 00:00:45,630 --> 00:00:47,200 Aðrar Keyword strúktúr. 16 00:00:47,200 --> 00:00:48,160 Skulum taka a útlit. 17 00:00:48,160 --> 00:00:50,650 Inni structs.h, hef ég nú þegar fengið byrjaði á því 18 00:00:50,650 --> 00:00:52,560 þ.mt CS50 bókasafn. 19 00:00:52,560 --> 00:00:57,640 Ég ætla næst að fara að skrifa strúktúr typedef, og þá hrokkið Brace. 20 00:00:57,640 --> 00:01:01,370 Inni í strúktúr, ég ætla að tilgreina að nemandi skal hafa 21 00:01:01,370 --> 00:01:04,960 band nefndi, og annar band sem kallast hús. 22 00:01:04,960 --> 00:01:08,430 Ég ætla að svo loka hrokkið axlabönd mínum, og tilgreina að nafn 23 00:01:08,430 --> 00:01:11,420 Þessi nýja gögn gerð skal nemandi. 24 00:01:11,420 --> 00:01:15,550 Með öðrum orðum, í gegnum þessa setningafræði ég lýst ný gögn tegund mína eigin 25 00:01:15,550 --> 00:01:19,910 Það var ekki til í smá stund síðan, og inni þessum gögnum gerð eru tvær tölur 26 00:01:19,910 --> 00:01:24,270 sviðum eða gögn aðilar, einn nefndi, einn heitir hús, bæði sem 27 00:01:24,270 --> 00:01:25,630 eru af taginu String. 28 00:01:25,630 --> 00:01:27,690 >> Skulum nú nota þessa tegund í raun áætlun. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Í structs0.c, hef ég álíka fengið sjálfur byrjaði þegar með nokkrum 31 00:01:34,090 --> 00:01:36,999 boilerplate kóða, og ég er nú fara að nota þessi gögn 32 00:01:36,999 --> 00:01:39,100 slá nemandinn, eins og hér segir. 33 00:01:39,100 --> 00:01:42,450 Ég ætla fyrst að fara að lýsa því yfir tæki af gerðinni nemandi, ég 34 00:01:42,450 --> 00:01:43,920 kalla array nemendur - 35 00:01:43,920 --> 00:01:44,630 fleirtölu - 36 00:01:44,630 --> 00:01:49,360 og ég ætla að tilgreina að stærð þess verður þrír, sem, tilkynning, er gildi þess að 37 00:01:49,360 --> 00:01:50,880 stöðug nemendur - 38 00:01:50,880 --> 00:01:51,890 í öllum höfuðborgum - 39 00:01:51,890 --> 00:01:54,930 sem ég hef lýst upp hér, Fyrr í skránni. 40 00:01:54,930 --> 00:01:58,280 Skulum nú kunnugt er yfir þeim þremur nemendur og hvetja notandann til 41 00:01:58,280 --> 00:02:00,050 nöfn þeirra og hús. 42 00:02:00,050 --> 00:02:05,422 >> fyrir int i fá 0, ég er minna en stöðug, ég + +. 43 00:02:05,422 --> 00:02:08,600 Og nú inni í líkama af þessu fyrir lykkja, ég ætla að prenta út eitthvað 44 00:02:08,600 --> 00:02:11,470 eins og nafn nemandans. 45 00:02:11,470 --> 00:02:14,890 Ég ætla þá að fara að í raun að fá það nafn nemandans með því að tilgreina 46 00:02:14,890 --> 00:02:17,290 nemendur krappi i. 47 00:02:17,290 --> 00:02:21,550 Með öðrum orðum ég vil i-ta nemanda í array sem heitir nemendur, en nú 48 00:02:21,550 --> 00:02:25,340 Ég vil fá á að I-th er nemandi nafn, og til að gera þetta, ég ætla að nota 49 00:02:25,340 --> 00:02:30,160 á. rekstraraðili, í því skyni að fá á a tilteknu sviði inni í strúktúr. 50 00:02:30,160 --> 00:02:37,100 Svo ég tilgreina nemendur krappi ég. Nafn fær skilagildi GetString (). 51 00:02:37,100 --> 00:02:40,310 Á meðan ætla ég að prenta út eitthvað svipað, sagði nemandans 52 00:02:40,310 --> 00:02:45,410 hús, og nú ætla ég að tilgreina að ég-th sviði nemendur hús 53 00:02:45,410 --> 00:02:49,480 skulu fá skilagildi annað símtal til GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Nú skulum gera eitthvað með þessum þremur Nöfn nemenda og hús, 55 00:02:52,350 --> 00:02:56,230 eitthvað einfalt eins og prentun hvert út í setningu. 56 00:02:56,230 --> 00:03:07,580 fyrir int i fá 0, aftur I er minni en nemendur, ég + +, printf "% s er í% s. 57 00:03:07,580 --> 00:03:12,600 sviga n ", og nú láta mig stinga í sem gildin á þessum tveimur sviðum, 58 00:03:12,600 --> 00:03:19,055 nemendur krappi ég. nafn, kommu, nemendur krappi i. hús, nálægt 59 00:03:19,055 --> 00:03:21,290 paren, semíkommu. 60 00:03:21,290 --> 00:03:23,020 >> Og nú þarf ég að gera eitt í viðbót. 61 00:03:23,020 --> 00:03:26,600 Neðst á þessari skrá, ég þarf að losa minnið sem var úthlutað 62 00:03:26,600 --> 00:03:30,290 bak við tjöldin með GetSring (), sem Að sjálfsögðu kallar malloc, í því skyni að 63 00:03:30,290 --> 00:03:32,500 úthluta minni fyrir strengi notandinn slær inn. 64 00:03:32,500 --> 00:03:35,720 En þetta er einfalt. 65 00:03:35,720 --> 00:03:42,610 fyrir int i fá 0, I er minni en nemendur, ég + +, og inni í meginmál 66 00:03:42,610 --> 00:03:48,670 þetta fyrir lykkju, ég er einfaldlega að fara að veita ókeypis nemenda krappi i. nafn, 67 00:03:48,670 --> 00:03:52,300 og frjáls nemendur krappi i. hús. 68 00:03:52,300 --> 00:03:55,620 >> Nú höfum við greinilega notað þrjú fyrir lykkjur í þessari áætlun, þegar raunverulega ég 69 00:03:55,620 --> 00:03:58,800 hefðu bara notað einn, en þetta er bara fyrir sakir mótmælum, svo að 70 00:03:58,800 --> 00:04:02,850 við getum skilgreint í þremur mismunandi skref hvað nákvæmlega við erum að gera. 71 00:04:02,850 --> 00:04:06,120 Við erum fyrst að fá nafn og hús fyrir hvern nemenda, erum við þá 72 00:04:06,120 --> 00:04:08,900 prenta út nafn og hús hvert hinna þriggja nemenda, og 73 00:04:08,900 --> 00:04:11,910 þá erum við að fara að losa minni notuð af hverjum nemenda. 74 00:04:11,910 --> 00:04:15,310 En örugglega við hefði getað sameina þetta í einn stærri fyrir lykkju. 75 00:04:15,310 --> 00:04:18,650 >> Skulum nú spara, safna saman, og keyra þetta forrit. 76 00:04:18,650 --> 00:04:26,850 gera structs 0. / structs 0, nemandans nafn, skulum veita Davíð, þá er hann lifandi 77 00:04:26,850 --> 00:04:31,580 í Mather House, nafn nemanda, skulum segja Lauren, mun hún búa í Leverett 78 00:04:31,580 --> 00:04:36,590 Hús, nafn nemanda, Rob, verður hann búa í Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Og reyndar, Davíð er í Mather, Lauren er í Leverett, 80 00:04:39,440 --> 00:04:40,810 og Rob er í Kirkland. 81 00:04:40,810 --> 00:04:43,425