2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Oletame, kirjutada programm, mis küsib kasutajalt nime ja 3 00:00:02,760 --> 00:00:04,700 maja kolm õpilast. 4 00:00:04,700 --> 00:00:08,840 Nüüd salvestada need nimed ja majad saaksime kasutada, mida kuus muutujaid. 5 00:00:08,840 --> 00:00:12,260 Kolm stringid nimed ja muu kolm stringid majad, 6 00:00:12,260 --> 00:00:16,560 aga me juba teame, et saame koristada et koodi abil massiivid asemel, 7 00:00:16,560 --> 00:00:20,220 näiteks massiivi suurus 3 kolm nime, ja teine ​​rida 8 00:00:20,220 --> 00:00:22,110 suurus 3 maja. 9 00:00:22,110 --> 00:00:25,870 Aga selgub, saame puhastada see üles veelgi enam, ja tegelikult hoiavad 10 00:00:25,870 --> 00:00:30,520 nimed ja majad koos, nii et õpilase nimi ja tema maja 11 00:00:30,520 --> 00:00:34,940 on kuidagi kapseldunud nii et rääkida, samasse muutuja. 12 00:00:34,940 --> 00:00:39,095 >> Et seda teha, kuigi peame kuulutama oma andmete liiki, meie oma liigi C, 13 00:00:39,095 --> 00:00:42,660 et autorid C ei pruugi mõtle aastat tagasi. 14 00:00:42,660 --> 00:00:45,630 Selleks saame kasutada märksõna typedef koos 15 00:00:45,630 --> 00:00:47,200 muu märksõna struktuure. 16 00:00:47,200 --> 00:00:48,160 Võtame vaata. 17 00:00:48,160 --> 00:00:50,650 Toas structs.h, ma olen juba saanud alustatud 18 00:00:50,650 --> 00:00:52,560 sealhulgas CS50 raamatukogu. 19 00:00:52,560 --> 00:00:57,640 Ma järgmine läheb kirjuta typedef struktuure, ja siis lokkis traksidega. 20 00:00:57,640 --> 00:01:01,370 Toas struct, ma lähen täpsustada, et õpilane peab olema 21 00:01:01,370 --> 00:01:04,960 string nimega nimi, ja teine string nimega maja. 22 00:01:04,960 --> 00:01:08,430 Ma lähen siis sulen lokkis traksid, ning täpsustada, et nime 23 00:01:08,430 --> 00:01:11,420 see uus andmetüüp peab olema õpilane. 24 00:01:11,420 --> 00:01:15,550 Teisisõnu, selle kaudu süntaks on I kuulutatud uus andmetüüp minu enda 25 00:01:15,550 --> 00:01:19,910 et ei ole olemas hetk tagasi, ja sees see andmetüüp on kaks andmeid 26 00:01:19,910 --> 00:01:24,270 valdkondades või andmed, mille üks liikmetest nimetatakse nimi, üks nn maja, mis mõlemad 27 00:01:24,270 --> 00:01:25,630 tüübiks string. 28 00:01:25,630 --> 00:01:27,690 >> Olgem nüüd kasutada seda tüüpi aastal tegelik programm. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 In structs0.c olen samamoodi saanud ise algas juba mõned 31 00:01:34,090 --> 00:01:36,999 stereotüüp kood, ja ma olen nüüd kavatse kasutada seda andmete 32 00:01:36,999 --> 00:01:39,100 kirjuta õpilane järgmiselt. 33 00:01:39,100 --> 00:01:42,450 Ma esimest kavatse kuulutada massiivi tüüp üliõpilane, ma tulen 34 00:01:42,450 --> 00:01:43,920 kutsuvad massiivi õpilased - 35 00:01:43,920 --> 00:01:44,630 mitmuses - 36 00:01:44,630 --> 00:01:49,360 ja ma täpsustada, et selle suurus saab olema kolm, mis teate, on väärtus 37 00:01:49,360 --> 00:01:50,880 pidev õpilased - 38 00:01:50,880 --> 00:01:51,890 kõigis pealinnades - 39 00:01:51,890 --> 00:01:54,930 et ma olen kuulutanud, siia varem toimikusse. 40 00:01:54,930 --> 00:01:58,280 Olgem nüüd Käi need kolm õpilastele ja kiire kasutaja jaoks 41 00:01:58,280 --> 00:02:00,050 nende nimed ja maju. 42 00:02:00,050 --> 00:02:05,422 >> jaoks int i saada 0, i on vähem kui pidev, i + +. 43 00:02:05,422 --> 00:02:08,600 Ja nüüd sees ihu selle eest loop, ma lähen välja trükkida midagi 44 00:02:08,600 --> 00:02:11,470 nagu õpilase nimi. 45 00:02:11,470 --> 00:02:14,890 Ma siis lähen tegelikult saada, et õpilase nimi, määrates 46 00:02:14,890 --> 00:02:17,290 õpilased ümbritsevad i. 47 00:02:17,290 --> 00:02:21,550 Teisisõnu tahan i-nda üliõpilane massiivi nimetatakse õpilased, kuid nüüd 48 00:02:21,550 --> 00:02:25,340 Ma tahan saada seda i-nda õpilase Nime, ja et seda teha, ma lähen kasutada 49 00:02:25,340 --> 00:02:30,160 . operaatoriga, et saada on konkreetse valdkonna sees struktuure. 50 00:02:30,160 --> 00:02:37,100 Nii ma täpsustama õpilased ümbritsevad i. Nime saab tagastatav väärtus getString (). 51 00:02:37,100 --> 00:02:40,310 Vahepeal ma lähen välja printida midagi sarnast, öeldes õpilase 52 00:02:40,310 --> 00:02:45,410 maja, ja nüüd ma lähen täpsustada et i-nda õpilast maja valdkonnas 53 00:02:45,410 --> 00:02:49,480 ei saada tagastatav väärtus teise kõne getString (). 54 00:02:49,480 --> 00:02:52,350 >> Nüüd teeme midagi nende kolme õpilaste nimed ja majad, 55 00:02:52,350 --> 00:02:56,230 midagi lihtsat nagu trükkimine iga läbi lause. 56 00:02:56,230 --> 00:03:07,580 jaoks int i saada 0, jälle i on väiksem kui õpilased, i + +, printf "% s on% s. 57 00:03:07,580 --> 00:03:12,600 kurakriips n "ja nüüd andke mulle pistik väärtused need kaks valdkonda, 58 00:03:12,600 --> 00:03:19,055 õpilased ümbritsevad i. nime, koma õpilased ümbritsevad i. majas lähedal 59 00:03:19,055 --> 00:03:21,290 paren, semikoolon. 60 00:03:21,290 --> 00:03:23,020 >> Ja nüüd ma pean tegema veel üks asi. 61 00:03:23,020 --> 00:03:26,600 Allosas see fail, ma pean vaba mälu, mis oli eraldatud 62 00:03:26,600 --> 00:03:30,290 kulisside taga, mida GetSring (), mis Loomulikult nõuab malloc, et 63 00:03:30,290 --> 00:03:32,500 mälu eraldada stringid kasutaja tüübid. 64 00:03:32,500 --> 00:03:35,720 Aga see on lihtne. 65 00:03:35,720 --> 00:03:42,610 jaoks int i saada 0, i on väiksem kui õpilased, i + +, ja kehas 66 00:03:42,610 --> 00:03:48,670 Selle jaoks loop, ma lihtsalt läheb tasuta õpilast sulg i. nime, 67 00:03:48,670 --> 00:03:52,300 ja vaba õpilased ümbritsevad i. majas. 68 00:03:52,300 --> 00:03:55,620 >> Nüüd oleme selgelt kasutada kolm silmuseid Selles programmis, siis tegelikult ma 69 00:03:55,620 --> 00:03:58,800 võinud lihtsalt kasutatav, vaid see on lihtsalt demonstreerimiseks pärast, et 70 00:03:58,800 --> 00:04:02,850 saame määrata kolm erinevat samme, mida täpselt me ​​teeme. 71 00:04:02,850 --> 00:04:06,120 Me kõigepealt saada nimi ja maja iga õpilast, me oleme siis 72 00:04:06,120 --> 00:04:08,900 väljatrükk nimi ja maja Iga kolme õpilast ja 73 00:04:08,900 --> 00:04:11,910 siis me lähme vaba mälu kasutatakse iga õpilast. 74 00:04:11,910 --> 00:04:15,310 Aga kindlasti me saanuks ühendamine üheks suuremaks silmus. 75 00:04:15,310 --> 00:04:18,650 >> Olgem nüüd salvestada, koostada, ja käivitada see programm. 76 00:04:18,650 --> 00:04:26,850 teha structs 0 /. structs 0, õpilase Nime, olgem anda David, ta elab 77 00:04:26,850 --> 00:04:31,580 aastal Ema House, õpilase nimi, olgem öelda Lauren, ta saab elada Leverett 78 00:04:31,580 --> 00:04:36,590 House, õpilase nimi, Rob, temast elada Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Ja tõepoolest, David on Mather, Lauren on Leverett, 80 00:04:39,440 --> 00:04:40,810 ja Rob on Kirkland. 81 00:04:40,810 --> 00:04:43,425