2 00:00:00,000 --> 00:00:02,760 >> Spreker 1: Kom ons skryf 'n program wat vra die gebruiker om die name en 3 00:00:02,760 --> 00:00:04,700 huise van drie studente. 4 00:00:04,700 --> 00:00:08,840 Nou, daardie name en huise te stoor ons kan gebruik, wat ses veranderlikes. 5 00:00:08,840 --> 00:00:12,260 Drie stringe vir die name, en 'n ander drie snare vir die huise, 6 00:00:12,260 --> 00:00:16,560 maar ons weet reeds dat ons kan skoon te maak wat die kode deur die gebruik van skikkings plaas, 7 00:00:16,560 --> 00:00:20,220 byvoorbeeld 'n verskeidenheid van grootte 3 vir die drie name, en 'n ander verskeidenheid van 8 00:00:20,220 --> 00:00:22,110 grootte 3 vir die huise. 9 00:00:22,110 --> 00:00:25,870 Maar dit blyk uit ons dit kan skoon te maak nog verder, en eintlik hou daardie 10 00:00:25,870 --> 00:00:30,520 name en huise bymekaar, sodat 'n student se naam en sy of haar huis 11 00:00:30,520 --> 00:00:34,940 een of ander manier vervat, so te spreek, in dieselfde veranderlike. 12 00:00:34,940 --> 00:00:39,095 >> Om dit te doen, al is, moet ons om te verklaar ons eie data tipe, ons eie soort in C, 13 00:00:39,095 --> 00:00:42,660 dat die skrywers van C nie noodwendig dink aan jare gelede. 14 00:00:42,660 --> 00:00:45,630 Om dit te doen, kan ons die term gebruik typedef, saam met die 15 00:00:45,630 --> 00:00:47,200 ander navraag struct. 16 00:00:47,200 --> 00:00:48,160 Kom ons neem 'n blik. 17 00:00:48,160 --> 00:00:50,650 Binnekant van structs.h, ek het reeds gekry het deur 18 00:00:50,650 --> 00:00:52,560 insluitend die CS50 biblioteek. 19 00:00:52,560 --> 00:00:57,640 Ek is volgende gaan typedef struct om te tik, en dan 'n krullerige stut. 20 00:00:57,640 --> 00:01:01,370 Binnekant van die struct, ek gaan om te spesifiseer dat 'n student 'n 21 00:01:01,370 --> 00:01:04,960 string genoem naam, en 'n ander string genoem huis. 22 00:01:04,960 --> 00:01:08,430 Ek gaan dan sluit my krullerige draadjies, en spesifiseer dat die naam van die 23 00:01:08,430 --> 00:01:11,420 hierdie nuwe data tipe sal student wees. 24 00:01:11,420 --> 00:01:15,550 Met ander woorde, deur middel van hierdie sintaksis het ek verklaar 'n nuwe data tipe van my eie 25 00:01:15,550 --> 00:01:19,910 wat nie bestaan ​​het nie 'n oomblik gelede, en binnekant van die data tipe is twee data 26 00:01:19,910 --> 00:01:24,270 velde of data lede, een wat geroep is die naam, een wat geroep is die huis, wat beide 27 00:01:24,270 --> 00:01:25,630 is van die tipe string. 28 00:01:25,630 --> 00:01:27,690 >> Kom ons gebruik nou hierdie tipe in 'n werklike program. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 In structs0.c, ek het insgelyks gekry myself begin reeds met 'n paar 31 00:01:34,090 --> 00:01:36,999 boiler kode, en ek is nou gaan hierdie data te gebruik 32 00:01:36,999 --> 00:01:39,100 tik student, soos volg. 33 00:01:39,100 --> 00:01:42,450 Ek gaan eers 'n te verklaar reeks van die soort student, ek sal 34 00:01:42,450 --> 00:01:43,920 noem die skikking studente - 35 00:01:43,920 --> 00:01:44,630 meervoud - 36 00:01:44,630 --> 00:01:49,360 en ek sal spesifiseer dat sy grootte sal wees drie, wat, kennisgewing, is die waarde van 37 00:01:49,360 --> 00:01:50,880 die konstante studente - 38 00:01:50,880 --> 00:01:51,890 in hoofletters - 39 00:01:51,890 --> 00:01:54,930 dat ek verklaar hier, vroeër in die lêer. 40 00:01:54,930 --> 00:01:58,280 Kom ons kyk nou Itereer oor die drie studente, en Vra die gebruiker vir 41 00:01:58,280 --> 00:02:00,050 hul name en huise. 42 00:02:00,050 --> 00:02:05,422 >> vir int i kry 0, i minder as wat konstant, i + +. 43 00:02:05,422 --> 00:02:08,600 En nou binnekant van die liggaam van hierdie vir lus, ek gaan om uit te druk iets 44 00:02:08,600 --> 00:02:11,470 soos die student se naam. 45 00:02:11,470 --> 00:02:14,890 Ek is dan gaan eintlik kry dat student se naam deur die spesifiseer 46 00:02:14,890 --> 00:02:17,290 studente in hakies i. 47 00:02:17,290 --> 00:02:21,550 Met ander woorde ek wil die i-de student in die skikking met die naam studente, maar nou 48 00:02:21,550 --> 00:02:25,340 Ek wil graag op daardie i-de student se noem, en om dit te doen, ek gaan om te gebruik 49 00:02:25,340 --> 00:02:30,160 die. operateur, in orde te kry op 'n spesifieke veld binne die struct. 50 00:02:30,160 --> 00:02:37,100 So ek spesifiseer studente in hakies i. Naam kry die terugkeer waarde van GetString (). 51 00:02:37,100 --> 00:02:40,310 Intussen het ek gaan om uit te druk iets soortgelyks, sê student se 52 00:02:40,310 --> 00:02:45,410 huis, en nou gaan ek om te spesifiseer dat die i-de studente huis veld 53 00:02:45,410 --> 00:02:49,480 sal die terugkeer waarde van kry 'n ander oproep om GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Nou laat ons iets doen met hierdie drie studente se name en huise, 55 00:02:52,350 --> 00:02:56,230 iets eenvoudig soos die druk wat elk in 'n sin. 56 00:02:56,230 --> 00:03:07,580 vir int ek kry 0, i is weer minder as studente, i + +, printf "% s is in% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", en nou laat my prop in die waardes van die twee velde, 58 00:03:12,600 --> 00:03:19,055 studente in hakies i. naam, komma, studente in hakies i. huis, naby 59 00:03:19,055 --> 00:03:21,290 paren, kommapunt. 60 00:03:21,290 --> 00:03:23,020 >> En nou, ek moet nog een ding om te doen. 61 00:03:23,020 --> 00:03:26,600 Aan die onderkant van hierdie lêer, ek nodig het om te bevry die geheue wat toegeken is 62 00:03:26,600 --> 00:03:30,290 agter die skerms deur GetSring (), wat natuurlik noem malloc, ten einde te 63 00:03:30,290 --> 00:03:32,500 toeken geheue vir die snare die gebruiker. 64 00:03:32,500 --> 00:03:35,720 Maar om dit te eenvoudig is. 65 00:03:35,720 --> 00:03:42,610 vir int i kry 0, i is minder as studente, i + +, en binne-in die liggaam van 66 00:03:42,610 --> 00:03:48,670 hierdie lus, ek eenvoudig gaan verskaf gratis studente bracket i. naam, 67 00:03:48,670 --> 00:03:52,300 en gratis studente in hakies i. huis. 68 00:03:52,300 --> 00:03:55,620 >> Nou, ons het duidelik gebruik drie sirkelroetes vir in hierdie program, toe ek regtig 69 00:03:55,620 --> 00:03:58,800 kon net gebruik om een, maar dit is net ter wille van demonstrasie's, sodat 70 00:03:58,800 --> 00:04:02,850 ons kan spesifiseer in drie afsonderlike stappe wat presies ons doen. 71 00:04:02,850 --> 00:04:06,120 Ons is die eerste om 'n naam en 'n huis vir elk van die studente, ons is dan 72 00:04:06,120 --> 00:04:08,900 druk die naam en die huis vir elk van die drie studente en 73 00:04:08,900 --> 00:04:11,910 dan gaan ons die geheue te bevry gebruik word deur elk van die studente. 74 00:04:11,910 --> 00:04:15,310 Maar sekerlik kan ons het dit kombineer in een groter lus. 75 00:04:15,310 --> 00:04:18,650 >> Kom ons nou ook red, saamstel, en die uitvoering van hierdie program. 76 00:04:18,650 --> 00:04:26,850 maak structs 0. / structs 0, student se noem, laat ons voorsien Dawid, sal hy lewe 77 00:04:26,850 --> 00:04:31,580 in Mather House, student se naam, laat ons sê Lauren, sy sal in Leverett lewe 78 00:04:31,580 --> 00:04:36,590 House, student se naam, Rob, hy sal woon in Kirkland House. 79 00:04:36,590 --> 00:04:39,440 En inderdaad, Dawid is in Mather, Lauren is in Leverett, 80 00:04:39,440 --> 00:04:40,810 en Rob is in Kirkland. 81 00:04:40,810 --> 00:04:43,425