Spreker 1: Kom ons skryf 'n program wat vra die gebruiker om die name en huise van drie studente. Nou, daardie name en huise te stoor ons kan gebruik, wat ses veranderlikes. Drie stringe vir die name, en 'n ander drie snare vir die huise, maar ons weet reeds dat ons kan skoon te maak wat die kode deur die gebruik van skikkings plaas, byvoorbeeld 'n verskeidenheid van grootte 3 vir die drie name, en 'n ander verskeidenheid van grootte 3 vir die huise. Maar dit blyk uit ons dit kan skoon te maak nog verder, en eintlik hou daardie name en huise bymekaar, sodat 'n student se naam en sy of haar huis een of ander manier vervat, so te spreek, in dieselfde veranderlike. Om dit te doen, al is, moet ons om te verklaar ons eie data tipe, ons eie soort in C, dat die skrywers van C nie noodwendig dink aan jare gelede. Om dit te doen, kan ons die term gebruik typedef, saam met die ander navraag struct. Kom ons neem 'n blik. Binnekant van structs.h, ek het reeds gekry het deur insluitend die CS50 biblioteek. Ek is volgende gaan typedef struct om te tik, en dan 'n krullerige stut. Binnekant van die struct, ek gaan om te spesifiseer dat 'n student 'n string genoem naam, en 'n ander string genoem huis. Ek gaan dan sluit my krullerige draadjies, en spesifiseer dat die naam van die hierdie nuwe data tipe sal student wees. Met ander woorde, deur middel van hierdie sintaksis het ek verklaar 'n nuwe data tipe van my eie wat nie bestaan ​​het nie 'n oomblik gelede, en binnekant van die data tipe is twee data velde of data lede, een wat geroep is die naam, een wat geroep is die huis, wat beide is van die tipe string. Kom ons gebruik nou hierdie tipe in 'n werklike program. In structs0.c, ek het insgelyks gekry myself begin reeds met 'n paar boiler kode, en ek is nou gaan hierdie data te gebruik tik student, soos volg. Ek gaan eers 'n te verklaar reeks van die soort student, ek sal noem die skikking studente - meervoud - en ek sal spesifiseer dat sy grootte sal wees drie, wat, kennisgewing, is die waarde van die konstante studente - in hoofletters - dat ek verklaar hier, vroeër in die lêer. Kom ons kyk nou Itereer oor die drie studente, en Vra die gebruiker vir hul name en huise. vir int i kry 0, i minder as wat konstant, i + +. En nou binnekant van die liggaam van hierdie vir lus, ek gaan om uit te druk iets soos die student se naam. Ek is dan gaan eintlik kry dat student se naam deur die spesifiseer studente in hakies i. Met ander woorde ek wil die i-de student in die skikking met die naam studente, maar nou Ek wil graag op daardie i-de student se noem, en om dit te doen, ek gaan om te gebruik die. operateur, in orde te kry op 'n spesifieke veld binne die struct. So ek spesifiseer studente in hakies i. Naam kry die terugkeer waarde van GetString (). Intussen het ek gaan om uit te druk iets soortgelyks, sê student se huis, en nou gaan ek om te spesifiseer dat die i-de studente huis veld sal die terugkeer waarde van kry 'n ander oproep om GetString (). Nou laat ons iets doen met hierdie drie studente se name en huise, iets eenvoudig soos die druk wat elk in 'n sin. vir int ek kry 0, i is weer minder as studente, i + +, printf "% s is in% s. backslash n ", en nou laat my prop in die waardes van die twee velde, studente in hakies i. naam, komma, studente in hakies i. huis, naby paren, kommapunt. En nou, ek moet nog een ding om te doen. Aan die onderkant van hierdie lêer, ek nodig het om te bevry die geheue wat toegeken is agter die skerms deur GetSring (), wat natuurlik noem malloc, ten einde te toeken geheue vir die snare die gebruiker. Maar om dit te eenvoudig is. vir int i kry 0, i is minder as studente, i + +, en binne-in die liggaam van hierdie lus, ek eenvoudig gaan verskaf gratis studente bracket i. naam, en gratis studente in hakies i. huis. Nou, ons het duidelik gebruik drie sirkelroetes vir in hierdie program, toe ek regtig kon net gebruik om een, maar dit is net ter wille van demonstrasie's, sodat ons kan spesifiseer in drie afsonderlike stappe wat presies ons doen. Ons is die eerste om 'n naam en 'n huis vir elk van die studente, ons is dan druk die naam en die huis vir elk van die drie studente en dan gaan ons die geheue te bevry gebruik word deur elk van die studente. Maar sekerlik kan ons het dit kombineer in een groter lus. Kom ons nou ook red, saamstel, en die uitvoering van hierdie program. maak structs 0. / structs 0, student se noem, laat ons voorsien Dawid, sal hy lewe in Mather House, student se naam, laat ons sê Lauren, sy sal in Leverett lewe House, student se naam, Rob, hy sal woon in Kirkland House. En inderdaad, Dawid is in Mather, Lauren is in Leverett, en Rob is in Kirkland.