1 00:00:00,000 --> 00:00:03,388 >> [Přehrávání hudby] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Dobře. 4 00:00:06,020 --> 00:00:07,680 Práce s single proměnné je docela legrace. 5 00:00:07,680 --> 00:00:09,500 Ale co když chceme pracovat s mnoha proměnnými, 6 00:00:09,500 --> 00:00:12,760 ale my nechceme mít spoustu různá jména létání kolem naší kód? 7 00:00:12,760 --> 00:00:15,980 V tomto případě, jsou pole přijde opravdu vhod. 8 00:00:15,980 --> 00:00:19,510 Pole jsou opravdu základní údaje struktura pro libovolném programovacím jazyce 9 00:00:19,510 --> 00:00:20,260 že budete používat. 10 00:00:20,260 --> 00:00:24,450 A jsou opravdu, opravdu užitečné, zejména, jak uvidíme, v CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Používáme pole držet hodnoty stejného datového typu 12 00:00:27,870 --> 00:00:29,830 na souvislých paměťových míst. 13 00:00:29,830 --> 00:00:32,430 To znamená, že je to způsob, jak můžeme skupina 14 00:00:32,430 --> 00:00:35,430 banda celých čísel spolu paměti nebo parta znaků 15 00:00:35,430 --> 00:00:38,270 nebo plave v paměti opravdu blízko u sebe a práce 16 00:00:38,270 --> 00:00:41,930 s nimi, aniž by bylo, aby každý jedním jeho vlastní jedinečný název, který může 17 00:00:41,930 --> 00:00:44,500 dostat těžkopádné po chvíli. 18 00:00:44,500 --> 00:00:48,130 >> Nyní, jeden způsob, jak analogize polí je přemýšlet o vašem místním příspěvek 19 00:00:48,130 --> 00:00:49,000 kancelář na vteřinu. 20 00:00:49,000 --> 00:00:51,820 Takže krok od programování a jen zavřete oči 21 00:00:51,820 --> 00:00:54,120 a představit ve své mysli Váš místní pošta. 22 00:00:54,120 --> 00:00:57,160 Obvykle se ve většině sloupku kanceláře, tam je velká banka 23 00:00:57,160 --> 00:01:00,490 A poštovní schránky na zdi. 24 00:01:00,490 --> 00:01:03,510 >> Pole je obří blok souvislé paměti, 25 00:01:03,510 --> 00:01:06,120 stejným způsobem, že poštovní Banka ve své poště 26 00:01:06,120 --> 00:01:11,230 je velký prostor na stěna na poště. 27 00:01:11,230 --> 00:01:15,750 Arrays byly rozděleny do malých, stejně velké bloky prostoru, 28 00:01:15,750 --> 00:01:19,930 přičemž každý z nich je nazýván prvek, v stejným způsobem, že stěny sloupku 29 00:01:19,930 --> 00:01:23,840 office byl rozdělen do malých, stejně velké bloky prostoru, 30 00:01:23,840 --> 00:01:27,560 který nazýváme PO box. 31 00:01:27,560 --> 00:01:31,650 Každý prvek pole může uložení určitého množství dat, 32 00:01:31,650 --> 00:01:37,540 stejně jako každá poštovní schránka je schopen držet určité množství pošty. 33 00:01:37,540 --> 00:01:41,540 >> Co může být uložen v každém prvku pole je proměnné stejného dat 34 00:01:41,540 --> 00:01:45,300 typu, jako například int nebo char, jen stejně jako ve vaší poštovní přihrádku, 35 00:01:45,300 --> 00:01:47,300 se vejde jen věci podobného typu, 36 00:01:47,300 --> 00:01:50,430 jako například písmen nebo malých baleních. 37 00:01:50,430 --> 00:01:55,050 A konečně, můžeme přístup ke každému prvku pole přímo číslem indexu, 38 00:01:55,050 --> 00:01:59,770 stejně jako můžeme přístup do našeho pošta box tím, že zná její číslo schránky. 39 00:01:59,770 --> 00:02:02,750 Doufejme, že analogie vám pomůže dostat své hlavy 40 00:02:02,750 --> 00:02:05,540 kolem myšlenky polí strany analogizing na něco jiného 41 00:02:05,540 --> 00:02:08,400 že jste pravděpodobně již obeznámeni s. 42 00:02:08,400 --> 00:02:13,182 >> V jazyce C, prvky pole jsou indexovaných od 0, není od 1. 43 00:02:13,182 --> 00:02:14,390 A to je opravdu důležité. 44 00:02:14,390 --> 00:02:18,530 A ve skutečnosti, to je důvod, proč jsme v CS 50, A proč počítačoví odborníci často 45 00:02:18,530 --> 00:02:22,150 se bude počítat od 0, je protože C je matice 46 00:02:22,150 --> 00:02:24,660 indexování, který vždy začíná na 0 ° C. 47 00:02:24,660 --> 00:02:28,730 Takže pokud pole se skládá z n elementy, první prvek daného pole 48 00:02:28,730 --> 00:02:32,960 se nachází na indexu 0, a poslední prvek pole 49 00:02:32,960 --> 00:02:36,610 se nachází na indexu n minus 1. 50 00:02:36,610 --> 00:02:43,160 Opět platí, že pokud je tu n prvky v naší pole, poslední index n minus 1. 51 00:02:43,160 --> 00:02:46,820 >> Takže pokud naše pole má 50 prvků, První prvek je umístěn na indexu 0, 52 00:02:46,820 --> 00:02:51,060 a poslední prvek se nachází na indexu 49. 53 00:02:51,060 --> 00:02:53,940 Bohužel nebo naštěstí, V závislosti na úhlu pohledu, 54 00:02:53,940 --> 00:02:56,170 C je velmi shovívavý. 55 00:02:56,170 --> 00:02:59,480 Nebude bránit jít ven hranice svého pole. 56 00:02:59,480 --> 00:03:03,080 Ty by mohly získat přístup k minus 3 prvek svého pole 57 00:03:03,080 --> 00:03:07,400 nebo 59. prvek vašeho pole, pokud vaše pole má pouze 50 prvků. 58 00:03:07,400 --> 00:03:11,060 To se nezastaví svůj program z kompilace, ale za běhu, 59 00:03:11,060 --> 00:03:14,350 můžete narazit na obávané chyba segmentace 60 00:03:14,350 --> 00:03:17,460 pokud začnete přístup k paměti že je mimo hranice toho, co 61 00:03:17,460 --> 00:03:19,260 jste požádal svůj program, aby vám. 62 00:03:19,260 --> 00:03:21,250 Takže buďte opatrní. 63 00:03:21,250 --> 00:03:23,120 >> Co pole Prohlášení vypadat? 64 00:03:23,120 --> 00:03:26,940 Jak můžeme kód pole do existence jako bychom kód jakoukoli jinou proměnnou? 65 00:03:26,940 --> 00:03:31,250 K dispozici jsou tři části na pole declaration-- typ, jméno, 66 00:03:31,250 --> 00:03:31,880 a velikost. 67 00:03:31,880 --> 00:03:34,088 To je velmi podobné deklarace proměnných, které 68 00:03:34,088 --> 00:03:36,970 je jen typ a jméno, velikost prvkem je 69 00:03:36,970 --> 00:03:39,860 Zvláštní případ pro matici, protože se dostáváme spoustu z nich 70 00:03:39,860 --> 00:03:41,830 ve stejnou dobu. 71 00:03:41,830 --> 00:03:45,560 >> Takže typ je, jaký druh proměnné, kterou chcete, aby každý prvek pole být. 72 00:03:45,560 --> 00:03:47,150 Chci ji do pole celých čísel? 73 00:03:47,150 --> 00:03:49,010 Poté se typ dat by měl být int. 74 00:03:49,010 --> 00:03:51,760 Přejete si, aby to být Pole čtyřhry nebo plováky? 75 00:03:51,760 --> 00:03:54,545 Typ dat by měl být dvojité nebo plavat. 76 00:03:54,545 --> 00:03:56,420 Jméno je to, co chcete volat své pole. 77 00:03:56,420 --> 00:04:00,970 Co chcete, aby pojmenování tohoto obra banka celých čísel nebo plováky nebo znaků 78 00:04:00,970 --> 00:04:03,250 nebo čtyřhra, nebo co jste? 79 00:04:03,250 --> 00:04:04,700 Co chcete, aby to říkat? 80 00:04:04,700 --> 00:04:06,110 Docela samozřejmý. 81 00:04:06,110 --> 00:04:08,610 >> A konečně, velikost, která vede uvnitř hranatých závorek, 82 00:04:08,610 --> 00:04:12,180 je, kolik prvky byste jako vaše pole obsahovat. 83 00:04:12,180 --> 00:04:13,530 Kolik celá čísla chcete? 84 00:04:13,530 --> 00:04:15,570 Kolik plováky chceš? 85 00:04:15,570 --> 00:04:19,070 >> Tak například, int studentů známky 40. 86 00:04:19,070 --> 00:04:26,020 To deklaruje pole s názvem Student stupně, které se skládá z 40 čísel. 87 00:04:26,020 --> 00:04:28,180 Docela samozřejmý, doufám. 88 00:04:28,180 --> 00:04:29,330 Zde je další příklad. 89 00:04:29,330 --> 00:04:31,560 Dvojích cen Menu 8. 90 00:04:31,560 --> 00:04:34,610 To vytvoří pole s názvem Ceny menu, které se skládá 91 00:04:34,610 --> 00:04:38,300 prostoru v paměti pro osm zdvojnásobí. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Pokud si myslíte, že každého prvku z pole typu datového typu, 94 00:04:45,750 --> 00:04:49,860 takže například, jeden prvek pole typu int, stejným způsobem, 95 00:04:49,860 --> 00:04:52,770 by se myslet na jakýkoli jiný proměnná typu int, 96 00:04:52,770 --> 00:04:56,440 všechny známé operace, které my již bylo shora uvedeno v provozní 97 00:04:56,440 --> 00:04:58,270 Video bude mít smysl. 98 00:04:58,270 --> 00:05:01,620 Takže tady bychom mohli prohlásit pole of Boolean zvaných Truthtable, 99 00:05:01,620 --> 00:05:05,590 který se skládá z místnosti po dobu 10 Boolean. 100 00:05:05,590 --> 00:05:09,650 >> A pak, stejně jako jsme mohli jen přiřadit hodnota, která má jakýkoli jiný proměnné typu 101 00:05:09,650 --> 00:05:13,470 Boolean, mohli bychom říci něco jako Truthtable hranatých závorkách 102 00:05:13,470 --> 00:05:18,040 2, což je, jak ukazují, který prvek pravdivostní tabulky? 103 00:05:18,040 --> 00:05:20,350 Třetím prvkem pravdivostní tabulka, protože nezapomeňte, 104 00:05:20,350 --> 00:05:21,800 budeme počítat od 0. 105 00:05:21,800 --> 00:05:25,690 Tak to je, jak jsme se označují Třetí prvek pravdivostní tabulky. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 rovná false, stejně jako bychom mohli declare-- 107 00:05:28,680 --> 00:05:33,560 nebo bychom mohli postoupit, spíše jakýkoli Boolean proměnná typu, že je falešný. 108 00:05:33,560 --> 00:05:35,050 >> Můžeme ho použít i v podmínkách. 109 00:05:35,050 --> 00:05:39,000 if (truthtable 7 == true), což znamená, 110 00:05:39,000 --> 00:05:42,370 v případě osmého prvku z Truthtable je pravda, 111 00:05:42,370 --> 00:05:46,760 Možná, že chceme vytisknout zprávu pro uživatele, printf ("PRAVDA! n") ;. 112 00:05:46,760 --> 00:05:50,290 To nás vede k říci Truthtable 10 rovná pravda, že jo? 113 00:05:50,290 --> 00:05:53,590 No, můžu, ale je to docela nebezpečný, protože nezapomeňte, 114 00:05:53,590 --> 00:05:56,260 máme řadu 10 Boolean. 115 00:05:56,260 --> 00:06:02,340 Takže je nejvyšší index, že kompilátor dal nám je 9. 116 00:06:02,340 --> 00:06:06,010 >> Tento program bude sestavovat, ale pokud něco jiného v paměti 117 00:06:06,010 --> 00:06:09,110 existuje tam, kde bychom Očekáváme Truthtable 10 jít, 118 00:06:09,110 --> 00:06:13,980 jsme mohli trpět chybu segmentace. My mohl dostat pryč s ním, ale obecně, 119 00:06:13,980 --> 00:06:14,710 dost nebezpečné. 120 00:06:14,710 --> 00:06:19,759 Takže to, co tady dělám je legální C, ale nemusí být nutně nejlepší tah. 121 00:06:19,759 --> 00:06:22,300 Nyní, když jste deklarovat a inicializaci pole současně, 122 00:06:22,300 --> 00:06:23,960 je to vlastně docela speciální syntaxe, která vás 123 00:06:23,960 --> 00:06:26,250 můžete použít k vyplnění pole s počátečními hodnotami. 124 00:06:26,250 --> 00:06:30,130 To může dostat těžkopádné deklarovat pole o velikosti 100, 125 00:06:30,130 --> 00:06:33,430 a pak musím říct, prvek 0 rovná se to; prvek 1 rovná se to; 126 00:06:33,430 --> 00:06:34,850 prvek 2 rovná. 127 00:06:34,850 --> 00:06:36,370 Jaký to má smysl, že jo? 128 00:06:36,370 --> 00:06:39,470 >> Pokud je to malé pole, vy mohl udělat něco takového. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 rovná open složená závorka a pak čárka 130 00:06:44,360 --> 00:06:48,060 oddělit seznam prvků, že chcete, aby v poli. 131 00:06:48,060 --> 00:06:50,520 Poté zavřete složenou závorkou středník. 132 00:06:50,520 --> 00:06:53,910 To vytvoří pole Velikost Tři volal Truthtable, 133 00:06:53,910 --> 00:06:56,090 s prvky false, pravda, a pravda. 134 00:06:56,090 --> 00:06:59,270 A ve skutečnosti, že instance syntax I zde je 135 00:06:59,270 --> 00:07:03,350 přesně stejný jako dělá jednotlivý prvek syntax níže. 136 00:07:03,350 --> 00:07:09,380 Tyto dva způsoby kódování odkázaný produkovat přesně stejné pole. 137 00:07:09,380 --> 00:07:11,740 >> Podobně, mohli bychom iterovat přes všechny prvky 138 00:07:11,740 --> 00:07:15,400 z pole pomocí smyčky, která v Skutečnost, je velmi důrazně doporučuje 139 00:07:15,400 --> 00:07:16,790 at-home cvičení. 140 00:07:16,790 --> 00:07:20,720 Jak si vytvořit pole 100 celých čísel, kde 141 00:07:20,720 --> 00:07:23,477 každý prvek matice je jeho index? 142 00:07:23,477 --> 00:07:26,560 Tak například, máme řadu 100 celá čísla, a v prvním prvku, 143 00:07:26,560 --> 00:07:27,790 Chceme dát 0. 144 00:07:27,790 --> 00:07:29,810 Ve druhém prvku, chceme dát 1. 145 00:07:29,810 --> 00:07:33,319 Ve třetím prvku, chceme dát 2; a tak dále a tak dále. 146 00:07:33,319 --> 00:07:35,360 To je opravdu dobrá at-home cvičení, jak to udělat. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Tady, to nevypadá jako příliš nezměnilo. 149 00:07:40,220 --> 00:07:44,170 Ale všimněte si, že v mezi hranaté závorky, tentokrát, 150 00:07:44,170 --> 00:07:45,830 Já jsem vlastně vynechat číslo. 151 00:07:45,830 --> 00:07:48,000 Pokud používáte tuto velmi speciální instance 152 00:07:48,000 --> 00:07:50,380 syntax vytvořit pole, ve skutečnosti ne 153 00:07:50,380 --> 00:07:53,491 je třeba uvést velikost matice předem. 154 00:07:53,491 --> 00:07:55,740 Kompilátor je dost chytrý, vědět, že vás vlastně 155 00:07:55,740 --> 00:07:58,980 chtít pole o velikosti 3, proto, že jste dal tři elementy 156 00:07:58,980 --> 00:08:00,640 napravo od rovnítka. 157 00:08:00,640 --> 00:08:04,140 Pokud jste dal čtyři, mělo by to vám dal pravdivostní tabulky o velikosti čtyř; 158 00:08:04,140 --> 00:08:06,270 a tak dále a tak dále. 159 00:08:06,270 --> 00:08:09,380 >> Pole nejsou omezeny na jeden rozměr, což je docela v pohodě. 160 00:08:09,380 --> 00:08:12,000 Můžete si skutečně mít tolik Boční Specifikátory, jak si přejete. 161 00:08:12,000 --> 00:08:16,470 Tak například, pokud chcete vytvořit tabule pro hru bitevní loď, která, 162 00:08:16,470 --> 00:08:20,910 Pokud jste někdy hráli, je hra, která je hrál si s kolíčky na 10 o 10 mřížkou, 163 00:08:20,910 --> 00:08:22,450 můžete vytvořit pole, jako je tento. 164 00:08:22,450 --> 00:08:26,030 Dalo by se říci Bool bitevní loď hranatou závorku 10 165 00:08:26,030 --> 00:08:29,590 uzavřené hranatá závorka square držák 10 zavřeno hranatou závorku. 166 00:08:29,590 --> 00:08:32,710 >> A pak, můžete si vybrat interpretovat to ve své mysli, jako 10 167 00:08:32,710 --> 00:08:35,576 o 10 mřížky buněk. 168 00:08:35,576 --> 00:08:37,409 Nyní, ve skutečnosti, v paměti, to opravdu jen 169 00:08:37,409 --> 00:08:42,440 zůstávají 100 prvek, single rozměrné pole. 170 00:08:42,440 --> 00:08:46,070 A to ve skutečnosti platí i pro pokud Vás mají tři rozměry nebo čtyři nebo pět. 171 00:08:46,070 --> 00:08:49,420 Je to opravdu jen to vynásobit všechny indices-- 172 00:08:49,420 --> 00:08:51,130 nebo všechny velikosti specifiers-- dohromady, 173 00:08:51,130 --> 00:08:53,480 a vy jen získat jednorozměrný pole o dané velikosti. 174 00:08:53,480 --> 00:08:57,090 >> Ale pokud jde o organizaci a vizualizace a lidské vnímání, 175 00:08:57,090 --> 00:08:59,240 to může být mnohem jednodušší pracovat s mřížkou 176 00:08:59,240 --> 00:09:02,980 pokud pracujete na hru jako Tic-tac-toe nebo bitevní loď, 177 00:09:02,980 --> 00:09:05,179 nebo něco takového. 178 00:09:05,179 --> 00:09:06,970 Je to skvělý abstrakce, místo toho, aby 179 00:09:06,970 --> 00:09:09,340 přemýšlet o Tic-tac-toe board jako čára devíti 180 00:09:09,340 --> 00:09:13,810 čtverce nebo jejich Battleship deska jako řada 100 čtverců. 181 00:09:13,810 --> 00:09:16,010 A 10 o 10 mřížkou nebo tři o tři mřížka je pravděpodobně 182 00:09:16,010 --> 00:09:17,225 mnohem více snadno vnímat. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> A teď, něco opravdu důležitého pole. 185 00:09:22,280 --> 00:09:25,950 Můžeme léčit každý jednotlivec prvek pole jako proměnné. 186 00:09:25,950 --> 00:09:27,700 Viděli jsme, že dříve když jsme byli přiřazování 187 00:09:27,700 --> 00:09:32,240 Hodnota true na určité Boolean nebo jejich testování v conditionals. 188 00:09:32,240 --> 00:09:35,960 Ale nemůžeme léčit celokrajné Pole se jako proměnné. 189 00:09:35,960 --> 00:09:41,760 Nemůžeme například přiřadit jednu soustavu, do jiného pole pomocí přiřazení 190 00:09:41,760 --> 00:09:42,930 operátor. 191 00:09:42,930 --> 00:09:44,640 To není legální C. 192 00:09:44,640 --> 00:09:47,920 >> Chceme-li, za to, co example-- budeme dělat v tomto příkladu 193 00:09:47,920 --> 00:09:50,200 bude kopírovat jednu soustavu, do druhého. 194 00:09:50,200 --> 00:09:53,810 Pokud chceme udělat, jsme vlastně je třeba použít smyčku zkopírovat 195 00:09:53,810 --> 00:09:56,550 každý jednotlivý element jeden po druhém. 196 00:09:56,550 --> 00:09:58,700 Vím, že je to trochu časově náročné. 197 00:09:58,700 --> 00:10:04,022 >> Tak například, když jsme měli těchto pár řádků kódu, by to fungovat? 198 00:10:04,022 --> 00:10:05,230 No, ne, to by nebylo, že jo? 199 00:10:05,230 --> 00:10:07,860 Vzhledem k tomu, že se snažíme přiřadit jídlo bar. 200 00:10:07,860 --> 00:10:09,860 To nebude fungovat, protože je to pole, 201 00:10:09,860 --> 00:10:13,130 a my jsme právě popsali že to není legální C. 202 00:10:13,130 --> 00:10:15,580 >> Místo toho, pokud chceme zkopírujte obsah potravin 203 00:10:15,580 --> 00:10:18,070 do baru, který je to, co se snažíme dělat tady, 204 00:10:18,070 --> 00:10:19,970 bychom potřebovali syntaxi jako je tento. 205 00:10:19,970 --> 00:10:24,170 Máme pro smyčce, která jde od J je rovno 0 až 5, 206 00:10:24,170 --> 00:10:28,390 a my přírůstek J na každé obrátce smyčka a přiřadit prvky, jako to. 207 00:10:28,390 --> 00:10:33,360 To by mělo za následek také baru je jeden, dva, tři, čtyři, pět, 208 00:10:33,360 --> 00:10:36,730 ale musíme to udělat tento velmi pomalé element-by-prvkem způsob, 209 00:10:36,730 --> 00:10:40,009 místo toho, tím, že jen kopírování celého pole. 210 00:10:40,009 --> 00:10:42,050 V jiných programů jazyky, modernější, 211 00:10:42,050 --> 00:10:45,610 můžete ve skutečnosti, dělat jen Tak jednoduché rovná syntaxi. 212 00:10:45,610 --> 00:10:49,620 Ale C, bohužel, my jsme není dovoleno dělat. 213 00:10:49,620 --> 00:10:52,026 >> A teď, je tu ještě jedna další věc, kterou chci zmínit 214 00:10:52,026 --> 00:10:54,650 o pole, které může být trochu trochu složitější poprvé, co 215 00:10:54,650 --> 00:10:55,990 pracovat s nimi. 216 00:10:55,990 --> 00:10:59,860 Diskutovali jsme ve videu o proměnné rozsah, 217 00:10:59,860 --> 00:11:04,940 že většina proměnné v jazyce C, když zavoláte je ve funkcích, jsou předány hodnotou. 218 00:11:04,940 --> 00:11:08,620 Vzpomínáte si, co to znamená předat něco podle hodnoty? 219 00:11:08,620 --> 00:11:12,570 To znamená, že děláme kopii proměnná, která je právě prošel dovnitř. 220 00:11:12,570 --> 00:11:16,290 Funkce volaným, funkce která je obdrží proměnnou, 221 00:11:16,290 --> 00:11:17,730 nedostane proměnnou sám. 222 00:11:17,730 --> 00:11:20,850 To dostane jeho vlastní místní kopii, která s ním pracovat. 223 00:11:20,850 --> 00:11:24,070 >> Pole, samozřejmě, že ne nenásledují toto pravidlo. 224 00:11:24,070 --> 00:11:27,600 Spíše, co nazýváme je kolem odkazem. 225 00:11:27,600 --> 00:11:31,360 Volaný vlastně se dostávají pole. 226 00:11:31,360 --> 00:11:34,207 To neobdrží vlastní lokální kopie. 227 00:11:34,207 --> 00:11:36,040 A pokud si myslíte o to, to má smysl. 228 00:11:36,040 --> 00:11:39,750 Pokud pole jsou opravdu velké, to zabere tolik času a úsilí, 229 00:11:39,750 --> 00:11:44,470 vytvořit kopii pole 100 nebo 1000 nebo 10000 prvky, 230 00:11:44,470 --> 00:11:48,290 že to nestojí to za fungují obdržet kopii toho, 231 00:11:48,290 --> 00:11:51,037 udělat nějakou práci s ním, a pak jen být hotové s kopií; 232 00:11:51,037 --> 00:11:53,120 to nemusí mít to potlouká kolem už ne. 233 00:11:53,120 --> 00:11:54,710 >> Protože pole jsou některé objemné a těžkopádné, 234 00:11:54,710 --> 00:11:56,001 my jen předat je odkazem. 235 00:11:56,001 --> 00:12:01,210 Jen Věříme, že funkce k, neporušují nic. 236 00:12:01,210 --> 00:12:03,010 Tak to skutečně dostat pole. 237 00:12:03,010 --> 00:12:05,290 To už ani nemůže svou vlastní lokální kopii. 238 00:12:05,290 --> 00:12:07,170 >> Takže co to znamená, pak, když volaný 239 00:12:07,170 --> 00:12:08,970 manipuluje prvky pole? 240 00:12:08,970 --> 00:12:10,780 Co se děje? 241 00:12:10,780 --> 00:12:13,210 Pro teď, budeme lesk nad tím, proč právě toto 242 00:12:13,210 --> 00:12:15,320 děje, proč pole jsou předány podle odkazu 243 00:12:15,320 --> 00:12:17,810 a všechno ostatní je předán podle hodnoty. 244 00:12:17,810 --> 00:12:20,470 Ale slibuji vám, budeme vrátit a dát vám odpověď 245 00:12:20,470 --> 00:12:23,750 k tomu v pozdějším videu. 246 00:12:23,750 --> 00:12:28,110 >> Zde je ještě jeden cvičení pro vás Než jsme se zabalit věci na polích. 247 00:12:28,110 --> 00:12:31,400 Svazek kódu tady, to je nijak zvlášť dobrý styl, 248 00:12:31,400 --> 00:12:33,400 Jen Budu dělat, že námitku. 249 00:12:33,400 --> 00:12:36,660 Tam je žádné komentáře tady, což je dost špatná forma. 250 00:12:36,660 --> 00:12:39,750 Ale je to jen proto, že jsem chtěl být schopný, aby se vešly vše, co na obrazovce. 251 00:12:39,750 --> 00:12:44,360 >> Na vrcholu, můžete vidět, že mám dvě prohlášení funkce pro nastavenou pole 252 00:12:44,360 --> 00:12:45,820 a nastavení int. 253 00:12:45,820 --> 00:12:49,680 Set pole zřejmě bere pole ze čtyř celých čísel jako vstup. 254 00:12:49,680 --> 00:12:52,767 A set int prý bere celé číslo jako jeho vstup. 255 00:12:52,767 --> 00:12:54,350 Ale oba z nich nemají výstup. 256 00:12:54,350 --> 00:12:57,689 Výstup, návrat typ, na každý z nich je neplatné. 257 00:12:57,689 --> 00:12:59,480 V Main, máme pár řádků kódu. 258 00:12:59,480 --> 00:13:02,730 Prohlašujeme proměnnou integer volal a přiřaďte jí hodnotu 10. 259 00:13:02,730 --> 00:13:07,080 Prohlašujeme pole čtyř celých čísel volal B a přiřadit prvky 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, a 3, v uvedeném pořadí. 261 00:13:08,730 --> 00:13:12,190 Pak máme hovor nastavit int a volání pro nastavení pole. 262 00:13:12,190 --> 00:13:15,910 Definice nastaveného pole a sady int jsou dole, na dně. 263 00:13:15,910 --> 00:13:17,640 >> A tak, opět bych vám položit otázku. 264 00:13:17,640 --> 00:13:20,770 Co se bude vytištěna zde na konci Main? 265 00:13:20,770 --> 00:13:23,020 Je tu col výtisk. Jsem vytisknout dvě celá čísla. 266 00:13:23,020 --> 00:13:28,010 Já jsem vytištění obsahu a obsah B hranatých závorkách 0. 267 00:13:28,010 --> 00:13:29,880 Pozastavit video zde a chvíli trvat. 268 00:13:29,880 --> 00:13:35,482 Můžete zjistit, co to Funkce vytiskne na konci? 269 00:13:35,482 --> 00:13:38,190 Doufejme, pokud jste si vzpomenout na Rozdíl mezi kolemjdoucí hodnotou 270 00:13:38,190 --> 00:13:41,680 a předávání odkazem, tento Problém byl v tom není příliš složité pro vás. 271 00:13:41,680 --> 00:13:44,130 A odpověď byste našli to je. 272 00:13:44,130 --> 00:13:47,660 Pokud si nejste úplně jistý, jak se proč je to tak, vzít druhý, 273 00:13:47,660 --> 00:13:50,620 vrátit, zkontrolovat, co jsem byl jen diskutovat o předávání polí 274 00:13:50,620 --> 00:13:53,450 formou odkazu, ve srovnání s průchodem jiné proměnné podle hodnoty, 275 00:13:53,450 --> 00:13:56,680 a doufejme, bude to dělat trochu větší smysl. 276 00:13:56,680 --> 00:13:59,760 >> Jsem Doug Lloyd, a to je CS50. 277 00:13:59,760 --> 00:14:01,467