1 00:00:00,000 --> 00:00:03,388 >> [TÓNLIST spila] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Allt í lagi. 4 00:00:06,020 --> 00:00:07,680 Vinna með einn breytur er nokkuð skemmtilegt. 5 00:00:07,680 --> 00:00:09,500 En hvað ef við viljum vinna með fullt af breytum, 6 00:00:09,500 --> 00:00:12,760 en við viljum ekki að hafa fullt af mismunandi nöfn fljúga um kóða okkar? 7 00:00:12,760 --> 00:00:15,980 Í þessu tilfelli, eru fylki fara að koma í raun vel. 8 00:00:15,980 --> 00:00:19,510 Fylki eru mjög grundvallaratriði gögn uppbygging fyrir hvaða forritunarmál 9 00:00:19,510 --> 00:00:20,260 sem þú vilt nota. 10 00:00:20,260 --> 00:00:24,450 Og þeir eru mjög, mjög gagnlegur, sérstaklega, eins og við munum sjá, í CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Við notum fylki til að halda Gildi sömu gögn gerð 12 00:00:27,870 --> 00:00:29,830 á samliggjandi stöðum minni. 13 00:00:29,830 --> 00:00:32,430 Það er að segja, það er leiðin sem við getum hópur 14 00:00:32,430 --> 00:00:35,430 fullt af heiltölur saman minni eða fullt af stöfum 15 00:00:35,430 --> 00:00:38,270 eða flýtur í minni raun þétt saman og vinna 16 00:00:38,270 --> 00:00:41,930 með þeim án þess að þurfa að gefa hverjum eigin einstakt eitt nafn þess, sem getur 17 00:00:41,930 --> 00:00:44,500 fá fyrirferðarmikill eftir smá stund. 18 00:00:44,500 --> 00:00:48,130 >> Nú, ein leið til að analogize fylki er að hugsa um staðbundna færslu 19 00:00:48,130 --> 00:00:49,000 skrifstofu fyrir a second. 20 00:00:49,000 --> 00:00:51,820 Svo stíga í burtu frá forritun og bara loka augunum 21 00:00:51,820 --> 00:00:54,120 og sjón í huga þínum pósthúsið þitt. 22 00:00:54,120 --> 00:00:57,160 Venjulega, í flestum færslu skrifstofur, það er stór banki 23 00:00:57,160 --> 00:01:00,490 pósthús kassa á vegg. 24 00:01:00,490 --> 00:01:03,510 >> An array er risastór blokk samlægra minni, 25 00:01:03,510 --> 00:01:06,120 á sama hátt og tölvupóstur banki í pósthús 26 00:01:06,120 --> 00:01:11,230 er stór pláss á vegg pósthúsið. 27 00:01:11,230 --> 00:01:15,750 Fylki hefur verið skipt í litla, samur stór blokkir af plássi, 28 00:01:15,750 --> 00:01:19,930 sem hver um sig er kallað stak, í á sama hátt og vegg staða 29 00:01:19,930 --> 00:01:23,840 skrifstofa hefur verið skipt í litla, samur stór blokkir af plássi, 30 00:01:23,840 --> 00:01:27,560 sem við köllum pósthólf. 31 00:01:27,560 --> 00:01:31,650 Hver þáttur í fylkinu getur geyma ákveðið magn af gögnum, 32 00:01:31,650 --> 00:01:37,540 bara eins og hver pósthús kassi er hægt að halda ákveðna upphæð af pósti. 33 00:01:37,540 --> 00:01:41,540 >> Hvað er hægt að geyma í hvern hluta fylki er breytur í sama gögnum 34 00:01:41,540 --> 00:01:45,300 gerð, svo sem int eða char, bara eins og í kassanum pósthúsið þitt 35 00:01:45,300 --> 00:01:47,300 þú getur aðeins passa það af svipaðri gerð er, 36 00:01:47,300 --> 00:01:50,430 svo sem bréf eða litlum pakka. 37 00:01:50,430 --> 00:01:55,050 Loks getum við aðgang hver þáttur array beint vísitala, 38 00:01:55,050 --> 00:01:59,770 bara eins og við getum nálgast pósthús okkar kassi með því að vita pósthólfsins númer. 39 00:01:59,770 --> 00:02:02,750 Vonandi að hliðstæðan hjálpað þér að komast höfuðið 40 00:02:02,750 --> 00:02:05,540 í kringum þá hugmynd fylki eftir analogizing eitthvað annað 41 00:02:05,540 --> 00:02:08,400 að þú ert sennilega þegar kunnuglegur með. 42 00:02:08,400 --> 00:02:13,182 >> Í C, þætti array eru verðtryggð byrja frá 0, ekki frá 1. 43 00:02:13,182 --> 00:02:14,390 Og þetta er mjög mikilvægt. 44 00:02:14,390 --> 00:02:18,530 Og í raun, þetta er ástæðan að við, í CS 50, Og hvers vegna tölva vísindamenn Algengustu 45 00:02:18,530 --> 00:02:22,150 mun telja frá 0, er vegna array C er 46 00:02:22,150 --> 00:02:24,660 flokkun, sem alltaf byrjar á 0. 47 00:02:24,660 --> 00:02:28,730 Svo ef array samanstendur af n þáttum, fyrsti þáttur af því fylki 48 00:02:28,730 --> 00:02:32,960 er staðsett við vísinn 0, og síðasta þáttur í array 49 00:02:32,960 --> 00:02:36,610 er staðsett við vísinn n mínus 1. 50 00:02:36,610 --> 00:02:43,160 Aftur, ef það er n þætti í okkar array, síðasta vísitalan er n mínus 1. 51 00:02:43,160 --> 00:02:46,820 >> Svo ef array okkar hefur 50 þáttum, Fyrsti þátturinn er staðsett á vísitölu 0, 52 00:02:46,820 --> 00:02:51,060 og síðast þáttur er staðsett á vísitölu 49. 53 00:02:51,060 --> 00:02:53,940 Því miður, eða sem betur fer, eftir sjónarhorni þínu, 54 00:02:53,940 --> 00:02:56,170 C er mjög vægari hér. 55 00:02:56,170 --> 00:02:59,480 Það mun ekki koma í veg fyrir þig frá fara út af mörk array þinn. 56 00:02:59,480 --> 00:03:03,080 Þú gætir nálgast mínus 3 þáttur array þinn 57 00:03:03,080 --> 00:03:07,400 eða 59 þáttur array þinn, ef array þinn hefur aðeins 50 þætti. 58 00:03:07,400 --> 00:03:11,060 Það mun ekki stöðva program frá samantekt, en á hlaupa tíma, 59 00:03:11,060 --> 00:03:14,350 þú gætir fundur a ótti skiptingu kenna 60 00:03:14,350 --> 00:03:17,460 ef þú byrjar að fá aðgang minni sem er utan marka hvað 61 00:03:17,460 --> 00:03:19,260 spurt program til að gefa þér. 62 00:03:19,260 --> 00:03:21,250 Svo ekki vera varkár. 63 00:03:21,250 --> 00:03:23,120 >> Hvað gerir fylki Yfirlýsing líta út? 64 00:03:23,120 --> 00:03:26,940 Hvernig eigum við að kóða fylki í tilveru eins og við kóða önnur breytu? 65 00:03:26,940 --> 00:03:31,250 Það eru þrír hlutir til fjölda declaration-- gerð, nafn, 66 00:03:31,250 --> 00:03:31,880 og stærð. 67 00:03:31,880 --> 00:03:34,088 Þetta er mjög svipað og a breyta yfirlýsingu, sem 68 00:03:34,088 --> 00:03:36,970 er bara gerð og nafn, stærð hlutinn látinn 69 00:03:36,970 --> 00:03:39,860 sérstakt tilfelli fyrir fylki, vegna þess að við erum að fá fullt af þeim 70 00:03:39,860 --> 00:03:41,830 á sama tíma. 71 00:03:41,830 --> 00:03:45,560 >> Svo er gerð hvers konar breytu þú vilt hver þáttur í array að vera. 72 00:03:45,560 --> 00:03:47,150 Vilt það til fjölda heiltalna? 73 00:03:47,150 --> 00:03:49,010 Þá gögn tegund ætti að vera Int. 74 00:03:49,010 --> 00:03:51,760 Ert þú vilt það til að vera array af tvíliðaleik eða fljóta? 75 00:03:51,760 --> 00:03:54,545 Gögn tegund ætti að vera tvöfaldur eða fljóta. 76 00:03:54,545 --> 00:03:56,420 Nafnið er hvað þú vilt hringja array þinn. 77 00:03:56,420 --> 00:04:00,970 Hvað viltu að nefna þessa risa Bankinn heiltalna eða fljóta eða stafir 78 00:04:00,970 --> 00:04:03,250 eða tvöfaldar, eða hvað hefur þú? 79 00:04:03,250 --> 00:04:04,700 Hvað viltu kalla það? 80 00:04:04,700 --> 00:04:06,110 Nokkuð sjálf skýringar. 81 00:04:06,110 --> 00:04:08,610 >> Loksins, stærð, sem fer inni hornklofa, 82 00:04:08,610 --> 00:04:12,180 er hversu margir þættir sem þú myndir eins array þinn að innihalda. 83 00:04:12,180 --> 00:04:13,530 Hversu margir heiltölur viltu? 84 00:04:13,530 --> 00:04:15,570 Hversu margir fljóta viltu? 85 00:04:15,570 --> 00:04:19,070 >> Svo til dæmis, int nemenda bekk 40. 86 00:04:19,070 --> 00:04:26,020 Þetta segir fylki kallast Student einkunna, sem samanstendur af 40 heiltölur. 87 00:04:26,020 --> 00:04:28,180 Nokkuð sjálf skýringar, vona ég. 88 00:04:28,180 --> 00:04:29,330 Hér er annað dæmi. 89 00:04:29,330 --> 00:04:31,560 Tvöfaldur matseðill verð 8. 90 00:04:31,560 --> 00:04:34,610 Þetta skapar fjölbreytta heitir Valmynd verði, sem samanstendur 91 00:04:34,610 --> 00:04:38,300 pláss í minni fyrir átta tvíliðaleik. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Ef þér finnst um hvert frumefni af fjölda tegund gagna-gerð, 94 00:04:45,750 --> 00:04:49,860 svo til dæmis, einn þáttur í fylki af int, á sama hátt þér 95 00:04:49,860 --> 00:04:52,770 myndi hugsa um eitthvað annað af taginu int, 96 00:04:52,770 --> 00:04:56,440 allt kunnugleg aðgerðir sem við rætt áður í rekstri 97 00:04:56,440 --> 00:04:58,270 vídeó vilja skynsamleg. 98 00:04:58,270 --> 00:05:01,620 Svo hér, gætum við lýsa fylki af Booleans kallast Truthtable, 99 00:05:01,620 --> 00:05:05,590 sem samanstendur af herbergi fyrir 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Og þá bara eins og við gátum bara úthluta gildi að öðrum breytu af tegund 101 00:05:09,650 --> 00:05:13,470 Boolean, gætum við sagt eitthvað eins Truthtable hornklofi 102 00:05:13,470 --> 00:05:18,040 2, sem er hvernig við kynna, sem þáttur í sannleikann borð? 103 00:05:18,040 --> 00:05:20,350 Þriðji þáttur í borð sannleikur, vegna muna, 104 00:05:20,350 --> 00:05:21,800 við erum að telja frá 0. 105 00:05:21,800 --> 00:05:25,690 Svo er það hvernig við tilgreina Þriðji þáttur í sannleikann töflunni. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 er ósatt, bara eins og við mátti declare-- 107 00:05:28,680 --> 00:05:33,560 eða við gætum framselja, frekar, allir Boolean tegund breytu að vera falskur. 108 00:05:33,560 --> 00:05:35,050 >> Við getum líka notað það í aðstæður. 109 00:05:35,050 --> 00:05:39,000 ef (truthtable 7 == satt), sem er að segja, 110 00:05:39,000 --> 00:05:42,370 ef áttunda frumefni af Truthtable er satt, 111 00:05:42,370 --> 00:05:46,760 kannski viljum við prenta skilaboð til notanda, printf ("TRUE! n") ;. 112 00:05:46,760 --> 00:05:50,290 Sem veldur okkur að segja Truthtable 10 jafngildir satt, ekki satt? 113 00:05:50,290 --> 00:05:53,590 Jæja, ég get, en það er ansi hættulegt, vegna muna, 114 00:05:53,590 --> 00:05:56,260 við höfum fjölda 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Svo hæsta vísitala sem þýðanda hefur gefið okkur er 9. 116 00:06:02,340 --> 00:06:06,010 >> Þetta forrit mun þýða, en ef eitthvað annað í minni 117 00:06:06,010 --> 00:06:09,110 er til þar sem við myndum búast Truthtable 10 til að fara, 118 00:06:09,110 --> 00:06:13,980 við gætum þjást skiptingu kenna. Við gæti komist upp með það, en almennt, 119 00:06:13,980 --> 00:06:14,710 nokkuð hættulegt. 120 00:06:14,710 --> 00:06:19,759 Svo það sem ég er að gera hér er löglegt C, en ekki endilega það besta hreyfa. 121 00:06:19,759 --> 00:06:22,300 Nú, þegar þú lýsa og frumstilla fylki samtímis, 122 00:06:22,300 --> 00:06:23,960 það er reyndar mjög sérstakt setningafræði sem þér 123 00:06:23,960 --> 00:06:26,250 Hægt er að nota til að fylla upp array með byrjun gildi þess. 124 00:06:26,250 --> 00:06:30,130 Það er hægt að fá fyrirferðarmikill til lýsa fjölda stærð 100, 125 00:06:30,130 --> 00:06:33,430 og þá þarf að segja, þáttur 0 jafngildir þetta; þáttur 1 er þetta; 126 00:06:33,430 --> 00:06:34,850 þáttur 2 er að. 127 00:06:34,850 --> 00:06:36,370 Hvað er málið, ekki satt? 128 00:06:36,370 --> 00:06:39,470 >> Ef það er lítill array, þú gæti gert eitthvað svona. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 er opin hrokkið Brace og þá komma 130 00:06:44,360 --> 00:06:48,060 aðgreina lista af þáttum sem þú vilt setja í array. 131 00:06:48,060 --> 00:06:50,520 Svo loka hrokkið Brace semíkommu. 132 00:06:50,520 --> 00:06:53,910 Þetta skapar fjölbreytta stærð þrír heitir Truthtable, 133 00:06:53,910 --> 00:06:56,090 með þætti rangar, satt, og satt. 134 00:06:56,090 --> 00:06:59,270 Og í raun, instantiation setningafræði sem ég hef hér er 135 00:06:59,270 --> 00:07:03,350 nákvæmlega það sama og að gera slíkt hið einstaklingur þáttur setningafræði neðan. 136 00:07:03,350 --> 00:07:09,380 Þessar tvær leiðir erfðaskrá myndi nákvæmlega sama fylki. 137 00:07:09,380 --> 00:07:11,740 >> Á sama hátt gætum við árétta yfir alla þá þætti 138 00:07:11,740 --> 00:07:15,400 af fjölda með lykkju, sem í Staðreyndin er mjög sterklega mælt með 139 00:07:15,400 --> 00:07:16,790 á-heimili æfa. 140 00:07:16,790 --> 00:07:20,720 Hvernig finnst þér að búa til fylki 100 heiltölur, þar 141 00:07:20,720 --> 00:07:23,477 hvert þáttur í array er vísitölu þess? 142 00:07:23,477 --> 00:07:26,560 Svo til dæmis, við höfum fjölbreytta 100 heiltölur, og í fyrsta frumefni, 143 00:07:26,560 --> 00:07:27,790 við viljum að setja 0. 144 00:07:27,790 --> 00:07:29,810 Í seinni þáttur, viljum við að setja 1. 145 00:07:29,810 --> 00:07:33,319 Í þriðja frumefni, við viljum að setja 2; og svo framvegis og svo framvegis. 146 00:07:33,319 --> 00:07:35,360 Það er mjög gott á-heimili æfa til að gera það. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Hér er það ekki líta eins og of mikið hefur breyst. 149 00:07:40,220 --> 00:07:44,170 En eftir því að í milli hornklofum, í þetta sinn, 150 00:07:44,170 --> 00:07:45,830 Ég hef reyndar sleppt í númerið. 151 00:07:45,830 --> 00:07:48,000 Ef þú ert að nota þetta mjög sérstakt instantiation 152 00:07:48,000 --> 00:07:50,380 setningafræði til að búa til array, þú gerir í raun ekki 153 00:07:50,380 --> 00:07:53,491 þarf að tilgreina stærð fylkisins fyrirfram. 154 00:07:53,491 --> 00:07:55,740 Þýðandinn er sviði nógur að vita að þú raunverulega 155 00:07:55,740 --> 00:07:58,980 vilt fjölda stærð 3, vegna þess að þú setur þrjá þætti 156 00:07:58,980 --> 00:08:00,640 til hægri á merkið. 157 00:08:00,640 --> 00:08:04,140 Ef þú hefðir sett fjögur, það hefði gefið þér truth table af stærð fjórum; 158 00:08:04,140 --> 00:08:06,270 og svo framvegis og svo framvegis. 159 00:08:06,270 --> 00:08:09,380 >> Fylki eru ekki bundin við einn vídd, sem er laglegur kaldur. 160 00:08:09,380 --> 00:08:12,000 Þú getur raunverulega hafa eins og margir hlið specifiers eins og þú vilt. 161 00:08:12,000 --> 00:08:16,470 Svo til dæmis, ef þú vilt búa til stjórnarmaður fyrir leikinn Battleship, sem 162 00:08:16,470 --> 00:08:20,910 ef þú einhvern tíma spilað, er leikur sem er spilað með pegs á 10 með 10 rist, 163 00:08:20,910 --> 00:08:22,450 þú gætir búið til fylki svona. 164 00:08:22,450 --> 00:08:26,030 Þú gætir sagt Bool Battleship hornklofi 10 165 00:08:26,030 --> 00:08:29,590 lokað ferningur krappi veldi krappi 10 lokað ferningur krappi. 166 00:08:29,590 --> 00:08:32,710 >> Og þá getur þú valið að túlka þetta í huga þínum sem 10 167 00:08:32,710 --> 00:08:35,576 um 10 rist á frumum. 168 00:08:35,576 --> 00:08:37,409 Nú, í raun, í minni, það er í raun bara 169 00:08:37,409 --> 00:08:42,440 áfram 100 frumefni, einn víddar array. 170 00:08:42,440 --> 00:08:46,070 Og þetta, í raun, fer fyrir ef þig hafa þrívídd eða fjögur eða fimm. 171 00:08:46,070 --> 00:08:49,420 Það í raun bara skiptir margfalda öll indices-- 172 00:08:49,420 --> 00:08:51,130 eða allt stærð specifiers-- saman, 173 00:08:51,130 --> 00:08:53,480 og þú færð bara einn-víddar array af þeirri stærð. 174 00:08:53,480 --> 00:08:57,090 >> En hvað varðar skipulag og visualization og skynjun mannsins, 175 00:08:57,090 --> 00:08:59,240 það geta vera a einhver fjöldi auðveldlega að vinna með rist 176 00:08:59,240 --> 00:09:02,980 ef þú ert að vinna á leik eins Tic-Tac-Toe eða Battleship, 177 00:09:02,980 --> 00:09:05,179 eða eitthvað svoleiðis. 178 00:09:05,179 --> 00:09:06,970 Það er frábær abstrakt, í stað þess að hafa 179 00:09:06,970 --> 00:09:09,340 að hugsa um legri-TAC-tá borð sem lína af níu 180 00:09:09,340 --> 00:09:13,810 ferninga eða a Battleship borð sem línu af 100 ferninga. 181 00:09:13,810 --> 00:09:16,010 A 10 um 10 rist eða þremur með þremur rist er líklega 182 00:09:16,010 --> 00:09:17,225 a einhver fjöldi fleiri auðvelt að skynja. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Nú, eitthvað virkilega mikilvægt um fylki. 185 00:09:22,280 --> 00:09:25,950 Við getum meðhöndla hver einstaklingur þáttur í array sem breytu. 186 00:09:25,950 --> 00:09:27,700 Við sáum það ekki fyrr þegar við vorum framselja 187 00:09:27,700 --> 00:09:32,240 gildi True ákveðnum Booleans eða prófa þá í conditionals. 188 00:09:32,240 --> 00:09:35,960 En við getum ekki meðhöndla Allt Fylki sig sem breytur. 189 00:09:35,960 --> 00:09:41,760 Við getum td ekki framselja einn array til annars array með verkefni 190 00:09:41,760 --> 00:09:42,930 rekstraraðila. 191 00:09:42,930 --> 00:09:44,640 Það er ekki löglegt C. 192 00:09:44,640 --> 00:09:47,920 >> Ef við viljum að fyrir example-- hvað við myndum vera að gera í því dæmi 193 00:09:47,920 --> 00:09:50,200 væri að afrita einn array í annað. 194 00:09:50,200 --> 00:09:53,810 Ef við viljum gera það, í raun við þarf að nota lykkju til að afrita yfir 195 00:09:53,810 --> 00:09:56,550 hver einstaklingur þáttur einn í einu. 196 00:09:56,550 --> 00:09:58,700 Ég veit að það er svolítið tímafrekt. 197 00:09:58,700 --> 00:10:04,022 >> Svo til dæmis, ef við hefðum þessar par lína af kóða, myndi þetta virka? 198 00:10:04,022 --> 00:10:05,230 Jæja, nei, myndi það ekki, ekki satt? 199 00:10:05,230 --> 00:10:07,860 Vegna þess að við erum að reyna að úthluta mat til bar. 200 00:10:07,860 --> 00:10:09,860 Það er ekki að fara að vinna, vegna þess að það er fylki, 201 00:10:09,860 --> 00:10:13,130 og við lýst bara að það er ekki löglegt C. 202 00:10:13,130 --> 00:10:15,580 >> Þess í stað, ef við viljum afrita innihald matvæla 203 00:10:15,580 --> 00:10:18,070 í bar, sem er hvað við erum að reyna að gera hér, 204 00:10:18,070 --> 00:10:19,970 þyrfti setningafræði svona. 205 00:10:19,970 --> 00:10:24,170 Við höfum fyrir lykkju sem fer frá J er jafnt og 0 allt að 5, 206 00:10:24,170 --> 00:10:28,390 og við hækka J á hverjum endurtekning lykkja og úthluta þættir eins og þessi. 207 00:10:28,390 --> 00:10:33,360 Þetta myndi leiða til bar einnig að vera einn, tveir, þrír, fjórir, fimm, 208 00:10:33,360 --> 00:10:36,730 en við verðum að gera það þetta mjög hægur þáttur-by-þáttur vegur, 209 00:10:36,730 --> 00:10:40,009 í stað þess að bara með því að afrita Fylkið. 210 00:10:40,009 --> 00:10:42,050 Í öðrum forritun tungumál, fleiri nútíma sjálfur, 211 00:10:42,050 --> 00:10:45,610 þú getur í raun að gera bara svo einfalt jafngildir setningafræði. 212 00:10:45,610 --> 00:10:49,620 En C, því miður, við erum ekki leyft að gera það. 213 00:10:49,620 --> 00:10:52,026 >> Nú, það er eitt annað sem ég vil nefna 214 00:10:52,026 --> 00:10:54,650 um fylki sem geta vera a lítill svolítið erfiður í fyrsta skipti sem þú 215 00:10:54,650 --> 00:10:55,990 vinna með þeim. 216 00:10:55,990 --> 00:10:59,860 Við ræddum í myndbandi um Variable Gildissvið, 217 00:10:59,860 --> 00:11:04,940 að flestir breytur í C, þegar þú kallar þá í aðgerðir, eru settar gildi. 218 00:11:04,940 --> 00:11:08,620 Manstu hvað það þýðir að fara eitthvað með gildi? 219 00:11:08,620 --> 00:11:12,570 Það þýðir að við erum að gera afrit af breyta sem er verið samþykkt í. 220 00:11:12,570 --> 00:11:16,290 The callee virka, virka sem er að fá á breytu, 221 00:11:16,290 --> 00:11:17,730 ekki fá breytu sig. 222 00:11:17,730 --> 00:11:20,850 Það fær eigin staðbundna þeirra afrit af því að vinna með. 223 00:11:20,850 --> 00:11:24,070 >> Fylki, auðvitað, að gera ekki fylgja þessari reglu. 224 00:11:24,070 --> 00:11:27,600 Frekar, það sem við köllum þetta er komið með tilvísun. 225 00:11:27,600 --> 00:11:31,360 The callee raun er fá array. 226 00:11:31,360 --> 00:11:34,207 Það skiptir ekki fá sitt eigin sveitarfélaga afrit af henni. 227 00:11:34,207 --> 00:11:36,040 Og ef þér finnst um það, þetta er skynsamlegt. 228 00:11:36,040 --> 00:11:39,750 Ef fylki eru mjög stór, það tekur svo mikinn tíma og fyrirhöfn 229 00:11:39,750 --> 00:11:44,470 að gera afrit af fjölda 100 eða 1.000 eða 10.000 þætti, 230 00:11:44,470 --> 00:11:48,290 að það er ekki þess virði fyrir a virka til að fá afrit af því, 231 00:11:48,290 --> 00:11:51,037 gera sumir vinna með það, og þá bara að gera með copy; 232 00:11:51,037 --> 00:11:53,120 það þarf ekki að hafa það hangið lengur. 233 00:11:53,120 --> 00:11:54,710 >> Vegna fylki eru sumir fyrirferðarmikill og fyrirferðarmikill, 234 00:11:54,710 --> 00:11:56,001 við fara bara þá með tilvísun. 235 00:11:56,001 --> 00:12:01,210 Við treystum bara að virka að, ekki brjóta ekki neitt. 236 00:12:01,210 --> 00:12:03,010 Svo það er í raun að fá array. 237 00:12:03,010 --> 00:12:05,290 Það skiptir ekki fá sitt eigið eintak af henni. 238 00:12:05,290 --> 00:12:07,170 >> Svo hvað þýðir þetta, þá, þegar callee 239 00:12:07,170 --> 00:12:08,970 vinnur þætti array? 240 00:12:08,970 --> 00:12:10,780 Hvað gerist? 241 00:12:10,780 --> 00:12:13,210 Fyrir nú, munum við gljái yfir hverju nákvæmlega þetta 242 00:12:13,210 --> 00:12:15,320 gerist, hvers vegna fylki eru liðin með tilvísun 243 00:12:15,320 --> 00:12:17,810 og allt annað er samþykkt af value. 244 00:12:17,810 --> 00:12:20,470 En ég lofa þér, við munum aftur og gefa þér svar 245 00:12:20,470 --> 00:12:23,750 á því á síðari vídeó. 246 00:12:23,750 --> 00:12:28,110 >> Hér er einn æfing fyrir þig áður en við sett upp hluti á fylki. 247 00:12:28,110 --> 00:12:31,400 The búnt af kóða, það er ekki sérstaklega góður stíll, 248 00:12:31,400 --> 00:12:33,400 bara að ég ætla að gera það hellir. 249 00:12:33,400 --> 00:12:36,660 Það er engar athugasemdir hér, sem er nokkuð slæmt form. 250 00:12:36,660 --> 00:12:39,750 En það er bara vegna þess að ég vildi vera fær um að passa allt á skjánum. 251 00:12:39,750 --> 00:12:44,360 >> Efst, getur þú séð að ég hef tveir virka yfirlýsingar fyrir ákveðinn fjölda 252 00:12:44,360 --> 00:12:45,820 og setja int. 253 00:12:45,820 --> 00:12:49,680 Set array tekur greinilega fylki af fjórum heiltalna sem inntak þess. 254 00:12:49,680 --> 00:12:52,767 Og setja INT tekur greinilega eina heiltölu sem inntak hennar. 255 00:12:52,767 --> 00:12:54,350 En þau bæði hafa ekki framleiðsla. 256 00:12:54,350 --> 00:12:57,689 The framleiðsla, aftur tegund, hver einn er ógilt. 257 00:12:57,689 --> 00:12:59,480 Í Main, höfum við par af línum af kóða. 258 00:12:59,480 --> 00:13:02,730 Við lýsum heiltala breytu kallað og framselja það gildi 10. 259 00:13:02,730 --> 00:13:07,080 Við lýsum fjölda fjórum heiltölur heitir B og úthluta þeim þáttum 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, og 3, í sömu röð. 261 00:13:08,730 --> 00:13:12,190 Þá höfum við símtal til að setja int og kalla til að setja fylki. 262 00:13:12,190 --> 00:13:15,910 Skilgreiningar á tilteknum array og setja INT eru niðri, neðst. 263 00:13:15,910 --> 00:13:17,640 >> Og svo aftur, spyr ég þig spurningu. 264 00:13:17,640 --> 00:13:20,770 Hvað fær prenta út hér í lok Main? 265 00:13:20,770 --> 00:13:23,020 Það er útprentun Col. Ég er prenta út tvær heiltölur. 266 00:13:23,020 --> 00:13:28,010 Ég er að prenta út innihald A og innihald B hornklofi 0. 267 00:13:28,010 --> 00:13:29,880 Gera hlé á vídeó hér og taka eina mínútu. 268 00:13:29,880 --> 00:13:35,482 Getur þú reikna út hvað þetta aðgerð mun prenta á endanum? 269 00:13:35,482 --> 00:13:38,190 Vonandi, ef þú manst að greinarmun á brottför eftir verðgildi 270 00:13:38,190 --> 00:13:41,680 og liggur með tilvísun, þetta Vandamálið var ekki of erfiður fyrir þig. 271 00:13:41,680 --> 00:13:44,130 Og svarið sem þú vildi hef fundið er þetta. 272 00:13:44,130 --> 00:13:47,660 Ef þú ert ekki viss um hvers vegna það er málið, taka annað, 273 00:13:47,660 --> 00:13:50,620 fara aftur, fara yfir það sem ég var bara að ræða um brottför fylki 274 00:13:50,620 --> 00:13:53,450 með tilvísun á móti liggur aðrar breytur af verðmæti, 275 00:13:53,450 --> 00:13:56,680 og vonandi verður það gert svolítið meira vit. 276 00:13:56,680 --> 00:13:59,760 >> Ég er Doug Lloyd, og þetta er CS50. 277 00:13:59,760 --> 00:14:01,467