Tagapagsalita 1: magsulat ng isang programa Hayaan na prompt ang user para sa mga pangalan at mga bahay ng tatlong mga mag-aaral. Ngayon, mag-imbak ng mga pangalan at mga bahay maaari naming gamitin, ano, anim na variable. Tatlong mga string para sa mga pangalan, at isa pa tatlong mga string para sa mga bahay, ngunit kami na malaman na maaaring linisin namin up ang code na iyon sa pamamagitan ng paggamit array sa halip, halimbawa ng isang hanay ng mga laki 3 para sa tatlong pangalan, at ng isa pang hanay ng mga laki 3 para sa mga bahay. Ngunit ito ay lumiliko out maaari naming linisin ito up karagdagang pa rin, at talagang panatilihin ang mga mga pangalan at mga bahay-sama, upang ang isang Pangalan ng mag-aaral at ang kanyang bahay ay kahit papaano ay encapsulated, kaya upang magsalita, sa parehong variable. Upang gawin ito, bagaman, kailangan namin na idedeklara ang aming sariling uri ng data, ang aming sariling uri sa C, na ang mga may-akda ng C ginawang hindi kinakailangang isipin taon na ang nakakaraan. Upang gawin ito na maaari naming gamitin ang keyword na typedef, kasama ang iba pang mga struct keyword. Hayaan ang kumuha ng isang hitsura. Sa loob ng structs.h, na hindi ko pa nakuha na sinimulan sa pamamagitan ng kabilang ang CS50 library. Susunod na pupuntahan ko type typedef struct, at pagkatapos ay isang kulot suhay. Sa loob ng struct, ako ng pagpunta sa tukuyin na ang isang mag-aaral ay magkakaroon ng isang string na tinatawag na pangalan, at isa pa string na tinatawag na bahay. Pupunta ako sa pagkatapos isara ang aking kulot tirante, at tukuyin na ang pangalan ng ito bagong uri ng data ay dapat na mag-aaral. Sa ibang salita, sa pamamagitan ng ang syntax na ito Mayroon akong ipinahayag ng isang bagong uri ng data sa aking sarili na hindi umiiral ang isang sandali ang nakalipas, at sa loob ng ganitong uri ng data ay dalawang data mga patlang o mga kasapi ng data, isa na tinatawag na pangalan, isa na tinatawag na bahay, kung saan pareho siyang mga uri ng string. Ni na ngayong gamitin ang ganitong uri ng Hayaan sa isang aktwal na programa. Sa structs0.c, katulad ko na nakuha sarili ko na nagsimula na may ilang mga boilerplate code, at ako ngayon pagpunta sa gamitin ang data na ito nagta-type mag-aaral, tulad ng sumusunod. Unang pupuntahan ko na idedeklara isang hanay ng mga mag-aaral uri, idedetalye ko tumawag sa array mga mag-aaral - pangmaramihang - at kukunin ko na tukuyin na ang laki nito ay magiging tatlong, na kung saan, paunawa, ay ang halaga ng ang hindi nagbabagong ESTUDYANTE - sa lahat ng capitals - na nai-ipinahayag up ako dito, mas maaga sa file. Ni ngayon umulit sa paglipas ng mga tatlong Hayaan mga mag-aaral, at i-prompt ng gumagamit para sa ang kanilang mga pangalan at bahay. para int makakuha i 0, i Mababa kaysa na pare-pareho, i + +. At ngayon sa loob ng katawan ng mga ito para sa loop, pupuntahan ko i-print ang isang bagay tulad ng pangalan ng mag-aaral. Pagkatapos ay pupuntahan ko talaga makuha na Pangalan ng mag-aaral sa pamamagitan ng pagtukoy mga mag-aaral bracket i. Sa madaling salita gusto ko ang mga mag-aaral i-ika sa array na tinatawag na mga mag-aaral, ngunit ngayon Gusto kong makakuha ng sa na i-th mag-aaral pangalanan, at upang gawin ito, ako pagpunta sa gamitin ang. operator, upang makakuha ng sa isang tiyak na field sa loob ng struct. Kaya tukuyin ako mag-aaral bracket i. Pangalan nakakakuha ng balik halaga ng GetString (). Samantala, ako pagpunta sa i-print out isang bagay na katulad, na sinasabi mag-aaral bahay, at ngayon pupuntahan ko tukuyin na ang patlang house mga mag-aaral i-ika ay dapat makuha ang balik halaga ng isa pang tawag sa GetString (). Ngayon gawin ng isang bagay sa mga tatlong hayaan mga pangalan at bahay mga mag-aaral ', isang bagay tulad ng pag-print bawat out sa isang pangungusap. para int i makakuha ng 0, muli i Mababa sa mga mag-aaral, i + +, printf "% s ay sa% s. backslash n ", at ngayon hayaan mo akong plug ng ang mga halaga ng dalawang mga patlang na iyon, mga mag-aaral bracket i. pangalan, kuwit, mga mag-aaral bracket i. bahay, isara ang paren, tuldok-kuwit. At ngayon, kailangan kong gawin ang isa pang bagay. Sa ilalim ng file na ito, kailangan ko upang palayain ang memory na inilalaan sa likod ng mga eksena sa pamamagitan ng GetSring (), na siyempre tawag malloc, upang magtalaga ng memory para sa mga string mga uri ng mga gumagamit. Ngunit ito sa ay simple. para int makakuha i 0, i Mababa sa mga mag-aaral, i + +, at sa loob ng katawan ng ito para sa loop, ako lamang ng pagpunta sa magbigay ng libreng bracket mga mag-aaral i. pangalan, at ng libreng mga mag-aaral bracket i. bahay. Ngayon, malinaw na namin ang ginamit para sa tatlong mga loop sa programang ito, kapag talaga ako sana ginamit lamang isa, ngunit ito ay lamang alang-alang sa demonstration, kaya na maaari naming tukuyin sa tatlong natatanging mga hakbang kung ano ang eksaktong ginagawa namin. Muna namin nakukuha ang isang pangalan at isang bahay para sa bawat isa sa mga mag-aaral, kami ay pagkatapos nagpi-print out ang pangalan at ang bahay para sa bawat isa sa mga tatlong mga mag-aaral, at pagkatapos kami ay pagpunta sa palayain ang memorya ginagamit ng bawat isa sa mga mag-aaral. Ngunit tiyak na maaari kaming nai pagsamahin ito sa mas malaking para sa loop. Hayaan ang i-save ngayon, ang sumulat ng libro, at patakbuhin ang program na ito. gumawa structs 0. / structs 0, mag-aaral pangalanan, ay nagbibigay David ipaalam, makakakita siya nakatira sa Mather House, pangalan ng mag-aaral, sabihin sabihin Lauren, makakakita siya nakatira sa Leverett House, pangalan ng mag-aaral, Rob, makakakuha siya mabuhay sa Kirkland House. At sa katunayan, si David ay nasa Mather, Lauren ay nasa Leverett, at Rob ay nasa Kirkland.