ЗВУЧНИК 1: Да се ​​напише програма која поттикнува на корисникот за имињата и куќи на тројца студенти. Сега, за да ја запази тие имиња и куќи ние би можеле да ги користат, што, шест променливи. Три жици за имињата, а друг три жици за куќи, но ние веќе знаеме дека можеме да се исчисти дека кодот со користење на низи, наместо тоа, на пример низа на големината 3 за три имиња, а друг спектар на големина 3 за куќите. Но излегува можеме да се исчисти овој до понатаму, сепак, и всушност ги задржи оние име и куќи заедно, така што студент името и неговите или нејзините куќа се некако врзуваат, така да зборуваат, во истата променлива. Да го направите ова, сепак, ние треба да се изјасни нашите сопствени тип на податоци, нашата сопствена тип во C, дека авторите на C не мора да значи мислам на години. Да го направите ова можеме да го користиме клучниот збор typedef, заедно со други клучни struct. Ајде да ги разгледаме. Внатрешноста на structs.h, јас сум веќе добивано отворени од вклучувајќи CS50 библиотека. Јас сум следната случува да напишеш typedef struct, а потоа и кадрава голема заграда. Внатрешноста на struct, јас ќе одам да се каже дека студент ќе имаат низа наречен име, и друга низа наречен куќа. Одам да потоа затворете моите големи загради, и наведете дека името на овој нов тип на податоци ќе биде студент. Со други зборови, преку оваа синтакса треба јас прогласена нов тип на податоци на мојот сопствен кои не постојат пред еден миг, и внатрешноста на овој тип на податоци се две податоци области или податоците членови, еден вика име, еден вика куќа, од кои и двете се од типот стринг. Ајде сега се користи овој вид во вистински програма. Во structs0.c, јас сум сличен добивано јас веќе започна со некои boilerplate код, и јас сум сега ќе ги користи овие податоци тип студент, како што следи. Јас сум прв ќе се изјаснат за постројка од типот студент, јас ќе јавете се на низа студенти - множина - и јас ќе се определи дека нејзината големина ќе биде три, што, информации, е вредноста на постојана студенти - во сите главни градови - што сум прогласен за до тука, на почетокот на датотеката. Ајде сега iterate преку овие три студенти, и го извести корисникот за нивните имиња и куќи. за int i добие 0, i е помалку од тоа постојано, i + +. И сега во внатрешноста на телото на овој за јамка, јас ќе одам да се печати нешто како име студентот. Јас сум тогаш ќе всушност се добие дека студент името со впишување студенти заградата јас. Со други зборови сакам i-тиот студент во низата наречена студенти, но сега Сакам да добијам во тоа i-тиот студентот име, и да го направите ова, ќе одам да се користи на. оператор, со цел да се добие на специфична област во внатрешноста на struct. Па јас наведете студенти заградата јас. Име добива повратната вредност на GetString (). Во меѓувреме, јас ќе одам да се печати нешто слично, велејќи студентот куќа, и сега ќе одам да се определи дека студентите куќата поле i-тиот ќе добиете вратената вредност од уште еден повик да GetString (). Сега, ајде да направиме нешто со овие три учениците имиња и куќи, нешто едноставно како печатење секој во една реченица. за int i се 0, повторно i е помал од студенти, i + +, printf "% s во% s. обратна коса црта n ", а сега дозволете ми да го приклучиш во вредностите на тие две полиња, студенти заградата јас. име, запирка, студенти заградата јас. куќа, во близина paren, точка-запирка. И сега јас треба да направите уште една работа. На дното од оваа датотека, јас треба да ослободи меморија, која беше распоредена зад сцената од GetSring (), кои на текот повикува malloc, со цел да се алоцира меморија за низи корисникот типови. Но, ова да е едноставна. за int i добие 0, i е помал од студенти, i + +, и во внатрешноста на телото на ова за телефонска линија, јас сум едноставно ќе обезбеди бесплатен студенти заградата јас. име, и слободни студенти заградата јас. куќа. Сега, ние сме јасно користи три за петелки Во оваа програма, кога навистина јас може да има само користи една, но ова е само заради демонстрација, така што може да се определи во три различни чекори што точно правите. Ние сме првата добивање на име и куќа за секој од студентите, ние сме тогаш печатење името и куќата за секоја од трите студенти и тогаш ние ќе треба да се ослободи меморија користи од страна на секој од студентите. Но сигурно би можеле да го комбинирате оваа во една поголема за телефонска линија. Ајде сега спаси, состави, и да ја стартувате програмата. направи structs 0. / structs 0, студентот име, ајде да се обезбеди Давид, тој ќе живее во Mather куќа, името на студентот, да велат Лорен, таа ќе живеат во Leverett Куќа, името на студентот, Роб, тој ќе живеат во Киркланд куќа. И навистина, Давид е во Mather, Лорен е во Leverett, и Роб е во Киркланд.