1 00:00:00,000 --> 00:00:03,388 >> [Music kucheza] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: zote haki. 4 00:00:06,020 --> 00:00:07,680 Kufanya kazi na moja vigezo ni pretty furaha. 5 00:00:07,680 --> 00:00:09,500 Lakini nini kama tunataka kufanya kazi na mengi ya vigezo, 6 00:00:09,500 --> 00:00:12,760 lakini hatutaki kuwa na rundo la majina tofauti kuruka karibu kificho zetu? 7 00:00:12,760 --> 00:00:15,980 Katika kesi hiyo, arrays ni atakuja katika kweli Handy. 8 00:00:15,980 --> 00:00:19,510 Arrays ni data kweli za msingi muundo wa lugha yoyote programu 9 00:00:19,510 --> 00:00:20,260 kwamba utatumia. 10 00:00:20,260 --> 00:00:24,450 Na wao ni kweli, muhimu kweli kweli, hasa, kama tutaweza kuona, katika CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Sisi kutumia arrays kushikilia maadili ya data aina moja 12 00:00:27,870 --> 00:00:29,830 katika maeneo ya kumbukumbu contiguous. 13 00:00:29,830 --> 00:00:32,430 Hiyo ni kusema, ni njia hiyo tunaweza kundi 14 00:00:32,430 --> 00:00:35,430 rundo la integers pamoja katika kumbukumbu au kundi la wahusika 15 00:00:35,430 --> 00:00:38,270 au ikifungwa katika kumbukumbu kweli karibu pamoja na kazi 16 00:00:38,270 --> 00:00:41,930 nao bila ya kuwa na kutoa kila moja pekee yake mwenyewe jina, ambayo inaweza 17 00:00:41,930 --> 00:00:44,500 kupata mbaya baada ya muda mfupi. 18 00:00:44,500 --> 00:00:48,130 >> Sasa, njia moja ya analogize arrays ni kufikiri kuhusu wadhifa eneo lako 19 00:00:48,130 --> 00:00:49,000 Ofisi ya pili. 20 00:00:49,000 --> 00:00:51,820 Hivyo hatua mbali na kompyuta na tu karibu na macho yako 21 00:00:51,820 --> 00:00:54,120 na taswira katika akili yako baada ya ofisi ya eneo lako. 22 00:00:54,120 --> 00:00:57,160 Kwa kawaida, katika zaidi baada ofisi, kuna benki kubwa 23 00:00:57,160 --> 00:01:00,490 masanduku ofisi ya posta kwenye ukuta. 24 00:01:00,490 --> 00:01:03,510 >> Safu ni kuzuia kubwa ya contiguous ya kumbukumbu, 25 00:01:03,510 --> 00:01:06,120 njia ile ile ambayo pepe benki katika ofisi yako baada 26 00:01:06,120 --> 00:01:11,230 ni nafasi kubwa ya ukuta wa ofisi ya mwisho. 27 00:01:11,230 --> 00:01:15,750 Arrays wamekuwa partitioned ndani ya ndogo, identically vitalu ukubwa wa nafasi, 28 00:01:15,750 --> 00:01:19,930 kila mmoja uitwao kipengele, katika njia ile ile ambayo ukuta wa baada 29 00:01:19,930 --> 00:01:23,840 Ofisi imekuwa partitioned ndani ya ndogo, identically vitalu ukubwa wa nafasi, 30 00:01:23,840 --> 00:01:27,560 ambayo sisi kuwaita SLP. 31 00:01:27,560 --> 00:01:31,650 Kila kipengele cha safu Unaweza kuhifadhi kiasi fulani cha data, 32 00:01:31,650 --> 00:01:37,540 tu kama kila sanduku baada ya ofisi ni uwezo kushikilia kiasi fulani cha barua. 33 00:01:37,540 --> 00:01:41,540 >> Nini inaweza kuhifadhiwa katika kila kipengele cha safu ni vigezo ya data huo 34 00:01:41,540 --> 00:01:45,300 aina, kama vile int au Char, tu kama katika yako sanduku ofisi ya posta, 35 00:01:45,300 --> 00:01:47,300 unaweza tu fit mambo ya aina hiyo, 36 00:01:47,300 --> 00:01:50,430 kama vile barua au vifurushi vidogo. 37 00:01:50,430 --> 00:01:55,050 Mwisho, tuweze kupata kila kipengele cha safu moja kwa moja na ripoti idadi, 38 00:01:55,050 --> 00:01:59,770 kama tunaweza kupata ofisi yetu baada sanduku kwa kujua mailbox namba yake. 39 00:01:59,770 --> 00:02:02,750 Hopefully, kwamba mfano husaidia kupata kichwa yako 40 00:02:02,750 --> 00:02:05,540 kuzunguka wazo la arrays na analogizing kwa kitu kingine 41 00:02:05,540 --> 00:02:08,400 kuwa wewe ni pengine tayari ukoo na. 42 00:02:08,400 --> 00:02:13,182 >> Katika C, mambo ya safu ni indexed kuanzia 0, si kutoka 1. 43 00:02:13,182 --> 00:02:14,390 Na hii ni kweli ni muhimu. 44 00:02:14,390 --> 00:02:18,530 Na kwa kweli, hii ni kwa nini sisi, katika CS 50, na kwa nini wanasayansi wa kompyuta mara nyingi 45 00:02:18,530 --> 00:02:22,150 kuhesabu kutoka 0, ni kwa sababu ya C ya safu 46 00:02:22,150 --> 00:02:24,660 Indexing, ambayo daima kuanza saa 0. 47 00:02:24,660 --> 00:02:28,730 Hivyo kama safu lina vipengele n, sehemu ya kwanza ya kwamba safu 48 00:02:28,730 --> 00:02:32,960 iko katika index 0, na kipengele mwisho wa safu 49 00:02:32,960 --> 00:02:36,610 iko katika ripoti n bala 1. 50 00:02:36,610 --> 00:02:43,160 Tena, kama kuna mambo n katika yetu safu, jana ripoti ni n bala 1. 51 00:02:43,160 --> 00:02:46,820 >> Hivyo kama safu yetu ina mambo 50, kitu cha kwanza iko katika index 0, 52 00:02:46,820 --> 00:02:51,060 na kipengele mwisho iko katika ripoti 49. 53 00:02:51,060 --> 00:02:53,940 Kwa bahati mbaya, au kwa bahati nzuri, kutegemea na mtazamo wako, 54 00:02:53,940 --> 00:02:56,170 C ni lenient sana hapa. 55 00:02:56,170 --> 00:02:59,480 Itakuwa si kuzuia kutoka kwenda nje ya mipaka ya safu yako. 56 00:02:59,480 --> 00:03:03,080 Unaweza kupata bala 3 kipengele cha safu yako 57 00:03:03,080 --> 00:03:07,400 au kipengele 59 wa safu yako, kama safu yako tu ina 50 vipengele. 58 00:03:07,400 --> 00:03:11,060 Itakuwa si kuacha mpango wako kutoka kuandaa, lakini wakati huo kukimbia, 59 00:03:11,060 --> 00:03:14,350 unaweza kukutana dreaded segmentation kosa 60 00:03:14,350 --> 00:03:17,460 kama kuanza kupata kumbukumbu kuwa ni nje ya mipaka ya nini 61 00:03:17,460 --> 00:03:19,260 wewe aliuliza mpango wako kukupa. 62 00:03:19,260 --> 00:03:21,250 Hivyo kuwa makini. 63 00:03:21,250 --> 00:03:23,120 >> Je safu Tamko kuangalia kama? 64 00:03:23,120 --> 00:03:26,940 Je, sisi kanuni safu katika kuwepo kama sisi kanuni kutofautiana nyingine yoyote? 65 00:03:26,940 --> 00:03:31,250 Kuna sehemu tatu kwa safu declaration-- aina, jina, 66 00:03:31,250 --> 00:03:31,880 na ukubwa. 67 00:03:31,880 --> 00:03:34,088 Hii ni sawa na kutofautiana tamko, ambayo 68 00:03:34,088 --> 00:03:36,970 ni tu aina na jina, ukubwa kipengele kuwa 69 00:03:36,970 --> 00:03:39,860 kesi maalum kwa safu, kwa sababu sisi ni kupata rundo la yao 70 00:03:39,860 --> 00:03:41,830 wakati huo huo. 71 00:03:41,830 --> 00:03:45,560 >> Hivyo ni aina ni aina gani ya kutofautiana wewe wanataka kila kipengele cha safu kuwa. 72 00:03:45,560 --> 00:03:47,150 Je, unataka kwa safu ya integers? 73 00:03:47,150 --> 00:03:49,010 Kisha, aina yako data inapaswa kuwa int. 74 00:03:49,010 --> 00:03:51,760 Je, unataka kuwa ni safu ya mara mbili au ikifungwa? 75 00:03:51,760 --> 00:03:54,545 Takwimu aina wanapaswa kuwa mara mbili au kuelea. 76 00:03:54,545 --> 00:03:56,420 Jina ni nini unataka simu safu yako. 77 00:03:56,420 --> 00:04:00,970 Unataka nini kwa jina kubwa hii benki ya integers au ikifungwa au chars 78 00:04:00,970 --> 00:04:03,250 au mara mbili, au chochote na wewe? 79 00:04:03,250 --> 00:04:04,700 Je, unataka simu yake? 80 00:04:04,700 --> 00:04:06,110 Pretty maelezo binafsi. 81 00:04:06,110 --> 00:04:08,610 >> Mwisho, ukubwa, ambayo inakwenda ndani ya mabano mraba, 82 00:04:08,610 --> 00:04:12,180 ni jinsi mambo mengi wewe ungekuwa kama safu yako na vyenye. 83 00:04:12,180 --> 00:04:13,530 Jinsi integers wengi unataka? 84 00:04:13,530 --> 00:04:15,570 Jinsi ikifungwa nyingi unataka? 85 00:04:15,570 --> 00:04:19,070 >> Hivyo kwa mfano, int darasa mwanafunzi 40. 86 00:04:19,070 --> 00:04:26,020 Hii inatangaza safu kuitwa Mwanafunzi darasa, ambalo lina 40 integers. 87 00:04:26,020 --> 00:04:28,180 Pretty maelezo binafsi, mimi matumaini. 88 00:04:28,180 --> 00:04:29,330 Hapa ni mfano mwingine. 89 00:04:29,330 --> 00:04:31,560 Double orodha bei 8. 90 00:04:31,560 --> 00:04:34,610 Hii inajenga safu kuitwa Orodha ya bei, ambalo lina 91 00:04:34,610 --> 00:04:38,300 ya chumba katika kumbukumbu kwa mara mbili nane. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Kama unafikiri ya kila kipengele ya safu ya aina data-aina, 94 00:04:45,750 --> 00:04:49,860 hivyo kwa mfano, kipengele moja ya safu ya aina int, kwa njia hiyo hiyo 95 00:04:49,860 --> 00:04:52,770 kudhani ya mtu mwingine yeyote kutofautiana wa aina int, 96 00:04:52,770 --> 00:04:56,440 shughuli zote ukoo kwamba sisi kujadiliwa hapo awali katika Uendeshaji 97 00:04:56,440 --> 00:04:58,270 video itakuwa mantiki. 98 00:04:58,270 --> 00:05:01,620 Hivyo hapa, tunaweza kutangaza safu ya Booleans aitwaye Truthtable, 99 00:05:01,620 --> 00:05:05,590 ambalo lina nafasi ya 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Na kisha, tu kama sisi inaweza tu kuwapa thamani ya kutofautiana nyingine yoyote ya aina 101 00:05:09,650 --> 00:05:13,470 Boolean, tunaweza kusema kitu kama Truthtable mraba mabano 102 00:05:13,470 --> 00:05:18,040 2, ambayo ni jinsi sisi zinaonyesha, ambayo kipengele cha meza kweli? 103 00:05:18,040 --> 00:05:20,350 Sehemu ya tatu ya ukweli meza, kwa sababu kumbuka, 104 00:05:20,350 --> 00:05:21,800 sisi ni kuhesabu kutoka 0. 105 00:05:21,800 --> 00:05:25,690 Hivyo hiyo ni jinsi sisi zinaonyesha Sehemu ya tatu ya meza ukweli. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 sawa na uongo, kama tungeweza declare-- 107 00:05:28,680 --> 00:05:33,560 au tunaweza kuwapa, badala yake, yoyote Boolean aina kutofautiana kuwa uongo. 108 00:05:33,560 --> 00:05:35,050 >> Tunaweza pia kutumia katika hali ya. 109 00:05:35,050 --> 00:05:39,000 kama (truthtable 7 == kweli), ambayo ni kusema, 110 00:05:39,000 --> 00:05:42,370 kama kipengele nane ya Truthtable ni kweli, 111 00:05:42,370 --> 00:05:46,760 labda tunataka magazeti ujumbe kwa mtumiaji, printf ("KWELI! n") ;. 112 00:05:46,760 --> 00:05:50,290 Ambayo inatufanya kusema Truthtable 10 sawa na kweli, haki? 113 00:05:50,290 --> 00:05:53,590 Naam, naweza, lakini ni pretty hatari, kwa sababu kumbuka, 114 00:05:53,590 --> 00:05:56,260 tuna safu ya 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Hivyo ripoti juu kwamba compiler ametupa ni 9. 116 00:06:02,340 --> 00:06:06,010 >> Mpango huu kukusanya, lakini kama kitu kingine katika kumbukumbu 117 00:06:06,010 --> 00:06:09,110 lipo ambapo tunataka wanatarajia Truthtable 10 kwenda, 118 00:06:09,110 --> 00:06:13,980 tunaweza kuteseka segmentation kosa. Sisi inaweza kupata mbali na hayo, lakini kwa ujumla, 119 00:06:13,980 --> 00:06:14,710 pretty hatari. 120 00:06:14,710 --> 00:06:19,759 Hivyo nini mimi kufanya hapa ni kisheria C, lakini si lazima hoja bora. 121 00:06:19,759 --> 00:06:22,300 Sasa, wakati wewe kutangaza na initialize safu wakati huo huo, 122 00:06:22,300 --> 00:06:23,960 kuna kweli pretty syntax maalum kwamba 123 00:06:23,960 --> 00:06:26,250 Unaweza kutumia kujaza juu safu na maadili yake ya kuanza. 124 00:06:26,250 --> 00:06:30,130 Inaweza kupata mbaya kwa kutangaza safu ya ukubwa 100, 125 00:06:30,130 --> 00:06:33,430 na kisha kusema, kipengele 0 sawa huu; kipengele 1 ni sawa na hii; 126 00:06:33,430 --> 00:06:34,850 kipengele 2 sawa na hiyo. 127 00:06:34,850 --> 00:06:36,370 Nini maana, sawa? 128 00:06:36,370 --> 00:06:39,470 >> Kama ni safu ndogo, wewe anaweza kufanya kitu kama hiki. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 sawa na ya wazi curly brace na kisha comma 130 00:06:44,360 --> 00:06:48,060 kutenganisha orodha ya mambo kwamba unataka kuweka katika safu. 131 00:06:48,060 --> 00:06:50,520 Kisha kufunga curly brace semicolon. 132 00:06:50,520 --> 00:06:53,910 Hii inajenga safu ya ukubwa tatu aitwaye Truthtable, 133 00:06:53,910 --> 00:06:56,090 na mambo ya uongo, kweli, na kweli. 134 00:06:56,090 --> 00:06:59,270 Na kwa kweli, instantiation syntax nina hapa ni 135 00:06:59,270 --> 00:07:03,350 sawa kama kufanya mtu binafsi kipengele syntax hapa chini. 136 00:07:03,350 --> 00:07:09,380 Hizi njia mbili za coding ingekuwa kuzalisha halisi safu moja. 137 00:07:09,380 --> 00:07:11,740 >> Vile vile, tunaweza iterate zaidi ya yote ya mambo 138 00:07:11,740 --> 00:07:15,400 wa safu kutumia kitanzi, ambayo, kwa kweli, ni sana sana ilipendekeza 139 00:07:15,400 --> 00:07:16,790 at-nyumbani zoezi hilo. 140 00:07:16,790 --> 00:07:20,720 Jinsi gani unaweza kuunda safu 100 integers, ambapo 141 00:07:20,720 --> 00:07:23,477 kila kipengele cha safu ni ripoti yake? 142 00:07:23,477 --> 00:07:26,560 Hivyo kwa mfano, tuna safu ya 100 integers, na katika kipengele kwanza, 143 00:07:26,560 --> 00:07:27,790 tunataka kuweka 0. 144 00:07:27,790 --> 00:07:29,810 Katika kipengele cha pili, tunataka kuweka 1. 145 00:07:29,810 --> 00:07:33,319 Katika kipengele cha tatu, tunataka kuweka 2; na kadhalika na kadhalika. 146 00:07:33,319 --> 00:07:35,360 Hiyo ni nzuri kwa kweli at-nyumbani zoezi kwa kufanya hivyo. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Hapa, haina kuangalia kama sana yamebadilika. 149 00:07:40,220 --> 00:07:44,170 Lakini taarifa kwamba katika kati ya mabano mraba, wakati huu, 150 00:07:44,170 --> 00:07:45,830 Nimekuwa kwa kweli liliondolewa idadi. 151 00:07:45,830 --> 00:07:48,000 Kama unatumia hii sana instantiation maalum 152 00:07:48,000 --> 00:07:50,380 syntax kujenga safu, wewe kweli kufanya si 153 00:07:50,380 --> 00:07:53,491 haja ya kuonyesha ukubwa wa safu ya mbele. 154 00:07:53,491 --> 00:07:55,740 Compiler ni smart kutosha kujua kwamba kweli 155 00:07:55,740 --> 00:07:58,980 wanataka safu ya ukubwa 3, kwa sababu wewe kuweka mambo matatu 156 00:07:58,980 --> 00:08:00,640 na haki ya ishara sawa. 157 00:08:00,640 --> 00:08:04,140 Kama alikuwa na kuweka nne, ingekuwa kutokana na ukweli meza ya ukubwa nne; 158 00:08:04,140 --> 00:08:06,270 na kadhalika na kadhalika. 159 00:08:06,270 --> 00:08:09,380 >> Arrays si pungufu ya moja mwelekeo, ambayo ni pretty cool. 160 00:08:09,380 --> 00:08:12,000 Unaweza kweli kuwa kama wengi upande specifiers kama unataka. 161 00:08:12,000 --> 00:08:16,470 Hivyo kwa mfano, kama unataka kujenga bodi kwa vita ya mchezo, ambayo, 162 00:08:16,470 --> 00:08:20,910 kama wewe milele kucheza, ni mchezo kuwa ni alicheza na vigingi juu ya 10 na 10 gridi ya taifa, 163 00:08:20,910 --> 00:08:22,450 unaweza kujenga safu kama hii. 164 00:08:22,450 --> 00:08:26,030 Unaweza kusema Bool vita ya mraba mabano 10 165 00:08:26,030 --> 00:08:29,590 kufungwa mraba mabano mraba mabano 10 kufungwa mraba mabano. 166 00:08:29,590 --> 00:08:32,710 >> Na kisha, unaweza kuchagua kutafsiri hii katika akili yako kama 10 167 00:08:32,710 --> 00:08:35,576 na 10 gridi ya seli. 168 00:08:35,576 --> 00:08:37,409 Sasa, kwa kweli, katika kumbukumbu, ni kweli haina tu 169 00:08:37,409 --> 00:08:42,440 kubaki 100 kipengele, moja ya pande safu. 170 00:08:42,440 --> 00:08:46,070 Na hii, kwa kweli, huenda kwa maana kama kuwa na vipimo tatu au nne au tano. 171 00:08:46,070 --> 00:08:49,420 Ni kweli tu haina kuzidisha wote wa indices-- 172 00:08:49,420 --> 00:08:51,130 au yote ya ukubwa specifiers-- pamoja, 173 00:08:51,130 --> 00:08:53,480 na wewe tu kupata mwelekeo mmoja safu ya kwamba ukubwa. 174 00:08:53,480 --> 00:08:57,090 >> Lakini katika suala la utaratibu na taswira na mtazamo wa binadamu, 175 00:08:57,090 --> 00:08:59,240 inaweza kuwa rahisi sana kufanya kazi na gridi 176 00:08:59,240 --> 00:09:02,980 kama wewe ni kufanya kazi katika mchezo kama Tic-TAC-toe au vita, 177 00:09:02,980 --> 00:09:05,179 au kitu kama hicho. 178 00:09:05,179 --> 00:09:06,970 Ni uchukuaji kubwa, badala ya kuwa 179 00:09:06,970 --> 00:09:09,340 kufikiri juu Tic-TAC-toe bodi kama mstari wa tisa 180 00:09:09,340 --> 00:09:13,810 viwanja au bodi Vita kama mstari wa viwanja 100. 181 00:09:13,810 --> 00:09:16,010 10 na 10 gridi ya taifa au tatu na tatu gridi pengine ni 182 00:09:16,010 --> 00:09:17,225 mengi zaidi rahisi kujua. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Sasa, kitu kweli muhimu kuhusu arrays. 185 00:09:22,280 --> 00:09:25,950 Tunaweza kutibu kila mtu binafsi kipengele cha safu kama kutofautiana. 186 00:09:25,950 --> 00:09:27,700 Tuliona kwamba mapema tulipokuwa kumshirikisha 187 00:09:27,700 --> 00:09:32,240 thamani Kweli kwa baadhi ya Booleans au kuwapima katika conditionals. 188 00:09:32,240 --> 00:09:35,960 Lakini hatuwezi kutibu nzima arrays wenyewe kama vigezo. 189 00:09:35,960 --> 00:09:41,760 Hatuwezi, kwa mfano, kuwapa safu moja kwa safu mwingine kwa kutumia zoezi 190 00:09:41,760 --> 00:09:42,930 operator. 191 00:09:42,930 --> 00:09:44,640 Siyo kisheria C. 192 00:09:44,640 --> 00:09:47,920 >> Kama tunataka, kwa nini example-- tunataka kuwa kufanya katika mfano kwamba 193 00:09:47,920 --> 00:09:50,200 itakuwa nakala safu moja hadi nyingine. 194 00:09:50,200 --> 00:09:53,810 Kama tunataka kufanya hivyo, sisi kweli haja ya kutumia kitanzi kwa nakala zaidi 195 00:09:53,810 --> 00:09:56,550 kila kipengele binafsi moja kwa wakati mmoja. 196 00:09:56,550 --> 00:09:58,700 Najua ni muda mfupi tu kuteketeza. 197 00:09:58,700 --> 00:10:04,022 >> Hivyo kwa mfano, kama tulikuwa na hizi wanandoa ya mstari wa kanuni, ingekuwa kazi hii? 198 00:10:04,022 --> 00:10:05,230 Naam, hapana, hakutaka, sawa? 199 00:10:05,230 --> 00:10:07,860 Kwa sababu sisi ni kujaribu kuwapa chakula kwa bar. 200 00:10:07,860 --> 00:10:09,860 Hiyo si kwenda kufanya kazi, kwa sababu ni safu, 201 00:10:09,860 --> 00:10:13,130 na sisi tu ilivyoelezwa kwamba si kwamba kisheria C. 202 00:10:13,130 --> 00:10:15,580 >> Badala yake, kama tunataka nakala yaliyomo ya chakula 203 00:10:15,580 --> 00:10:18,070 ndani ya bar, ambayo ni nini sisi ni kujaribu kufanya hapa, 204 00:10:18,070 --> 00:10:19,970 tunataka haja syntax kama hii. 205 00:10:19,970 --> 00:10:24,170 Tuna kwa kitanzi kwamba huenda kutoka J ni sawa na 0 hadi 5, 206 00:10:24,170 --> 00:10:28,390 na sisi increment J juu ya kila iteration ya kitanzi na mambo hawawajui kama hicho. 207 00:10:28,390 --> 00:10:33,360 Hii ingeweza kusababisha bar pia kuwa moja, mbili, tatu, nne, tano, 208 00:10:33,360 --> 00:10:36,730 lakini sisi kufanya hivyo huu sana polepole kipengele-na-kipengele njia, 209 00:10:36,730 --> 00:10:40,009 badala ya tu na kuiga safu nzima. 210 00:10:40,009 --> 00:10:42,050 Katika programu zingine lugha, wale wa kisasa zaidi, 211 00:10:42,050 --> 00:10:45,610 unaweza, kwa kweli, kufanya tu kuwa rahisi sawa na syntax. 212 00:10:45,610 --> 00:10:49,620 Lakini C, kwa bahati mbaya, sisi ni haruhusiwi kufanya hivyo. 213 00:10:49,620 --> 00:10:52,026 >> Sasa, kuna mtu mwingine Jambo nataka kutaja 214 00:10:52,026 --> 00:10:54,650 kuhusu arrays kwamba inaweza kuwa ni kidogo kidogo Tricky mara ya kwanza 215 00:10:54,650 --> 00:10:55,990 kazi nao. 216 00:10:55,990 --> 00:10:59,860 Sisi kujadiliwa katika video kuhusu wigo kutofautiana, 217 00:10:59,860 --> 00:11:04,940 kwamba vigezo zaidi katika C, wakati wewe piga nao katika kazi, ni wanapita thamani. 218 00:11:04,940 --> 00:11:08,620 Unakumbuka nini maana kupita kitu na thamani? 219 00:11:08,620 --> 00:11:12,570 Ina maana sisi ni kufanya nakala ya kutofautiana hiyo kuwa kupita katika. 220 00:11:12,570 --> 00:11:16,290 Callee kazi, kazi hiyo ni kupokea kutofautiana, 221 00:11:16,290 --> 00:11:17,730 haina kupata kutofautiana yenyewe. 222 00:11:17,730 --> 00:11:20,850 Anapata yake mwenyewe mitaa nakala yake kufanya kazi pamoja. 223 00:11:20,850 --> 00:11:24,070 >> Arrays, bila shaka, kufanya si kufuata kanuni hii. 224 00:11:24,070 --> 00:11:27,600 Badala yake, ni nini sisi wito huu anapita kumbukumbu. 225 00:11:27,600 --> 00:11:31,360 Callee kweli haina kupokea safu. 226 00:11:31,360 --> 00:11:34,207 Haina kupokea wake nakala mwenyewe ndani yake. 227 00:11:34,207 --> 00:11:36,040 Na kama unadhani kuhusu hivyo, hii hufanya akili. 228 00:11:36,040 --> 00:11:39,750 Kama arrays ni kweli kubwa, ni inachukua muda sana na juhudi 229 00:11:39,750 --> 00:11:44,470 kufanya nakala ya safu ya Mambo 100 au 1000 au 10,000, 230 00:11:44,470 --> 00:11:48,290 kwamba siyo thamani yake kwa kazi ya kupokea nakala yake, 231 00:11:48,290 --> 00:11:51,037 kufanya baadhi ya kazi na hayo, na kisha tu kufanywa na nakala; 232 00:11:51,037 --> 00:11:53,120 haina haja ya kuwa na ni kunyongwa karibu tena. 233 00:11:53,120 --> 00:11:54,710 >> Kwa sababu arrays ni baadhi bulky na mbaya, 234 00:11:54,710 --> 00:11:56,001 sisi tu kupita yao kwa kumbukumbu. 235 00:11:56,001 --> 00:12:01,210 Sisi tu imani kwamba kazi kwa, wala kuvunja chochote. 236 00:12:01,210 --> 00:12:03,010 Hivyo hana kweli kupata safu. 237 00:12:03,010 --> 00:12:05,290 Haina kupata nakala yake mwenyewe ndani yake. 238 00:12:05,290 --> 00:12:07,170 >> Hivyo hii ina maana gani, basi, wakati callee 239 00:12:07,170 --> 00:12:08,970 kuyaharibu mambo ya safu? 240 00:12:08,970 --> 00:12:10,780 Nini kinatokea? 241 00:12:10,780 --> 00:12:13,210 Kwa sasa, tutaweza Gloss zaidi ya nini hasa hii 242 00:12:13,210 --> 00:12:15,320 itatendeka, kwa nini arrays ni kupita kwa kumbukumbu 243 00:12:15,320 --> 00:12:17,810 na kila kitu kingine ni wanapita thamani. 244 00:12:17,810 --> 00:12:20,470 Lakini mimi ahadi yenu, sisi kurudi na kukupa jibu 245 00:12:20,470 --> 00:12:23,750 kwa hii katika video ya baadaye. 246 00:12:23,750 --> 00:12:28,110 >> Hapa ni moja zaidi kwa ajili ya zoezi wewe kabla ya sisi kufuta mambo juu ya arrays. 247 00:12:28,110 --> 00:12:31,400 Kundi la kanuni hapa, hiyo ni si hasa mtindo mzuri, 248 00:12:31,400 --> 00:12:33,400 tu mimi itabidi kufanya kwamba caveat. 249 00:12:33,400 --> 00:12:36,660 Hakuna maoni katika hapa, ambayo ni aina pretty mbaya. 250 00:12:36,660 --> 00:12:39,750 Lakini ni kwa sababu tu nilitaka kuwa uwezo walionao kila kitu kwenye screen. 251 00:12:39,750 --> 00:12:44,360 >> Saa ya juu, unaweza kuona kwamba nina mbili maazimio kazi kwa seti safu 252 00:12:44,360 --> 00:12:45,820 na kuweka int. 253 00:12:45,820 --> 00:12:49,680 Kuweka safu inaonekana inachukua safu integers nne kama mchango wake. 254 00:12:49,680 --> 00:12:52,767 Na kuweka int inaonekana inachukua integer moja kama mchango wake. 255 00:12:52,767 --> 00:12:54,350 Lakini wote wawili hawana pato. 256 00:12:54,350 --> 00:12:57,689 Pato, kurudi aina, ya kila mmoja ni batili. 257 00:12:57,689 --> 00:12:59,480 Katika Kuu, tuna michache ya mstari wa kanuni. 258 00:12:59,480 --> 00:13:02,730 Tunatangaza integer kutofautiana aitwaye A na hawawajui thamani 10. 259 00:13:02,730 --> 00:13:07,080 Sisi kutangaza safu ya integers nne aitwaye B na kuwapa mambo 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, na 3, kwa mtiririko huo. 261 00:13:08,730 --> 00:13:12,190 Kisha, tuna wito wa kuweka int na wito wa kuweka safu. 262 00:13:12,190 --> 00:13:15,910 Ufafanuzi wa kuweka safu na kuweka int ni chini chini, chini. 263 00:13:15,910 --> 00:13:17,640 >> Na hivyo, tena, mimi kuuliza swali. 264 00:13:17,640 --> 00:13:20,770 Nini anapata kuchapishwa hapa mwishoni mwa Kuu? 265 00:13:20,770 --> 00:13:23,020 Kuna printout col. Mimi nina uchapishaji nje integers mbili. 266 00:13:23,020 --> 00:13:28,010 Mimi uchapishaji nje yaliyomo ya A na yaliyomo ya B mraba mabano 0. 267 00:13:28,010 --> 00:13:29,880 Pause video hapa na kuchukua dakika. 268 00:13:29,880 --> 00:13:35,482 Je, unaweza kufikiri nini hii kazi itakuwa magazeti mwishoni? 269 00:13:35,482 --> 00:13:38,190 Hopefully, kama unakumbuka tofauti kati ya kupita na thamani 270 00:13:38,190 --> 00:13:41,680 na kupita kwa kumbukumbu, hii Tatizo halikuwa gumu sana kwa ajili yenu. 271 00:13:41,680 --> 00:13:44,130 Na jibu wewe ungekuwa wamegundua ni hii. 272 00:13:44,130 --> 00:13:47,660 Kama huna uhakika kama kwa kwa nini hiyo kesi, kuchukua pili, 273 00:13:47,660 --> 00:13:50,620 kurudi nyuma, kupitia kile Nilikuwa tu kujadili kuhusu kupita arrays 274 00:13:50,620 --> 00:13:53,450 ukihusishwa, dhidi ya kupita vigezo vingine na thamani, 275 00:13:53,450 --> 00:13:56,680 na hopefully, kutakuwa na kufanya kidogo zaidi hisia. 276 00:13:56,680 --> 00:13:59,760 >> Mimi nina Doug Lloyd, na hii ni CS50. 277 00:13:59,760 --> 00:14:01,467