1 00:00:00,000 --> 00:00:03,388 >> [Predvaja glasba] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 Doug LLOYD: V redu. 4 00:00:06,020 --> 00:00:07,680 Delo z single spremenljivke je precej zabavno. 5 00:00:07,680 --> 00:00:09,500 Toda kaj, če želimo delati z veliko spremenljivk, 6 00:00:09,500 --> 00:00:12,760 vendar ne želimo, da imajo kup različna imena plujejo okoli našega kodo? 7 00:00:12,760 --> 00:00:15,980 V tem primeru so nizi dogaja, da pridejo zelo prav. 8 00:00:15,980 --> 00:00:19,510 Polja so res temeljni podatki struktura za katero koli programskega jezika 9 00:00:19,510 --> 00:00:20,260 ki ga boste uporabili. 10 00:00:20,260 --> 00:00:24,450 In oni so res, res uporabno, posebej, kot bomo videli, v CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Mi uporabljamo nize, da imajo Vrednosti istega podatkovnega tipa 12 00:00:27,870 --> 00:00:29,830 na sosednjih pomnilniških lokacijah. 13 00:00:29,830 --> 00:00:32,430 To se pravi, da je Tako da bomo lahko skupina 14 00:00:32,430 --> 00:00:35,430 kup celih skupaj spomin ali kup znakov 15 00:00:35,430 --> 00:00:38,270 ali pa plava v spomin res tesno skupaj in delo 16 00:00:38,270 --> 00:00:41,930 z njimi, ne da bi dal vsak ena svojo edinstveno ime, ki lahko 17 00:00:41,930 --> 00:00:44,500 dobite okorni po malo časa. 18 00:00:44,500 --> 00:00:48,130 >> Zdaj, eden od načinov za analogize nize je, da razmišljajo o vaši lokalni pošti 19 00:00:48,130 --> 00:00:49,000 urad za sekundo. 20 00:00:49,000 --> 00:00:51,820 Torej korak stran od programiranja in samo zaprite oči 21 00:00:51,820 --> 00:00:54,120 in vizualizirati v tvoji glavi vaša lokalna pošta. 22 00:00:54,120 --> 00:00:57,160 Ponavadi je v večini pošti pisarne, tam je velika banka 23 00:00:57,160 --> 00:01:00,490 a poštnih predalov na steni. 24 00:01:00,490 --> 00:01:03,510 >> Množica je velikan blok stičnega spomina, 25 00:01:03,510 --> 00:01:06,120 na enak način, da se pošta banka v vašem poštnem uradu 26 00:01:06,120 --> 00:01:11,230 je velik prostor na stena poštnem uradu. 27 00:01:11,230 --> 00:01:15,750 Nizi so bile razdeljene na majhne, enako velikih blokov prostora, 28 00:01:15,750 --> 00:01:19,930 od katerih je vsak imenovani element, pri enak način, da steni mesto 29 00:01:19,930 --> 00:01:23,840 pisarna je bila razdeljena v majhne, enako velikih blokov prostora, 30 00:01:23,840 --> 00:01:27,560 ki jo imenujemo poštni predal. 31 00:01:27,560 --> 00:01:31,650 Vsak element matrike lahko shraniti določeno količino podatkov, 32 00:01:31,650 --> 00:01:37,540 prav tako kot je vsak post office box sposoben da imajo določeno količino pošte. 33 00:01:37,540 --> 00:01:41,540 >> Kaj se lahko shranijo v vsakem elementu matrika je spremenljivke istih podatkov 34 00:01:41,540 --> 00:01:45,300 tip, kot int ali char, samo kot v poštni predal, 35 00:01:45,300 --> 00:01:47,300 lahko fit samo stvari podobnega tipa, 36 00:01:47,300 --> 00:01:50,430 kot so pisma ali manjših paketov. 37 00:01:50,430 --> 00:01:55,050 Nazadnje smo lahko dostopate vsak element array neposredno s številko indeksa, 38 00:01:55,050 --> 00:01:59,770 tako kot smo lahko dostopate našo pošto polje s poznavanjem svojo številko predala. 39 00:01:59,770 --> 00:02:02,750 Upajmo, da je analogija vam pomaga dobiti svojo glavo 40 00:02:02,750 --> 00:02:05,540 okoli idejo nizi ga analogizing nekaj drugega 41 00:02:05,540 --> 00:02:08,400 da ste verjetno že poznajo. 42 00:02:08,400 --> 00:02:13,182 >> V C elementi matrike so indeksirajo izhajajoč iz 0, ne od 1. 43 00:02:13,182 --> 00:02:14,390 In to je zelo pomembno. 44 00:02:14,390 --> 00:02:18,530 In v bistvu je to zato, v CS 50, In zakaj računalniški znanstveniki pogosto 45 00:02:18,530 --> 00:02:22,150 bo štel od 0, je Zaradi dodatnih C je 46 00:02:22,150 --> 00:02:24,660 indeksiranje, ki se vedno začne pri 0. 47 00:02:24,660 --> 00:02:28,730 Torej, če niz sestavljen iz n elementov, Prvi element te matrike 48 00:02:28,730 --> 00:02:32,960 se nahaja na indeks 0, in zadnji element matrike 49 00:02:32,960 --> 00:02:36,610 se nahaja na indeksom n minus 1. 50 00:02:36,610 --> 00:02:43,160 Še enkrat, če je n elementov v našem matrika, zadnji indeks n minus 1. 51 00:02:43,160 --> 00:02:46,820 >> Torej, če je naš nabor 50 elementov, Prvi element se nahaja na indeks 0, 52 00:02:46,820 --> 00:02:51,060 in zadnji element se nahaja na indeks 49. 53 00:02:51,060 --> 00:02:53,940 Na žalost ali na srečo, odvisno od vaše perspektive, 54 00:02:53,940 --> 00:02:56,170 C je zelo prizanesljivi tukaj. 55 00:02:56,170 --> 00:02:59,480 To vam ne bo preprečilo dogaja izven igrišča vašega array. 56 00:02:59,480 --> 00:03:03,080 Lahko dostop do minus 3 element vaše matrike 57 00:03:03,080 --> 00:03:07,400 ali 59. element vaše array, če ima vaš nabor le 50 elementov. 58 00:03:07,400 --> 00:03:11,060 To ne bo ustavil svoj program iz pripravo, vendar na doživljenjsko času, 59 00:03:11,060 --> 00:03:14,350 boste morda naleteti bala krivda segmentacija 60 00:03:14,350 --> 00:03:17,460 če začnete dostop do pomnilnika ki je izven meja kaj 61 00:03:17,460 --> 00:03:19,260 boste morali svoj program, da vam. 62 00:03:19,260 --> 00:03:21,250 Torej, bodite previdni. 63 00:03:21,250 --> 00:03:23,120 >> Kaj array Izjava izgledal? 64 00:03:23,120 --> 00:03:26,940 Kako bomo kodo array v obstoju kot smo kodo nobene druge spremenljivke? 65 00:03:26,940 --> 00:03:31,250 Obstajajo trije deli na matriko declaration-- vrsto, ime, 66 00:03:31,250 --> 00:03:31,880 in velikost. 67 00:03:31,880 --> 00:03:34,088 To je zelo podoben spremenljivka deklaracija, ki 68 00:03:34,088 --> 00:03:36,970 je le tip in ime, velikost element čemer 69 00:03:36,970 --> 00:03:39,860 posebno velja za niz, saj smo dobili kup njih 70 00:03:39,860 --> 00:03:41,830 ob istem času. 71 00:03:41,830 --> 00:03:45,560 >> Torej, tip je kakšno spremenljivko ste ponudbe vsak element matrike biti. 72 00:03:45,560 --> 00:03:47,150 Ali jo želite niz celih števil? 73 00:03:47,150 --> 00:03:49,010 Nato bi moral tvoj tip podatkov biti int. 74 00:03:49,010 --> 00:03:51,760 Ali želite, da biti array dvojicah ali plovci? 75 00:03:51,760 --> 00:03:54,545 Vrsta podatkov mora biti dvojna ali plavajo. 76 00:03:54,545 --> 00:03:56,420 Ime je kaj želite poklicati svojo paleto. 77 00:03:56,420 --> 00:04:00,970 Kaj želite poimenovati ta velikan Banka celih ali plovci ali znakov 78 00:04:00,970 --> 00:04:03,250 ali podvoji, ali karkoli že imaš? 79 00:04:03,250 --> 00:04:04,700 Kaj hočeš, da ga pokličete? 80 00:04:04,700 --> 00:04:06,110 Precej samoumevne. 81 00:04:06,110 --> 00:04:08,610 >> Nazadnje, velikost, ki gre znotraj oglatih oklepajev, 82 00:04:08,610 --> 00:04:12,180 je, kako bi jih mnogi elementi kot tvoj array vsebujejo. 83 00:04:12,180 --> 00:04:13,530 Koliko celih hočeš? 84 00:04:13,530 --> 00:04:15,570 Koliko plava hočeš? 85 00:04:15,570 --> 00:04:19,070 >> Tako, na primer, int študentske ocene 40. 86 00:04:19,070 --> 00:04:26,020 To izjavlja array imenovano Student stopnje, ki je sestavljena iz 40 celih števil. 87 00:04:26,020 --> 00:04:28,180 Precej samoumevne, upam. 88 00:04:28,180 --> 00:04:29,330 Tu je še en primer. 89 00:04:29,330 --> 00:04:31,560 Dvojne cene Meni 8. 90 00:04:31,560 --> 00:04:34,610 To ustvarja paleto imenovano Cene menijev, ki jih sestavljajo 91 00:04:34,610 --> 00:04:38,300 prostora v pomnilniku za osem dvojic. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Če menite, da vsakega elementa od array tipa tip-podatkov, 94 00:04:45,750 --> 00:04:49,860 tako, na primer, en sam element niz tipa int se vam enak način 95 00:04:49,860 --> 00:04:52,770 bi bilo razmišljati o vseh drugih spremenljivka tipa int, 96 00:04:52,770 --> 00:04:56,440 vse znane operacije, da smo že razpravljali v operativnem 97 00:04:56,440 --> 00:04:58,270 video bo smiseln. 98 00:04:58,270 --> 00:05:01,620 Torej, tukaj smo lahko razglasi niz od Booleans imenovanih Truthtable, 99 00:05:01,620 --> 00:05:05,590 ki je sestavljen iz prostora za 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> In potem, tako kot smo se lahko samo določite vrednost za vsako drugo spremenljivko tipa 101 00:05:09,650 --> 00:05:13,470 Boolean, bi lahko rekli kaj kot Truthtable kvadratni nosilec 102 00:05:13,470 --> 00:05:18,040 2, ki je, kako smo se kažejo, kateri element resnice mizo? 103 00:05:18,040 --> 00:05:20,350 Tretji element Resnica mizo, saj se spomnite, 104 00:05:20,350 --> 00:05:21,800 smo štetje od 0. 105 00:05:21,800 --> 00:05:25,690 Torej, to je, kako bomo navesti Tretji element resnice mizo. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 enaka false, tako kot smo lahko declare-- 107 00:05:28,680 --> 00:05:33,560 ali bi lahko dodelite, ampak vsak Logični tip spremenljivke, da je lažna. 108 00:05:33,560 --> 00:05:35,050 >> Lahko jo uporabite tudi v pogojih. 109 00:05:35,050 --> 00:05:39,000 če (truthtable 7 == Res), kar pomeni, 110 00:05:39,000 --> 00:05:42,370 če osmega elementa od Truthtable je res, 111 00:05:42,370 --> 00:05:46,760 morda želimo natisniti sporočilo za uporabnika, printf ("TRUE! n") ;. 112 00:05:46,760 --> 00:05:50,290 Ki nam povzroča reči Truthtable 10 je enako res, kajne? 113 00:05:50,290 --> 00:05:53,590 No, lahko, ampak to je precej nevaren, saj se spomnite, 114 00:05:53,590 --> 00:05:56,260 imamo celo paleto 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Torej najvišji indeks, da je prevajalnik je dal nam je 9. 116 00:06:02,340 --> 00:06:06,010 >> Ta program bo sestavil, vendar če je nekaj drugega, v spomin 117 00:06:06,010 --> 00:06:09,110 obstaja, če bi mi pričakujejo Truthtable 10 iti, 118 00:06:09,110 --> 00:06:13,980 smo lahko trpijo napako segmentacije. Mi lahko izmaže, vendar na splošno, 119 00:06:13,980 --> 00:06:14,710 precej nevarno. 120 00:06:14,710 --> 00:06:19,759 Torej, kaj delam tukaj je pravna C, vendar pa ni nujno najboljša poteza. 121 00:06:19,759 --> 00:06:22,300 Zdaj, ko se prijavijo in inicializirati array hkrati, 122 00:06:22,300 --> 00:06:23,960 tam je pravzaprav precej posebno sintakso, ki vas 123 00:06:23,960 --> 00:06:26,250 lahko uporabite, da bi zapolnili array s svojimi izhodiščnimi vrednostmi. 124 00:06:26,250 --> 00:06:30,130 Prav tako lahko dobili težje razglasi paleto velikosti 100, 125 00:06:30,130 --> 00:06:33,430 in potem moram reči, element 0 enak to; Element 1 enak temu; 126 00:06:33,430 --> 00:06:34,850 element 2, da je enak. 127 00:06:34,850 --> 00:06:36,370 V čem je smisel, kajne? 128 00:06:36,370 --> 00:06:39,470 >> Če je majhen niz, si lahko naredil kaj takega. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 enaka odprta kodrasti brace in nato vejica 130 00:06:44,360 --> 00:06:48,060 ločevanje seznam elementov ki jo želite dati v matriki. 131 00:06:48,060 --> 00:06:50,520 Nato zaprite zavit oklepaj podpičjem. 132 00:06:50,520 --> 00:06:53,910 To ustvarja niz Velikost tri imenuje Truthtable, 133 00:06:53,910 --> 00:06:56,090 z elementi false, true, in res. 134 00:06:56,090 --> 00:06:59,270 In v resnici, o primeru sintaksa imam tu 135 00:06:59,270 --> 00:07:03,350 natanko isto kot počne Posameznik skladenjski element spodaj. 136 00:07:03,350 --> 00:07:09,380 Ta dva načina kodiranja bi pa proizvajajo točno isto vrsto. 137 00:07:09,380 --> 00:07:11,740 >> Podobno bi lahko Ponovil preko vseh elementov 138 00:07:11,740 --> 00:07:15,400 od array uporabo zanko, ki je v Dejstvo, je zelo zelo priporočljivo 139 00:07:15,400 --> 00:07:16,790 at-home vaja. 140 00:07:16,790 --> 00:07:20,720 Kako si ustvariti niz 100 celih števil, kadar 141 00:07:20,720 --> 00:07:23,477 vsak element matrike je njen indeks? 142 00:07:23,477 --> 00:07:26,560 Tako na primer imamo paleto 100 cela števila, in v prvem elementu, 143 00:07:26,560 --> 00:07:27,790 želimo postaviti 0. 144 00:07:27,790 --> 00:07:29,810 V drugem elementu, želimo postaviti 1. 145 00:07:29,810 --> 00:07:33,319 V tretji element, želimo postaviti 2; in tako naprej in tako naprej. 146 00:07:33,319 --> 00:07:35,360 To je res dobra at-home vaja, da to storim. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Tukaj ni videti kot je preveč spremenila. 149 00:07:40,220 --> 00:07:44,170 Ampak obvestilo, da je med oglati oklepaji, ta čas, 150 00:07:44,170 --> 00:07:45,830 Sem dejansko izpustimo številko. 151 00:07:45,830 --> 00:07:48,000 Če uporabljate to zelo posebno o primeru 152 00:07:48,000 --> 00:07:50,380 sintaksa da ustvarite matrika, ki jih dejansko ne 153 00:07:50,380 --> 00:07:53,491 morate navesti velikost array vnaprej. 154 00:07:53,491 --> 00:07:55,740 Prevajalnik je dovolj pameten, vedeti, da vas dejansko 155 00:07:55,740 --> 00:07:58,980 želijo paleto velikosti 3, ker si dal tri elemente 156 00:07:58,980 --> 00:08:00,640 na desni strani enačaja. 157 00:08:00,640 --> 00:08:04,140 Če bi si dal štiri, bi bilo vam dal resnico tabelo velikosti štiri; 158 00:08:04,140 --> 00:08:06,270 in tako naprej in tako naprej. 159 00:08:06,270 --> 00:08:09,380 >> Nizi niso omejene na eno samo razsežnost, ki je precej kul. 160 00:08:09,380 --> 00:08:12,000 Lahko dejansko imajo toliko stranske projektantje kot želite. 161 00:08:12,000 --> 00:08:16,470 Torej, za primer, če želite ustvariti tabla za igro Battleship, ki, 162 00:08:16,470 --> 00:08:20,910 če si kdaj igral, je igra, ki je igral s čepki na 10. do 10. omrežje, 163 00:08:20,910 --> 00:08:22,450 lahko ustvarite paleto, kot je ta. 164 00:08:22,450 --> 00:08:26,030 Lahko bi rekli, bool bojna oglati oklepaj 10 165 00:08:26,030 --> 00:08:29,590 zaprt oglati oklepaj square Nosilec 10 zaprt oglati oklepaj. 166 00:08:29,590 --> 00:08:32,710 >> In potem se lahko odločite za to razlagajo v tvoji glavi kot 10 167 00:08:32,710 --> 00:08:35,576 10 mrežo celic. 168 00:08:35,576 --> 00:08:37,409 Sedaj v bistvu v spomin, res ne samo 169 00:08:37,409 --> 00:08:42,440 ostane 100 element, single dimenzionalni array. 170 00:08:42,440 --> 00:08:46,070 In to v resnici, gre za, če vas imajo tri dimenzije ali štiri ali pet. 171 00:08:46,070 --> 00:08:49,420 To je res samo ne množijo vse indices-- 172 00:08:49,420 --> 00:08:51,130 ali vseh velikosti specifiers-- skupaj 173 00:08:51,130 --> 00:08:53,480 in ste pravkar dobili enodimenzionalna array te velikosti. 174 00:08:53,480 --> 00:08:57,090 >> Ampak v smislu organizacije in vizualizacija in človeška percepcija, 175 00:08:57,090 --> 00:08:59,240 je lahko veliko lažje za delo z omrežjem 176 00:08:59,240 --> 00:09:02,980 če delate na igro kot Tic-tac-toe ali Battleship, 177 00:09:02,980 --> 00:09:05,179 ali nekaj takega. 178 00:09:05,179 --> 00:09:06,970 To je velika abstrakcija, namesto da 179 00:09:06,970 --> 00:09:09,340 razmišljati o Tic-tac-toe svet kot linijo devetih 180 00:09:09,340 --> 00:09:13,810 kvadratov ali Battleship board kot vrstica 100 kvadratov. 181 00:09:13,810 --> 00:09:16,010 10-10 omrežje ali tri s tremi omrežje je verjetno 182 00:09:16,010 --> 00:09:17,225 Veliko bolj enostavno zaznati. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Zdaj pa nekaj res Pomembno približno nizi. 185 00:09:22,280 --> 00:09:25,950 Mi lahko privoščite vsak posameznik element matrike kot spremenljivko. 186 00:09:25,950 --> 00:09:27,700 Videli smo, da prej ko smo dodeljevanju 187 00:09:27,700 --> 00:09:32,240 vrednost True nekaterim Booleans ali jih je testiranje v pogojnih. 188 00:09:32,240 --> 00:09:35,960 Vendar ne moremo obravnavati cele sami nizi kot spremenljivke. 189 00:09:35,960 --> 00:09:41,760 Ne moremo na primer dodelite en niz na drugi matriki, ki uporablja razporeditev 190 00:09:41,760 --> 00:09:42,930 operater. 191 00:09:42,930 --> 00:09:44,640 To ni pravna C. 192 00:09:44,640 --> 00:09:47,920 >> Če želimo, za example-- kaj pa bi storili v tem primeru 193 00:09:47,920 --> 00:09:50,200 bi bilo, da bi kopirali en niz v drugega. 194 00:09:50,200 --> 00:09:53,810 Če želimo narediti, da smo dejansko morali uporabiti zanko, da bi kopirali več 195 00:09:53,810 --> 00:09:56,550 vsak posamezen element enega naenkrat. 196 00:09:56,550 --> 00:09:58,700 Vem, da je malo zamudno. 197 00:09:58,700 --> 00:10:04,022 >> Torej, za primer, če bi imeli te par vrstic kode, bi to delo? 198 00:10:04,022 --> 00:10:05,230 No, no, da ne bi, kajne? 199 00:10:05,230 --> 00:10:07,860 Ker smo poskušali dodeliti hrano bar. 200 00:10:07,860 --> 00:10:09,860 Da ne bo delovalo, ker je matrika, 201 00:10:09,860 --> 00:10:13,130 in smo pravkar opisali da to ni pravna C. 202 00:10:13,130 --> 00:10:15,580 >> Namesto tega, če želimo kopirati vsebino hrane 203 00:10:15,580 --> 00:10:18,070 v baru, kjer je kaj smo poskušali narediti tukaj, 204 00:10:18,070 --> 00:10:19,970 mi bi potrebovali sintakso, kot je ta. 205 00:10:19,970 --> 00:10:24,170 Imamo za zanke, ki gre od J enak 0 do 5, 206 00:10:24,170 --> 00:10:28,390 in smo prirastek J na vsaki ponovitvi zanka in določite elemente, kot da. 207 00:10:28,390 --> 00:10:33,360 To bi povzročilo baru tudi pri čemer ena, dva, tri, štiri, pet, 208 00:10:33,360 --> 00:10:36,730 ampak jo moramo to storiti zelo počasno element-by-element način, 209 00:10:36,730 --> 00:10:40,009 Namesto s pravkar kopiranje celotno paleto. 210 00:10:40,009 --> 00:10:42,050 V drugih programskih jeziki, bolj sodobni tisti, 211 00:10:42,050 --> 00:10:45,610 lahko v resnici, ne samo Tako preprosto je enako sintakso. 212 00:10:45,610 --> 00:10:49,620 Ampak C, žal, smo ni dovoljeno, da to storim. 213 00:10:49,620 --> 00:10:52,026 >> Zdaj obstaja ena druga stvar bi rad omenil 214 00:10:52,026 --> 00:10:54,650 o nizi da lahko malo bit težavno, ki ste ga prvič 215 00:10:54,650 --> 00:10:55,990 delo z njimi. 216 00:10:55,990 --> 00:10:59,860 Smo razpravljali v videoposnetku o variabilnega področja, 217 00:10:59,860 --> 00:11:04,940 da večina spremenljivke v C, če pokličete jim v funkcijah, so po vrednosti. 218 00:11:04,940 --> 00:11:08,620 Se spomnite, kaj to pomeni da prenese nekaj po vrednosti? 219 00:11:08,620 --> 00:11:12,570 To pomeni, da smo kar kopijo spremenljivka, ki se je opravil v. 220 00:11:12,570 --> 00:11:16,290 Funkcija callee, funkcija da je prejemanje spremenljivko, 221 00:11:16,290 --> 00:11:17,730 ne dobijo spremenljivko sam. 222 00:11:17,730 --> 00:11:20,850 To postane sama lokalna izvod to delati. 223 00:11:20,850 --> 00:11:24,070 >> Nizi, seveda, ne ne po tem pravilu. 224 00:11:24,070 --> 00:11:27,600 Namesto, kar imenujemo to je po referenci. 225 00:11:27,600 --> 00:11:31,360 Callee dejansko ne prejme niz. 226 00:11:31,360 --> 00:11:34,207 To ne prejme njeno lastna lokalna kopija. 227 00:11:34,207 --> 00:11:36,040 In če mislite, da o tem da je to smiselno. 228 00:11:36,040 --> 00:11:39,750 Če so nizi zelo velika, tako traja toliko časa in truda 229 00:11:39,750 --> 00:11:44,470 narediti kopijo array 100 ali 1.000 ali 10.000 elementi, 230 00:11:44,470 --> 00:11:48,290 da je ni vredno za delovati prejeti kopijo njega, 231 00:11:48,290 --> 00:11:51,037 narediti nekaj dela z njim, in nato samo je treba storiti s kopijo; 232 00:11:51,037 --> 00:11:53,120 to ni potrebno imeti da visi okoli več. 233 00:11:53,120 --> 00:11:54,710 >> Ker so nizi nekateri zajetno in okorni, 234 00:11:54,710 --> 00:11:56,001 smo jih pravkar prenese z referenco. 235 00:11:56,001 --> 00:12:01,210 Samo zaupamo, da funkcijo da, ne zlomi ničesar. 236 00:12:01,210 --> 00:12:03,010 Tako da se dejansko dobil niz. 237 00:12:03,010 --> 00:12:05,290 To ne bi dobili svojo lokalno kopijo. 238 00:12:05,290 --> 00:12:07,170 >> Torej, kaj to pomeni, potem, ko je callee 239 00:12:07,170 --> 00:12:08,970 manipulira elemente matrike? 240 00:12:08,970 --> 00:12:10,780 Kaj se zgodi? 241 00:12:10,780 --> 00:12:13,210 Za zdaj, bomo zatajili več, zakaj ravno ta 242 00:12:13,210 --> 00:12:15,320 se zgodi, zakaj nize so opravili s sklicevanjem 243 00:12:15,320 --> 00:12:17,810 in vse ostalo se prenese po vrednosti. 244 00:12:17,810 --> 00:12:20,470 Ampak obljubim ti, bomo vrnil in vam odgovor 245 00:12:20,470 --> 00:12:23,750 da je to v kasnejšem video. 246 00:12:23,750 --> 00:12:28,110 >> Tukaj je še ena vaja za vas preden smo zaviti stvari na nizi. 247 00:12:28,110 --> 00:12:31,400 Kup kode tukaj, to je ni posebej dober stil, 248 00:12:31,400 --> 00:12:33,400 Pravkar sem bom, da to opozorilo. 249 00:12:33,400 --> 00:12:36,660 Ni komentarjev tukaj, ki je precej slaba oblika. 250 00:12:36,660 --> 00:12:39,750 Ampak to je samo zato, ker sem hotel biti sposobni prilagoditi vse na zaslonu. 251 00:12:39,750 --> 00:12:44,360 >> Na vrhu, lahko vidite, da imam dve deklaracije funkcij za set paleto 252 00:12:44,360 --> 00:12:45,820 in nastavite int. 253 00:12:45,820 --> 00:12:49,680 Set paleto očitno traja niz štirih števil kot vložek. 254 00:12:49,680 --> 00:12:52,767 In set int očitno traja ena celo kot svoj vložek. 255 00:12:52,767 --> 00:12:54,350 Toda oba nimajo izhoda. 256 00:12:54,350 --> 00:12:57,689 Izhod, vrnitev tip, za ničen vsak. 257 00:12:57,689 --> 00:12:59,480 V glavnem, imamo nekaj vrstic kode. 258 00:12:59,480 --> 00:13:02,730 Izjavljamo celo število spremenljivko imenuje in mu dodeliti vrednost 10. 259 00:13:02,730 --> 00:13:07,080 Izjavljamo niz štirih števil imenovano B in določite elemente, 0, 1, 260 00:13:07,080 --> 00:13:08,730 2 in 3, v tem zaporedju. 261 00:13:08,730 --> 00:13:12,190 Nato smo klic, da nastavite int in klic, da nastavite paleto. 262 00:13:12,190 --> 00:13:15,910 Opredelitve pojmov nastavljeno paleto in nabor int so pod tla in na dnu. 263 00:13:15,910 --> 00:13:17,640 >> In tako, še enkrat, sem vam zastavil vprašanje. 264 00:13:17,640 --> 00:13:20,770 Kaj dobi izpisal tukaj na koncu Main? 265 00:13:20,770 --> 00:13:23,020 Tam je izpis col. Jaz sem tiskanje dve celi števili. 266 00:13:23,020 --> 00:13:28,010 Jaz tiskanje vsebine in vsebina B kvadratni nosilec 0. 267 00:13:28,010 --> 00:13:29,880 Premor video tukaj in traja približno minuto. 268 00:13:29,880 --> 00:13:35,482 Lahko ugotovimo, kaj je to Funkcija bo izpisal na koncu? 269 00:13:35,482 --> 00:13:38,190 Upajmo, če spomnimo Razlikovanje med mimogrede po vrednosti 270 00:13:38,190 --> 00:13:41,680 in po referenci, to Problem ni bil preveč zapleteno zate. 271 00:13:41,680 --> 00:13:44,130 In odgovor bi jih Ugotovili to. 272 00:13:44,130 --> 00:13:47,660 Če niste prepričani, da se zakaj je temu tako, bo drugi, 273 00:13:47,660 --> 00:13:50,620 iti nazaj, pregledali, kaj sem pravkar razpravljali o prehodu nize 274 00:13:50,620 --> 00:13:53,450 z referenco, v primerjavi poteka druge spremenljivke po vrednosti, 275 00:13:53,450 --> 00:13:56,680 in upam, da bo to, da malo več smisla. 276 00:13:56,680 --> 00:13:59,760 >> Sem Doug Lloyd, in to je CS50. 277 00:13:59,760 --> 00:14:01,467