2 00:00:00,000 --> 00:00:02,760 >> ЗВУЧНИК 1: Да се ​​напише програма која поттикнува на корисникот за имињата и 3 00:00:02,760 --> 00:00:04,700 куќи на тројца студенти. 4 00:00:04,700 --> 00:00:08,840 Сега, за да ја запази тие имиња и куќи ние би можеле да ги користат, што, шест променливи. 5 00:00:08,840 --> 00:00:12,260 Три жици за имињата, а друг три жици за куќи, 6 00:00:12,260 --> 00:00:16,560 но ние веќе знаеме дека можеме да се исчисти дека кодот со користење на низи, наместо тоа, 7 00:00:16,560 --> 00:00:20,220 на пример низа на големината 3 за три имиња, а друг спектар на 8 00:00:20,220 --> 00:00:22,110 големина 3 за куќите. 9 00:00:22,110 --> 00:00:25,870 Но излегува можеме да се исчисти овој до понатаму, сепак, и всушност ги задржи оние 10 00:00:25,870 --> 00:00:30,520 име и куќи заедно, така што студент името и неговите или нејзините куќа 11 00:00:30,520 --> 00:00:34,940 се некако врзуваат, така да зборуваат, во истата променлива. 12 00:00:34,940 --> 00:00:39,095 >> Да го направите ова, сепак, ние треба да се изјасни нашите сопствени тип на податоци, нашата сопствена тип во C, 13 00:00:39,095 --> 00:00:42,660 дека авторите на C не мора да значи мислам на години. 14 00:00:42,660 --> 00:00:45,630 Да го направите ова можеме да го користиме клучниот збор typedef, заедно со 15 00:00:45,630 --> 00:00:47,200 други клучни struct. 16 00:00:47,200 --> 00:00:48,160 Ајде да ги разгледаме. 17 00:00:48,160 --> 00:00:50,650 Внатрешноста на structs.h, јас сум веќе добивано отворени од 18 00:00:50,650 --> 00:00:52,560 вклучувајќи CS50 библиотека. 19 00:00:52,560 --> 00:00:57,640 Јас сум следната случува да напишеш typedef struct, а потоа и кадрава голема заграда. 20 00:00:57,640 --> 00:01:01,370 Внатрешноста на struct, јас ќе одам да се каже дека студент ќе имаат 21 00:01:01,370 --> 00:01:04,960 низа наречен име, и друга низа наречен куќа. 22 00:01:04,960 --> 00:01:08,430 Одам да потоа затворете моите големи загради, и наведете дека името на 23 00:01:08,430 --> 00:01:11,420 овој нов тип на податоци ќе биде студент. 24 00:01:11,420 --> 00:01:15,550 Со други зборови, преку оваа синтакса треба јас прогласена нов тип на податоци на мојот сопствен 25 00:01:15,550 --> 00:01:19,910 кои не постојат пред еден миг, и внатрешноста на овој тип на податоци се две податоци 26 00:01:19,910 --> 00:01:24,270 области или податоците членови, еден вика име, еден вика куќа, од кои и двете 27 00:01:24,270 --> 00:01:25,630 се од типот стринг. 28 00:01:25,630 --> 00:01:27,690 >> Ајде сега се користи овој вид во вистински програма. 29 00:01:27,690 --> 00:01:30,210 30 00:01:30,210 --> 00:01:34,090 Во structs0.c, јас сум сличен добивано јас веќе започна со некои 31 00:01:34,090 --> 00:01:36,999 boilerplate код, и јас сум сега ќе ги користи овие податоци 32 00:01:36,999 --> 00:01:39,100 тип студент, како што следи. 33 00:01:39,100 --> 00:01:42,450 Јас сум прв ќе се изјаснат за постројка од типот студент, јас ќе 34 00:01:42,450 --> 00:01:43,920 јавете се на низа студенти - 35 00:01:43,920 --> 00:01:44,630 множина - 36 00:01:44,630 --> 00:01:49,360 и јас ќе се определи дека нејзината големина ќе биде три, што, информации, е вредноста на 37 00:01:49,360 --> 00:01:50,880 постојана студенти - 38 00:01:50,880 --> 00:01:51,890 во сите главни градови - 39 00:01:51,890 --> 00:01:54,930 што сум прогласен за до тука, на почетокот на датотеката. 40 00:01:54,930 --> 00:01:58,280 Ајде сега iterate преку овие три студенти, и го извести корисникот за 41 00:01:58,280 --> 00:02:00,050 нивните имиња и куќи. 42 00:02:00,050 --> 00:02:05,422 >> за int i добие 0, i е помалку од тоа постојано, i + +. 43 00:02:05,422 --> 00:02:08,600 И сега во внатрешноста на телото на овој за јамка, јас ќе одам да се печати нешто 44 00:02:08,600 --> 00:02:11,470 како име студентот. 45 00:02:11,470 --> 00:02:14,890 Јас сум тогаш ќе всушност се добие дека студент името со впишување 46 00:02:14,890 --> 00:02:17,290 студенти заградата јас. 47 00:02:17,290 --> 00:02:21,550 Со други зборови сакам i-тиот студент во низата наречена студенти, но сега 48 00:02:21,550 --> 00:02:25,340 Сакам да добијам во тоа i-тиот студентот име, и да го направите ова, ќе одам да се користи 49 00:02:25,340 --> 00:02:30,160 на. оператор, со цел да се добие на специфична област во внатрешноста на struct. 50 00:02:30,160 --> 00:02:37,100 Па јас наведете студенти заградата јас. Име добива повратната вредност на GetString (). 51 00:02:37,100 --> 00:02:40,310 Во меѓувреме, јас ќе одам да се печати нешто слично, велејќи студентот 52 00:02:40,310 --> 00:02:45,410 куќа, и сега ќе одам да се определи дека студентите куќата поле i-тиот 53 00:02:45,410 --> 00:02:49,480 ќе добиете вратената вредност од уште еден повик да GetString (). 54 00:02:49,480 --> 00:02:52,350 >> Сега, ајде да направиме нешто со овие три учениците имиња и куќи, 55 00:02:52,350 --> 00:02:56,230 нешто едноставно како печатење секој во една реченица. 56 00:02:56,230 --> 00:03:07,580 за int i се 0, повторно i е помал од студенти, i + +, printf "% s во% s. 57 00:03:07,580 --> 00:03:12,600 обратна коса црта n ", а сега дозволете ми да го приклучиш во вредностите на тие две полиња, 58 00:03:12,600 --> 00:03:19,055 студенти заградата јас. име, запирка, студенти заградата јас. куќа, во близина 59 00:03:19,055 --> 00:03:21,290 paren, точка-запирка. 60 00:03:21,290 --> 00:03:23,020 >> И сега јас треба да направите уште една работа. 61 00:03:23,020 --> 00:03:26,600 На дното од оваа датотека, јас треба да ослободи меморија, која беше распоредена 62 00:03:26,600 --> 00:03:30,290 зад сцената од GetSring (), кои на текот повикува malloc, со цел да се 63 00:03:30,290 --> 00:03:32,500 алоцира меморија за низи корисникот типови. 64 00:03:32,500 --> 00:03:35,720 Но, ова да е едноставна. 65 00:03:35,720 --> 00:03:42,610 за int i добие 0, i е помал од студенти, i + +, и во внатрешноста на телото на 66 00:03:42,610 --> 00:03:48,670 ова за телефонска линија, јас сум едноставно ќе обезбеди бесплатен студенти заградата јас. име, 67 00:03:48,670 --> 00:03:52,300 и слободни студенти заградата јас. куќа. 68 00:03:52,300 --> 00:03:55,620 >> Сега, ние сме јасно користи три за петелки Во оваа програма, кога навистина јас 69 00:03:55,620 --> 00:03:58,800 може да има само користи една, но ова е само заради демонстрација, така што 70 00:03:58,800 --> 00:04:02,850 може да се определи во три различни чекори што точно правите. 71 00:04:02,850 --> 00:04:06,120 Ние сме првата добивање на име и куќа за секој од студентите, ние сме тогаш 72 00:04:06,120 --> 00:04:08,900 печатење името и куќата за секоја од трите студенти и 73 00:04:08,900 --> 00:04:11,910 тогаш ние ќе треба да се ослободи меморија користи од страна на секој од студентите. 74 00:04:11,910 --> 00:04:15,310 Но сигурно би можеле да го комбинирате оваа во една поголема за телефонска линија. 75 00:04:15,310 --> 00:04:18,650 >> Ајде сега спаси, состави, и да ја стартувате програмата. 76 00:04:18,650 --> 00:04:26,850 направи structs 0. / structs 0, студентот име, ајде да се обезбеди Давид, тој ќе живее 77 00:04:26,850 --> 00:04:31,580 во Mather куќа, името на студентот, да велат Лорен, таа ќе живеат во Leverett 78 00:04:31,580 --> 00:04:36,590 Куќа, името на студентот, Роб, тој ќе живеат во Киркланд куќа. 79 00:04:36,590 --> 00:04:39,440 И навистина, Давид е во Mather, Лорен е во Leverett, 80 00:04:39,440 --> 00:04:40,810 и Роб е во Киркланд. 81 00:04:40,810 --> 00:04:43,425