2 00:00:00,000 --> 00:00:02,760 >> Tagapagsalita 1: magsulat ng isang programa Hayaan na prompt ang user para sa mga pangalan at 3 00:00:02,760 --> 00:00:04,700 mga bahay ng tatlong mga mag-aaral. 4 00:00:04,700 --> 00:00:08,840 Ngayon, mag-imbak ng mga pangalan at mga bahay maaari naming gamitin, ano, anim na variable. 5 00:00:08,840 --> 00:00:12,260 Tatlong mga string para sa mga pangalan, at isa pa tatlong mga string para sa mga bahay, 6 00:00:12,260 --> 00:00:16,560 ngunit kami na malaman na maaaring linisin namin up ang code na iyon sa pamamagitan ng paggamit array sa halip, 7 00:00:16,560 --> 00:00:20,220 halimbawa ng isang hanay ng mga laki 3 para sa tatlong pangalan, at ng isa pang hanay ng mga 8 00:00:20,220 --> 00:00:22,110 laki 3 para sa mga bahay. 9 00:00:22,110 --> 00:00:25,870 Ngunit ito ay lumiliko out maaari naming linisin ito up karagdagang pa rin, at talagang panatilihin ang mga 10 00:00:25,870 --> 00:00:30,520 mga pangalan at mga bahay-sama, upang ang isang Pangalan ng mag-aaral at ang kanyang bahay 11 00:00:30,520 --> 00:00:34,940 ay kahit papaano ay encapsulated, kaya upang magsalita, sa parehong variable. 12 00:00:34,940 --> 00:00:39,095 >> Upang gawin ito, bagaman, kailangan namin na idedeklara ang aming sariling uri ng data, ang aming sariling uri sa C, 13 00:00:39,095 --> 00:00:42,660 na ang mga may-akda ng C ginawang hindi kinakailangang isipin taon na ang nakakaraan. 14 00:00:42,660 --> 00:00:45,630 Upang gawin ito na maaari naming gamitin ang keyword na typedef, kasama ang 15 00:00:45,630 --> 00:00:47,200 iba pang mga struct keyword. 16 00:00:47,200 --> 00:00:48,160 Hayaan ang kumuha ng isang hitsura. 17 00:00:48,160 --> 00:00:50,650 Sa loob ng structs.h, na hindi ko pa nakuha na sinimulan sa pamamagitan ng 18 00:00:50,650 --> 00:00:52,560 kabilang ang CS50 library. 19 00:00:52,560 --> 00:00:57,640 Susunod na pupuntahan ko type typedef struct, at pagkatapos ay isang kulot suhay. 20 00:00:57,640 --> 00:01:01,370 Sa loob ng struct, ako ng pagpunta sa tukuyin na ang isang mag-aaral ay magkakaroon ng isang 21 00:01:01,370 --> 00:01:04,960 string na tinatawag na pangalan, at isa pa string na tinatawag na bahay. 22 00:01:04,960 --> 00:01:08,430 Pupunta ako sa pagkatapos isara ang aking kulot tirante, at tukuyin na ang pangalan ng 23 00:01:08,430 --> 00:01:11,420 ito bagong uri ng data ay dapat na mag-aaral. 24 00:01:11,420 --> 00:01:15,550 Sa ibang salita, sa pamamagitan ng ang syntax na ito Mayroon akong ipinahayag ng isang bagong uri ng data sa aking sarili 25 00:01:15,550 --> 00:01:19,910 na hindi umiiral ang isang sandali ang nakalipas, at sa loob ng ganitong uri ng data ay dalawang data 26 00:01:19,910 --> 00:01:24,270 mga patlang o mga kasapi ng data, isa na tinatawag na pangalan, isa na tinatawag na bahay, kung saan pareho siyang 27 00:01:24,270 --> 00:01:25,630 mga uri ng string. 28 00:01:25,630 --> 00:01:27,690 >> Ni na ngayong gamitin ang ganitong uri ng Hayaan sa isang aktwal na programa. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Sa structs0.c, katulad ko na nakuha sarili ko na nagsimula na may ilang mga 31 00:01:34,090 --> 00:01:36,999 boilerplate code, at ako ngayon pagpunta sa gamitin ang data na ito 32 00:01:36,999 --> 00:01:39,100 nagta-type mag-aaral, tulad ng sumusunod. 33 00:01:39,100 --> 00:01:42,450 Unang pupuntahan ko na idedeklara isang hanay ng mga mag-aaral uri, idedetalye ko 34 00:01:42,450 --> 00:01:43,920 tumawag sa array mga mag-aaral - 35 00:01:43,920 --> 00:01:44,630 pangmaramihang - 36 00:01:44,630 --> 00:01:49,360 at kukunin ko na tukuyin na ang laki nito ay magiging tatlong, na kung saan, paunawa, ay ang halaga ng 37 00:01:49,360 --> 00:01:50,880 ang hindi nagbabagong ESTUDYANTE - 38 00:01:50,880 --> 00:01:51,890 sa lahat ng capitals - 39 00:01:51,890 --> 00:01:54,930 na nai-ipinahayag up ako dito, mas maaga sa file. 40 00:01:54,930 --> 00:01:58,280 Ni ngayon umulit sa paglipas ng mga tatlong Hayaan mga mag-aaral, at i-prompt ng gumagamit para sa 41 00:01:58,280 --> 00:02:00,050 ang kanilang mga pangalan at bahay. 42 00:02:00,050 --> 00:02:05,422 >> para int makakuha i 0, i Mababa kaysa na pare-pareho, i + +. 43 00:02:05,422 --> 00:02:08,600 At ngayon sa loob ng katawan ng mga ito para sa loop, pupuntahan ko i-print ang isang bagay 44 00:02:08,600 --> 00:02:11,470 tulad ng pangalan ng mag-aaral. 45 00:02:11,470 --> 00:02:14,890 Pagkatapos ay pupuntahan ko talaga makuha na Pangalan ng mag-aaral sa pamamagitan ng pagtukoy 46 00:02:14,890 --> 00:02:17,290 mga mag-aaral bracket i. 47 00:02:17,290 --> 00:02:21,550 Sa madaling salita gusto ko ang mga mag-aaral i-ika sa array na tinatawag na mga mag-aaral, ngunit ngayon 48 00:02:21,550 --> 00:02:25,340 Gusto kong makakuha ng sa na i-th mag-aaral pangalanan, at upang gawin ito, ako pagpunta sa gamitin 49 00:02:25,340 --> 00:02:30,160 ang. operator, upang makakuha ng sa isang tiyak na field sa loob ng struct. 50 00:02:30,160 --> 00:02:37,100 Kaya tukuyin ako mag-aaral bracket i. Pangalan nakakakuha ng balik halaga ng GetString (). 51 00:02:37,100 --> 00:02:40,310 Samantala, ako pagpunta sa i-print out isang bagay na katulad, na sinasabi mag-aaral 52 00:02:40,310 --> 00:02:45,410 bahay, at ngayon pupuntahan ko tukuyin na ang patlang house mga mag-aaral i-ika 53 00:02:45,410 --> 00:02:49,480 ay dapat makuha ang balik halaga ng isa pang tawag sa GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Ngayon gawin ng isang bagay sa mga tatlong hayaan mga pangalan at bahay mga mag-aaral ', 55 00:02:52,350 --> 00:02:56,230 isang bagay tulad ng pag-print bawat out sa isang pangungusap. 56 00:02:56,230 --> 00:03:07,580 para int i makakuha ng 0, muli i Mababa sa mga mag-aaral, i + +, printf "% s ay sa% s. 57 00:03:07,580 --> 00:03:12,600 backslash n ", at ngayon hayaan mo akong plug ng ang mga halaga ng dalawang mga patlang na iyon, 58 00:03:12,600 --> 00:03:19,055 mga mag-aaral bracket i. pangalan, kuwit, mga mag-aaral bracket i. bahay, isara ang 59 00:03:19,055 --> 00:03:21,290 paren, tuldok-kuwit. 60 00:03:21,290 --> 00:03:23,020 >> At ngayon, kailangan kong gawin ang isa pang bagay. 61 00:03:23,020 --> 00:03:26,600 Sa ilalim ng file na ito, kailangan ko upang palayain ang memory na inilalaan 62 00:03:26,600 --> 00:03:30,290 sa likod ng mga eksena sa pamamagitan ng GetSring (), na siyempre tawag malloc, upang 63 00:03:30,290 --> 00:03:32,500 magtalaga ng memory para sa mga string mga uri ng mga gumagamit. 64 00:03:32,500 --> 00:03:35,720 Ngunit ito sa ay simple. 65 00:03:35,720 --> 00:03:42,610 para int makakuha i 0, i Mababa sa mga mag-aaral, i + +, at sa loob ng katawan ng 66 00:03:42,610 --> 00:03:48,670 ito para sa loop, ako lamang ng pagpunta sa magbigay ng libreng bracket mga mag-aaral i. pangalan, 67 00:03:48,670 --> 00:03:52,300 at ng libreng mga mag-aaral bracket i. bahay. 68 00:03:52,300 --> 00:03:55,620 >> Ngayon, malinaw na namin ang ginamit para sa tatlong mga loop sa programang ito, kapag talaga ako 69 00:03:55,620 --> 00:03:58,800 sana ginamit lamang isa, ngunit ito ay lamang alang-alang sa demonstration, kaya na 70 00:03:58,800 --> 00:04:02,850 maaari naming tukuyin sa tatlong natatanging mga hakbang kung ano ang eksaktong ginagawa namin. 71 00:04:02,850 --> 00:04:06,120 Muna namin nakukuha ang isang pangalan at isang bahay para sa bawat isa sa mga mag-aaral, kami ay pagkatapos 72 00:04:06,120 --> 00:04:08,900 nagpi-print out ang pangalan at ang bahay para sa bawat isa sa mga tatlong mga mag-aaral, at 73 00:04:08,900 --> 00:04:11,910 pagkatapos kami ay pagpunta sa palayain ang memorya ginagamit ng bawat isa sa mga mag-aaral. 74 00:04:11,910 --> 00:04:15,310 Ngunit tiyak na maaari kaming nai pagsamahin ito sa mas malaking para sa loop. 75 00:04:15,310 --> 00:04:18,650 >> Hayaan ang i-save ngayon, ang sumulat ng libro, at patakbuhin ang program na ito. 76 00:04:18,650 --> 00:04:26,850 gumawa structs 0. / structs 0, mag-aaral pangalanan, ay nagbibigay David ipaalam, makakakita siya nakatira 77 00:04:26,850 --> 00:04:31,580 sa Mather House, pangalan ng mag-aaral, sabihin sabihin Lauren, makakakita siya nakatira sa Leverett 78 00:04:31,580 --> 00:04:36,590 House, pangalan ng mag-aaral, Rob, makakakuha siya mabuhay sa Kirkland House. 79 00:04:36,590 --> 00:04:39,440 At sa katunayan, si David ay nasa Mather, Lauren ay nasa Leverett, 80 00:04:39,440 --> 00:04:40,810 at Rob ay nasa Kirkland. 81 00:04:40,810 --> 00:04:43,425