2 00:00:00,000 --> 00:00:02,760 >> SPEAKER 1: Pieņemsim uzrakstīt programmu, kas liek lietotājam attiecībā uz nosaukumiem un 3 00:00:02,760 --> 00:00:04,700 nami trīs studenti. 4 00:00:04,700 --> 00:00:08,840 Tagad, lai saglabātu šos nosaukumus un mājas mēs varētu izmantot, ko, seši mainīgie. 5 00:00:08,840 --> 00:00:12,260 Trīs stīgas nosaukumus, un vēl trīs stīgas mājās, 6 00:00:12,260 --> 00:00:16,560 bet mēs jau zinām, ka mēs varam sakopt šis kods, izmantojot bloki vietā, 7 00:00:16,560 --> 00:00:20,220 piemēram, masīvs lieluma 3 Trīs vārdi, un vēl masīvs 8 00:00:20,220 --> 00:00:22,110 izmērs 3 par mājām. 9 00:00:22,110 --> 00:00:25,870 Bet izrādās, mēs varam tīrīt to uz augšu vēl joprojām, un faktiski saglabāt tos 10 00:00:25,870 --> 00:00:30,520 nosaukumi un mājas kopā, lai studenta vārdu un viņa vai viņas mājas 11 00:00:30,520 --> 00:00:34,940 ir kaut kas iekapsulēti, tāpēc, lai runā, uz tā paša mainīgā lieluma. 12 00:00:34,940 --> 00:00:39,095 >> Lai to izdarītu, lai gan, mums ir nepieciešams atzīt mūsu pašu datu tipu, mūsu pašu tips C, 13 00:00:39,095 --> 00:00:42,660 ka autori C nebija obligāti domāju, ka pirms gadiem. 14 00:00:42,660 --> 00:00:45,630 Lai to paveiktu, mēs varam izmantot atslēgvārdu typedef, kopā ar 15 00:00:45,630 --> 00:00:47,200 citi atslēgvārds struktūrai. 16 00:00:47,200 --> 00:00:48,160 Pieņemsim to apskatīt. 17 00:00:48,160 --> 00:00:50,650 Iekšpusē structs.h, es esmu jau gotten sācis 18 00:00:50,650 --> 00:00:52,560 ieskaitot CS50 bibliotēkā. 19 00:00:52,560 --> 00:00:57,640 Es esmu blakus gatavojas rakstīt typedef struktūrai, un tad cirtaini lencēm. 20 00:00:57,640 --> 00:01:01,370 Iekšpusē struktūrai, es esmu gatavojas norādīt, ka students ir 21 00:01:01,370 --> 00:01:04,960 stīgu sauc vārdu, un vēl stīgu sauc māja. 22 00:01:04,960 --> 00:01:08,430 Es esmu gatavojas, lai pēc tam aizvērt cirtaini bikšturi, un norāda, ka vārds 23 00:01:08,430 --> 00:01:11,420 šī jaunā datu tips ir students. 24 00:01:11,420 --> 00:01:15,550 Citiem vārdiem sakot, izmantojot šo sintaksi es esmu pasludināja jaunu datu tipu mana 25 00:01:15,550 --> 00:01:19,910 , kas nepastāvēja pirms brīža, un iekšpusē šo datu tipu divu datu 26 00:01:19,910 --> 00:01:24,270 lauki vai datu locekļi, vienu sauc vārds, viens sauc house, kas abi 27 00:01:24,270 --> 00:01:25,630 ir tipa virknes. 28 00:01:25,630 --> 00:01:27,690 >> Pieņemsim tagad var izmantot šāda veida jo faktiskā programmā. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 In structs0.c, es esmu līdzīgi gotten pats sākās jau ar dažām 31 00:01:34,090 --> 00:01:36,999 tekstveidnes kodu, un es esmu tagad gatavojas izmantot šo informāciju 32 00:01:36,999 --> 00:01:39,100 tipa students, šādi. 33 00:01:39,100 --> 00:01:42,450 Es esmu pirmo reizi gatavojas pasludināt masīvs tipa students, es ņemšu 34 00:01:42,450 --> 00:01:43,920 zvaniet masīva studentiem - 35 00:01:43,920 --> 00:01:44,630 daudzskaitlī - 36 00:01:44,630 --> 00:01:49,360 un es ņemšu norādīt, ka tās lielums būs trīs, kas, paziņojums, ir vērtība 37 00:01:49,360 --> 00:01:50,880 konstante studentiem - 38 00:01:50,880 --> 00:01:51,890 visās galvaspilsētās - 39 00:01:51,890 --> 00:01:54,930 ka es esmu deklarēts šeit, agrāk failā. 40 00:01:54,930 --> 00:01:58,280 Pieņemsim tagad atkārtot pa šiem trim studenti, un atgādinās lietotājam par 41 00:01:58,280 --> 00:02:00,050 viņu vārdi un mājas. 42 00:02:00,050 --> 00:02:05,422 >> par int i saņemt 0, i ir mazāk nekā konstante, i + +. 43 00:02:05,422 --> 00:02:08,600 Un tagad iekšpusē ķermeņa šis cilpa, es esmu gatavojas izdrukāt kaut ko 44 00:02:08,600 --> 00:02:11,470 piemēram, studenta vārdu. 45 00:02:11,470 --> 00:02:14,890 Es esmu tam gatavojas faktiski iegūtu, ka studenta vārdu, norādot 46 00:02:14,890 --> 00:02:17,290 studentiem Bracket i. 47 00:02:17,290 --> 00:02:21,550 Citiem vārdiem sakot, es gribu i-students in masīvs sauc studenti, bet tagad 48 00:02:21,550 --> 00:02:25,340 Es vēlos saņemt tajā i-studenta vārdu, un tas ir jādara, es esmu gatavojas izmantot 49 00:02:25,340 --> 00:02:30,160 . operators, lai iegūtu at specifiska joma iekšpusē struktūrai. 50 00:02:30,160 --> 00:02:37,100 Tāpēc es norādīt studentiem kronšteins i. Nosaukumu izpaužas atgriezto vērtību GetString (). 51 00:02:37,100 --> 00:02:40,310 Tajā pašā laikā, es esmu gatavojas izdrukāt kaut kas līdzīgs, sakot studenta 52 00:02:40,310 --> 00:02:45,410 māju, un tagad es esmu gatavojas, lai precizētu ka i-studentiem māja jomā 53 00:02:45,410 --> 00:02:49,480 ir iespēja saņemt atgriezto vērtību vēl viens aicinājums GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Tagad kaut ko darīt ar šīm trim studentu vārdi un mājas, 55 00:02:52,350 --> 00:02:56,230 kaut ko vienkāršu, piemēram, drukāšanas katrs veic teikumā. 56 00:02:56,230 --> 00:03:07,580 Int i get 0, atkal i ir mazāks nekā studenti, i + +, printf "% s ir% s. 57 00:03:07,580 --> 00:03:12,600 slīpsvītra n ", un tagad ļaujiet man spraudni vērtības šajās divās jomās, 58 00:03:12,600 --> 00:03:19,055 studentiem Bracket i. vārdu, komatu, studentiem Bracket i. māja, netālu 59 00:03:19,055 --> 00:03:21,290 paren, semikols. 60 00:03:21,290 --> 00:03:23,020 >> Un tagad man ir nepieciešams darīt vēl viena lieta. 61 00:03:23,020 --> 00:03:26,600 Apakšā šo failu, man ir nepieciešams, lai atbrīvotu atmiņu, kas tika piešķirta 62 00:03:26,600 --> 00:03:30,290 aizkulisēs ar GetSring (), kas Protams prasa malloc, lai 63 00:03:30,290 --> 00:03:32,500 piešķirt atmiņu stīgām lietotājs veidiem. 64 00:03:32,500 --> 00:03:35,720 Bet tas ir vienkārši. 65 00:03:35,720 --> 00:03:42,610 Int i iegūst: 0, i ir mazāks nekā studenti, i + +, un iekšpusē ķermeņa 66 00:03:42,610 --> 00:03:48,670 šis cilpas, es esmu tikai gatavojas nodrošina bezmaksas studentiem kronšteinu i. nosaukums, 67 00:03:48,670 --> 00:03:52,300 un bezmaksas studentu Bracket i. māja. 68 00:03:52,300 --> 00:03:55,620 >> Tagad mēs esam nepārprotami lieto trīs cilpas šajā programmā, ja tiešām es 69 00:03:55,620 --> 00:03:58,800 varēja tikai izmantot vienu, bet tas ir tikai demonstrēšanai dēļ, lai 70 00:03:58,800 --> 00:04:02,850 mēs varam norādīt trīs atsevišķos soļi, ko mēs īsti darām. 71 00:04:02,850 --> 00:04:06,120 Mēs vispirms iegūt nosaukumu un māju attiecībā uz katru no studentu, mēs tam 72 00:04:06,120 --> 00:04:08,900 izdrukāt nosaukumu un māju katra no trim studentiem, un 73 00:04:08,900 --> 00:04:11,910 tad mēs ejam, lai atbrīvotu atmiņu katra no studenti. 74 00:04:11,910 --> 00:04:15,310 Bet, protams, mēs varētu esam apvienot to vienā lielāks par cilpu. 75 00:04:15,310 --> 00:04:18,650 >> Pieņemsim tagad glābt, apkopot, un palaist šo programmu. 76 00:04:18,650 --> 00:04:26,850 padara structs 0. / structs 0, studenta nosaukums, pieņemsim sniegt Dāvidu, viņš dzīvo 77 00:04:26,850 --> 00:04:31,580 in Mather namā, studenta vārds, pieņemsim saka Lauren, viņa būs dzīvot Leverett 78 00:04:31,580 --> 00:04:36,590 Māja, studenta vārds, Rob, viņš dzīvo Kirkland House. 79 00:04:36,590 --> 00:04:39,440 Un tiešām, Dāvids ir Mather, Lauren ir Leverett, 80 00:04:39,440 --> 00:04:40,810 un Rob ir Kirkland. 81 00:04:40,810 --> 00:04:43,425