1 00:00:00,000 --> 00:00:03,388 >> [Prehrávanie hudby] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Dobre. 4 00:00:06,020 --> 00:00:07,680 Práca s single premenné je celkom zábavné. 5 00:00:07,680 --> 00:00:09,500 Ale čo keď chceme pracovať s mnohými premennými, 6 00:00:09,500 --> 00:00:12,760 ale my nechceme mať veľa rôzne mená lietanie okolo našej kód? 7 00:00:12,760 --> 00:00:15,980 V tomto prípade, sú polia príde naozaj vhod. 8 00:00:15,980 --> 00:00:19,510 Polia sú naozaj základné údaje štruktúra pre ľubovoľnom programovacom jazyku 9 00:00:19,510 --> 00:00:20,260 že budete používať. 10 00:00:20,260 --> 00:00:24,450 A sú naozaj, naozaj užitočné, najmä, ako uvidíme, v CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Používame pole držať hodnoty rovnakého dátového typu 12 00:00:27,870 --> 00:00:29,830 na súvislých pamäťových miest. 13 00:00:29,830 --> 00:00:32,430 To znamená, že je to spôsob, ako môžeme skupina 14 00:00:32,430 --> 00:00:35,430 banda celých čísel spolu pamäte alebo partia znakov 15 00:00:35,430 --> 00:00:38,270 alebo pláva v pamäti naozaj blízko pri sebe a práce 16 00:00:38,270 --> 00:00:41,930 s nimi bez toho, aby bolo, aby každý jedným jeho vlastný jedinečný názov, ktorý môže 17 00:00:41,930 --> 00:00:44,500 dostať ťažkopádne po chvíli. 18 00:00:44,500 --> 00:00:48,130 >> Teraz, jeden spôsob, ako analogize polí je premýšľať o vašom miestnom príspevok 19 00:00:48,130 --> 00:00:49,000 kanceláriu na sekundu. 20 00:00:49,000 --> 00:00:51,820 Takže krok od programovania a len zatvorte oči 21 00:00:51,820 --> 00:00:54,120 a predstaviť vo svojej mysli Váš miestny pošta. 22 00:00:54,120 --> 00:00:57,160 Zvyčajne sa vo väčšine stĺpiku kancelárie, tam je veľká banka 23 00:00:57,160 --> 00:01:00,490 A poštovej schránky na stene. 24 00:01:00,490 --> 00:01:03,510 >> Pole je obrie blok súvislé pamäti, 25 00:01:03,510 --> 00:01:06,120 rovnakým spôsobom, že poštové Banka vo svojej pošte 26 00:01:06,120 --> 00:01:11,230 je veľký priestor na stena na pošte. 27 00:01:11,230 --> 00:01:15,750 Arrays boli rozdelené do malých, rovnako veľké bloky priestoru, 28 00:01:15,750 --> 00:01:19,930 pričom každý z nich je nazývaný prvok, v rovnakým spôsobom, že steny stĺpika 29 00:01:19,930 --> 00:01:23,840 office bol rozdelený do malých, rovnako veľké bloky priestoru, 30 00:01:23,840 --> 00:01:27,560 ktorý nazývame PO box. 31 00:01:27,560 --> 00:01:31,650 Každý prvok poľa môže uloženie určitého množstva dát, 32 00:01:31,650 --> 00:01:37,540 rovnako ako každá poštová schránka je schopný držať určité množstvo pošty. 33 00:01:37,540 --> 00:01:41,540 >> Čo môže byť uložený v každom prvku poľa je premenné rovnakého dát 34 00:01:41,540 --> 00:01:45,300 typu, ako napríklad int alebo char, len rovnako ako vo vašej poštovej priehradku, 35 00:01:45,300 --> 00:01:47,300 sa zmestí len veci podobného typu, 36 00:01:47,300 --> 00:01:50,430 napríklad písmená alebo malých baleniach. 37 00:01:50,430 --> 00:01:55,050 A konečne, môžeme prístup ku každému prvku pole priamo číslom indexu, 38 00:01:55,050 --> 00:01:59,770 rovnako ako môžeme prístup do nášho pošta box tým, že pozná jej číslo schránky. 39 00:01:59,770 --> 00:02:02,750 Dúfajme, že analógia vám pomôže dostať svoje hlavy 40 00:02:02,750 --> 00:02:05,540 okolo myšlienky polí strany analogizing na niečo iné 41 00:02:05,540 --> 00:02:08,400 že ste pravdepodobne už oboznámení s. 42 00:02:08,400 --> 00:02:13,182 >> V jazyku C, prvky polia sú indexovaných od 0, nie je od 1. 43 00:02:13,182 --> 00:02:14,390 A to je naozaj dôležité. 44 00:02:14,390 --> 00:02:18,530 A v skutočnosti, to je dôvod, prečo sme v CS 50, A prečo počítačoví odborníci často 45 00:02:18,530 --> 00:02:22,150 sa bude počítať od 0, je pretože C je matica 46 00:02:22,150 --> 00:02:24,660 indexovanie, ktorý vždy začína na 0 ° C. 47 00:02:24,660 --> 00:02:28,730 Takže ak pole sa skladá z n elementy, prvý prvok daného poľa 48 00:02:28,730 --> 00:02:32,960 sa nachádza na indexe 0, a posledný prvok poľa 49 00:02:32,960 --> 00:02:36,610 sa nachádza na indexe n mínus 1. 50 00:02:36,610 --> 00:02:43,160 Opäť platí, že ak je tu n prvky v našej pole, posledný index n mínus 1. 51 00:02:43,160 --> 00:02:46,820 >> Takže ak naše pole má 50 prvkov, Prvý prvok je umiestnený na indexe 0, 52 00:02:46,820 --> 00:02:51,060 a posledný prvok sa nachádza na indexe 49. 53 00:02:51,060 --> 00:02:53,940 Bohužiaľ alebo našťastie, V závislosti na uhle pohľadu, 54 00:02:53,940 --> 00:02:56,170 C je veľmi zhovievavý. 55 00:02:56,170 --> 00:02:59,480 Nebude brániť ísť von hranice svojho poľa. 56 00:02:59,480 --> 00:03:03,080 Tie by mohli získať prístup k mínus 3 prvok svojho poľa 57 00:03:03,080 --> 00:03:07,400 alebo 59. prvok vášho poľa, ak vaše pole má iba 50 prvkov. 58 00:03:07,400 --> 00:03:11,060 To sa nezastaví svoj program z kompilácie, ale za behu, 59 00:03:11,060 --> 00:03:14,350 môžete naraziť na obávanej chyba segmentácia 60 00:03:14,350 --> 00:03:17,460 ak začnete prístup k pamäti že je mimo hranice toho, čo 61 00:03:17,460 --> 00:03:19,260 ste požiadal svoj 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 >> Čo pole Vyhlásenie vyzerať? 64 00:03:23,120 --> 00:03:26,940 Ako môžeme kód poľa do existencie ako by sme kód akoukoľvek inou premennou? 65 00:03:26,940 --> 00:03:31,250 K dispozícii sú tri časti na pole declaration-- typ, meno, 66 00:03:31,250 --> 00:03:31,880 a veľkosť. 67 00:03:31,880 --> 00:03:34,088 To je veľmi podobné deklarácie premenných, ktoré 68 00:03:34,088 --> 00:03:36,970 je len typ a meno, veľkosť prvkom je 69 00:03:36,970 --> 00:03:39,860 Špecifický prípad pre maticu, pretože sa dostávame veľa z nich 70 00:03:39,860 --> 00:03:41,830 v rovnakom čase. 71 00:03:41,830 --> 00:03:45,560 >> Takže typ je, aký druh premenné, ktorú chcete, aby každý prvok poľa byť. 72 00:03:45,560 --> 00:03:47,150 Chcem ju do poľa celých čísel? 73 00:03:47,150 --> 00:03:49,010 Potom sa typ dát by mal byť int. 74 00:03:49,010 --> 00:03:51,760 Prajete si, aby to byť Poľa štvorhry alebo plaváky? 75 00:03:51,760 --> 00:03:54,545 Typ dát by mal byť dvojité alebo plávať. 76 00:03:54,545 --> 00:03:56,420 Meno je to, čo chcete volať svoje pole. 77 00:03:56,420 --> 00:04:00,970 Čo chcete, aby pomenovanie tohto obra banka celých čísiel alebo plaváky alebo znakov 78 00:04:00,970 --> 00:04:03,250 alebo štvorhra, alebo čo ste? 79 00:04:03,250 --> 00:04:04,700 Čo chcete, aby to hovoriť? 80 00:04:04,700 --> 00:04:06,110 Celkom samozrejmý. 81 00:04:06,110 --> 00:04:08,610 >> A konečne, veľkosť, ktorá vedie vnútri hranatých zátvoriek, 82 00:04:08,610 --> 00:04:12,180 je, koľko prvky by ste ako vaše pole obsahovať. 83 00:04:12,180 --> 00:04:13,530 Koľko celé čísla chcete? 84 00:04:13,530 --> 00:04:15,570 Koľko plaváky chceš? 85 00:04:15,570 --> 00:04:19,070 >> Tak napríklad, int študentov známky 40. 86 00:04:19,070 --> 00:04:26,020 To deklaruje pole s názvom Študent stupňa, ktoré sa skladá z 40 čísel. 87 00:04:26,020 --> 00:04:28,180 Celkom samozrejmý, dúfam. 88 00:04:28,180 --> 00:04:29,330 Tu je ďalší príklad. 89 00:04:29,330 --> 00:04:31,560 Dvojitých cien Menu 8. 90 00:04:31,560 --> 00:04:34,610 To vytvorí pole s názvom Ceny menu, ktoré sa skladá 91 00:04:34,610 --> 00:04:38,300 priestoru v pamäti pre osem zdvojnásobí. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Ak si myslíte, že každého prvku z poľa typu dátového typu, 94 00:04:45,750 --> 00:04:49,860 takže napríklad, jeden prvok pole typu int, rovnakým spôsobom, 95 00:04:49,860 --> 00:04:52,770 by sa myslieť na akýkoľvek iný premenná typu int, 96 00:04:52,770 --> 00:04:56,440 všetky známe operácie, ktoré my už bolo zhora uvedené v prevádzkovej 97 00:04:56,440 --> 00:04:58,270 Video bude mať zmysel. 98 00:04:58,270 --> 00:05:01,620 Takže tu by sme mohli vyhlásiť pole of Boolean zvaných Truthtable, 99 00:05:01,620 --> 00:05:05,590 ktorý sa skladá z miestnosti po dobu 10 Boolean. 100 00:05:05,590 --> 00:05:09,650 >> A potom, rovnako ako sme mohli len priradiť hodnota, ktorá má akýkoľvek iný premennej typu 101 00:05:09,650 --> 00:05:13,470 Boolean, mohli by sme povedať niečo ako Truthtable hranatých zátvorkách 102 00:05:13,470 --> 00:05:18,040 2, čo je, ako ukazujú, ktorý prvok pravdivostnú tabuľky? 103 00:05:18,040 --> 00:05:20,350 Tretím prvkom pravdivostná tabuľka, pretože nezabudnite, 104 00:05:20,350 --> 00:05:21,800 budeme počítať od 0. 105 00:05:21,800 --> 00:05:25,690 Tak to je, ako sme sa označujú Tretí prvok pravdivostnú tabuľky. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 rovná false, rovnako ako by sme mohli declare-- 107 00:05:28,680 --> 00:05:33,560 alebo by sme mohli postúpiť, skôr akýkoľvek Boolean premenná typu, že je falošný. 108 00:05:33,560 --> 00:05:35,050 >> Môžeme ho použiť aj v podmienkach. 109 00:05:35,050 --> 00:05:39,000 if (truthtable 7 == true), čo znamená, 110 00:05:39,000 --> 00:05:42,370 v prípade ôsmeho prvku z Truthtable je pravda, 111 00:05:42,370 --> 00:05:46,760 Možno, že chceme vytlačiť správu pre užívateľov, printf ("PRAVDA! n");. 112 00:05:46,760 --> 00:05:50,290 To nás vedie k povedať Truthtable 10 rovná pravda, že jo? 113 00:05:50,290 --> 00:05:53,590 No, môžem, ale je to celkom nebezpečný, pretože nezabudnite, 114 00:05:53,590 --> 00:05:56,260 máme rad 10 Boolean. 115 00:05:56,260 --> 00:06:02,340 Takže je najvyšší index, že kompilátor dal nám je 9. 116 00:06:02,340 --> 00:06:06,010 >> Tento program bude zostavovať, ale ak niečo iné v pamäti 117 00:06:06,010 --> 00:06:09,110 existuje tam, kde by sme Očakávame Truthtable 10 ísť, 118 00:06:09,110 --> 00:06:13,980 sme mohli trpieť chybu segmentácie. My mohol dostať preč s ním, ale všeobecne, 119 00:06:13,980 --> 00:06:14,710 dosť nebezpečné. 120 00:06:14,710 --> 00:06:19,759 Takže to, čo tu robím je legálne C, ale nemusí byť nevyhnutne najlepšie ťah. 121 00:06:19,759 --> 00:06:22,300 Teraz, keď ste deklarovať a inicializáciu poľa súčasne, 122 00:06:22,300 --> 00:06:23,960 je to vlastne celkom špeciálna syntax, ktorá vás 123 00:06:23,960 --> 00:06:26,250 môžete použiť na vyplnenie poľa s počiatočnými hodnotami. 124 00:06:26,250 --> 00:06:30,130 To môže dostať ťažkopádne deklarovať poľa veľkosti 100, 125 00:06:30,130 --> 00:06:33,430 a potom musím povedať, prvok 0 rovná sa to; prvok 1 rovná sa to; 126 00:06:33,430 --> 00:06:34,850 prvok 2 rovná. 127 00:06:34,850 --> 00:06:36,370 Aký to má zmysel, že jo? 128 00:06:36,370 --> 00:06:39,470 >> Ak je to malé pole, vy mohol urobiť niečo také. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 rovná open zložená zátvorka a potom čiarka 130 00:06:44,360 --> 00:06:48,060 oddeliť zoznam prvkov, že chcete, aby v poli. 131 00:06:48,060 --> 00:06:50,520 Potom zavrite zloženú zátvorkou bodkočiarku. 132 00:06:50,520 --> 00:06:53,910 To vytvorí pole Veľkosť Tri volal Truthtable, 133 00:06:53,910 --> 00:06:56,090 s prvkami false, pravda, a pravda. 134 00:06:56,090 --> 00:06:59,270 A v skutočnosti, že inštancia syntax Aj tu je 135 00:06:59,270 --> 00:07:03,350 presne rovnaký ako robí jednotlivý prvok syntax nižšie. 136 00:07:03,350 --> 00:07:09,380 Tieto dva spôsoby kódovania odkázaný produkovať presne rovnaké pole. 137 00:07:09,380 --> 00:07:11,740 >> Podobne, mohli by sme iterovat cez všetky prvky 138 00:07:11,740 --> 00:07:15,400 z poľa pomocou slučky, ktorá v Skutočnosť, je veľmi dôrazne odporúča 139 00:07:15,400 --> 00:07:16,790 at-home cvičenia. 140 00:07:16,790 --> 00:07:20,720 Ako si vytvoriť pole 100 celých čísel, kde 141 00:07:20,720 --> 00:07:23,477 každý prvok matice je jeho index? 142 00:07:23,477 --> 00:07:26,560 Tak napríklad, máme rad 100 celé čísla, a v prvom prvku, 143 00:07:26,560 --> 00:07:27,790 Chceme dať 0. 144 00:07:27,790 --> 00:07:29,810 V druhom prvku, chceme dať 1. 145 00:07:29,810 --> 00:07:33,319 V treťom prvku, chceme dať 2; a tak ďalej a tak ďalej. 146 00:07:33,319 --> 00:07:35,360 To je naozaj dobrá at-home cvičenia, ako to urobiť. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Tu, to nevyzerá ako príliš nezmenilo. 149 00:07:40,220 --> 00:07:44,170 Ale všimnite si, že v medzi hranaté zátvorky, tentoraz, 150 00:07:44,170 --> 00:07:45,830 Ja som vlastne vynechať číslo. 151 00:07:45,830 --> 00:07:48,000 Ak používate túto veľmi špeciálny inštancie 152 00:07:48,000 --> 00:07:50,380 syntax vytvoriť pole, v skutočnosti nie 153 00:07:50,380 --> 00:07:53,491 je potrebné uviesť veľkosť matice vopred. 154 00:07:53,491 --> 00:07:55,740 Kompilátor je dosť šikovný, vedieť, že vás vlastne 155 00:07:55,740 --> 00:07:58,980 chcieť poľa veľkosti 3, preto, že ste dal tri elementy 156 00:07:58,980 --> 00:08:00,640 napravo od znamienka rovná. 157 00:08:00,640 --> 00:08:04,140 Ak ste dal štyri, malo by to vám dal pravdivostnú tabuľky o veľkosti štyroch; 158 00:08:04,140 --> 00:08:06,270 a tak ďalej a tak ďalej. 159 00:08:06,270 --> 00:08:09,380 >> Polia nie sú obmedzené na jeden rozmer, čo je celkom v pohode. 160 00:08:09,380 --> 00:08:12,000 Môžete si skutočne mať toľko Bočné Špecifikátor, ako si prajete. 161 00:08:12,000 --> 00:08:16,470 Tak napríklad, ak chcete vytvoriť tabuľa pre hru bojová loď, ktorá, 162 00:08:16,470 --> 00:08:20,910 Ak ste niekedy hrali, je hra, ktorá je hral si s štipce na 10 o 10 mriežkou, 163 00:08:20,910 --> 00:08:22,450 môžete vytvoriť pole, ako je tento. 164 00:08:22,450 --> 00:08:26,030 Dalo by sa povedať Bool bojová loď hranatú zátvorku 10 165 00:08:26,030 --> 00:08:29,590 uzavretej hranatá zátvorka square držiak 10 zatvorené hranatú zátvorku. 166 00:08:29,590 --> 00:08:32,710 >> A potom, môžete si vybrať interpretovať to vo svojej mysli, ako 10 167 00:08:32,710 --> 00:08:35,576 o 10 mriežky buniek. 168 00:08:35,576 --> 00:08:37,409 Teraz, v skutočnosti, v pamäti, to naozaj len 169 00:08:37,409 --> 00:08:42,440 zostávajú 100 prvok, single rozmerné pole. 170 00:08:42,440 --> 00:08:46,070 A to v skutočnosti platí aj pre ak Vás majú tri rozmery alebo štyri alebo päť. 171 00:08:46,070 --> 00:08:49,420 Je to naozaj len to vynásobiť všetky indices-- 172 00:08:49,420 --> 00:08:51,130 alebo všetky veľkosti specifiers-- dohromady, 173 00:08:51,130 --> 00:08:53,480 a vy len získať jednorozmerný pole o danej veľkosti. 174 00:08:53,480 --> 00:08:57,090 >> Ale pokiaľ ide o organizáciu a vizualizácie a ľudské vnímanie, 175 00:08:57,090 --> 00:08:59,240 to môže byť oveľa jednoduchšie pracovať s mriežkou 176 00:08:59,240 --> 00:09:02,980 ak pracujete na hru ako Tic-tac-toe alebo bojová loď, 177 00:09:02,980 --> 00:09:05,179 alebo niečo také. 178 00:09:05,179 --> 00:09:06,970 Je to skvelý abstrakcie, namiesto toho, aby 179 00:09:06,970 --> 00:09:09,340 premýšľať o Tic-tac-toe board ako čiara deviatich 180 00:09:09,340 --> 00:09:13,810 štvorca alebo ich Battleship doska ako rad 100 štvorcov. 181 00:09:13,810 --> 00:09:16,010 A 10 o 10 mriežkou alebo tri o tri mriežka je pravdepodobne 182 00:09:16,010 --> 00:09:17,225 oveľa viac ľahko vnímať. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> A teraz, niečo naozaj dôležitého poľa. 185 00:09:22,280 --> 00:09:25,950 Môžeme liečiť každý jednotlivec prvok poľa ako premenné. 186 00:09:25,950 --> 00:09:27,700 Videli sme, že skôr keď sme boli priraďovaní 187 00:09:27,700 --> 00:09:32,240 Hodnota true na určité Boolean alebo ich testovanie v conditionals. 188 00:09:32,240 --> 00:09:35,960 Ale nemôžeme liečiť celokrajné Pole sa ako premenné. 189 00:09:35,960 --> 00:09:41,760 Nemôžeme napríklad priradiť jednu sústavu, do iného poľa pomocou priradenia 190 00:09:41,760 --> 00:09:42,930 operátor. 191 00:09:42,930 --> 00:09:44,640 To nie je legálne C. 192 00:09:44,640 --> 00:09:47,920 >> Ak chceme, za to, čo example-- budeme robiť v tomto príklade 193 00:09:47,920 --> 00:09:50,200 bude kopírovať jednu sústavu, do druhého. 194 00:09:50,200 --> 00:09:53,810 Ak chceme urobiť, sme vlastne je potrebné použiť slučku skopírovať 195 00:09:53,810 --> 00:09:56,550 každý jednotlivý element jeden po druhom. 196 00:09:56,550 --> 00:09:58,700 Viem, že je to trochu časovo náročné. 197 00:09:58,700 --> 00:10:04,022 >> Tak napríklad, keď sme mali týchto pár riadkov kódu, by to fungovať? 198 00:10:04,022 --> 00:10:05,230 No, nie, to by nebolo, že jo? 199 00:10:05,230 --> 00:10:07,860 Vzhľadom k tomu, že sa snažíme priradiť jedlo bar. 200 00:10:07,860 --> 00:10:09,860 To nebude fungovať, pretože je to pole, 201 00:10:09,860 --> 00:10:13,130 a my sme práve popísali že to nie je legálne C. 202 00:10:13,130 --> 00:10:15,580 >> Namiesto toho, ak chceme skopírujte obsah potravín 203 00:10:15,580 --> 00:10:18,070 do baru, ktorý je to, čo sa snažíme robiť tu, 204 00:10:18,070 --> 00:10:19,970 by sme potrebovali syntax ako je tento. 205 00:10:19,970 --> 00:10:24,170 Máme pre sláčiky, ktorá ide od J je rovné 0 až 5, 206 00:10:24,170 --> 00:10:28,390 a my prírastok J na každej obrátke slučka a priradiť prvky, ako to. 207 00:10:28,390 --> 00:10:33,360 To by malo za následok tiež baru je jeden, dva, tri, štyri, päť, 208 00:10:33,360 --> 00:10:36,730 ale musíme to urobiť tento veľmi pomalé element-by-prvkom spôsob, 209 00:10:36,730 --> 00:10:40,009 namiesto toho, tým, že len kopírovanie celého poľa. 210 00:10:40,009 --> 00:10:42,050 V iných programov jazyky, modernejšie, 211 00:10:42,050 --> 00:10:45,610 môžete v skutočnosti, robiť len Tak jednoduché rovná syntax. 212 00:10:45,610 --> 00:10:49,620 Ale C, bohužiaľ, my sme nie je dovolené robiť. 213 00:10:49,620 --> 00:10:52,026 >> A teraz, je tu ešte jedna ďalšia vec, ktorú chcem spomenúť 214 00:10:52,026 --> 00:10:54,650 o pole, ktoré môže byť trochu trochu zložitejšie prvýkrát, čo 215 00:10:54,650 --> 00:10:55,990 pracovať s nimi. 216 00:10:55,990 --> 00:10:59,860 Diskutovali sme vo videu o premenné rozsah, 217 00:10:59,860 --> 00:11:04,940 že väčšina premenné v jazyku C, keď zavoláte je vo funkciách, sú odovzdané hodnotou. 218 00:11:04,940 --> 00:11:08,620 Spomínate si, čo to znamená odovzdať niečo podľa hodnoty? 219 00:11:08,620 --> 00:11:12,570 To znamená, že robíme kópiu premenná, ktorá je práve prešiel dovnútra. 220 00:11:12,570 --> 00:11:16,290 Funkcie volaným, funkcie ktorá je obdrží premennú, 221 00:11:16,290 --> 00:11:17,730 nedostane premennú sám. 222 00:11:17,730 --> 00:11:20,850 To dostane jeho vlastné miestne kópiu, ktorá s ním pracovať. 223 00:11:20,850 --> 00:11:24,070 >> Pole, samozrejme, že nie nenasledujú toto pravidlo. 224 00:11:24,070 --> 00:11:27,600 Skôr, čo nazývame je okolo odkazom. 225 00:11:27,600 --> 00:11:31,360 Volaný vlastne sa dostávajú poľa. 226 00:11:31,360 --> 00:11:34,207 To nedostane vlastné lokálne kópie. 227 00:11:34,207 --> 00:11:36,040 A ak si myslíte o to, to má zmysel. 228 00:11:36,040 --> 00:11:39,750 Ak pole sú naozaj veľké, to zaberie toľko času a úsilia, 229 00:11:39,750 --> 00:11:44,470 vytvoriť kópiu poľa 100 alebo 1000 alebo 10000 prvky, 230 00:11:44,470 --> 00:11:48,290 že to nestojí to za fungujú dostať kópiu toho, 231 00:11:48,290 --> 00:11:51,037 urobiť nejakú prácu s ním, a potom len byť hotové s kópiou; 232 00:11:51,037 --> 00:11:53,120 to nemusí mať to potĺka okolo už nie. 233 00:11:53,120 --> 00:11:54,710 >> Pretože pole sú niektoré objemné a ťažkopádne, 234 00:11:54,710 --> 00:11:56,001 my len odovzdať je odkazom. 235 00:11:56,001 --> 00:12:01,210 Len Veríme, že funkcia k, neporušujú nič. 236 00:12:01,210 --> 00:12:03,010 Tak to skutočne dostať poľa. 237 00:12:03,010 --> 00:12:05,290 To už ani nemôže svoju vlastnú lokálnu kópiu. 238 00:12:05,290 --> 00:12:07,170 >> Takže čo to znamená, potom, keď volaný 239 00:12:07,170 --> 00:12:08,970 manipuluje prvky poľa? 240 00:12:08,970 --> 00:12:10,780 Čo sa deje? 241 00:12:10,780 --> 00:12:13,210 Pre teraz, budeme lesk nad tým, prečo práve toto 242 00:12:13,210 --> 00:12:15,320 deje, prečo polia sú odovzdané podľa odkazu 243 00:12:15,320 --> 00:12:17,810 a všetko ostatné je odovzdaný podľa hodnoty. 244 00:12:17,810 --> 00:12:20,470 Ale sľubujem vám, budeme vrátiť a dať vám odpoveď 245 00:12:20,470 --> 00:12:23,750 k tomu v neskoršom videu. 246 00:12:23,750 --> 00:12:28,110 >> Tu je ešte jeden cvičenie pre vás Než sme sa zabaliť veci na poliach. 247 00:12:28,110 --> 00:12:31,400 Zväzok kódu tu, to je nijako zvlášť dobrý štýl, 248 00:12:31,400 --> 00:12:33,400 Len Budem robiť, že námietku. 249 00:12:33,400 --> 00:12:36,660 Tam je žiadne komentáre tu, čo je dosť zlá forma. 250 00:12:36,660 --> 00:12:39,750 Ale je to len preto, že som chcel byť schopný, aby sa zmestili všetko, čo na obrazovke. 251 00:12:39,750 --> 00:12:44,360 >> Na vrchole, môžete vidieť, že mám dve vyhlásenia funkcie pre nastavenú pole 252 00:12:44,360 --> 00:12:45,820 a nastavenie int. 253 00:12:45,820 --> 00:12:49,680 Set poľa zrejme berie poľa zo štyroch celých čísel ako vstup. 254 00:12:49,680 --> 00:12:52,767 A set int vraj berie celé číslo ako jeho vstup. 255 00:12:52,767 --> 00:12:54,350 Ale obaja 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 riadkov kódu. 258 00:12:59,480 --> 00:13:02,730 Prehlasujeme premennú integer volal a priraďte jej hodnotu 10. 259 00:13:02,730 --> 00:13:07,080 Prehlasujeme pole štyroch celých čísel volal B a priradiť prvky 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, a 3, v uvedenom poradí. 261 00:13:08,730 --> 00:13:12,190 Potom máme hovor nastaviť int a volania pre nastavenie poľa. 262 00:13:12,190 --> 00:13:15,910 Definície nastaveného polia a sady int sú dole, na dne. 263 00:13:15,910 --> 00:13:17,640 >> A tak, opäť by som vám položiť otázku. 264 00:13:17,640 --> 00:13:20,770 Čo sa bude vytlačená tu na konci Main? 265 00:13:20,770 --> 00:13:23,020 Je tu col výtlačok. Som vytlačiť dve celé čísla. 266 00:13:23,020 --> 00:13:28,010 Ja som vytlačenie obsahu a obsah B hranatých zátvorkách 0. 267 00:13:28,010 --> 00:13:29,880 Pozastaviť video tu a chvíľu trvať. 268 00:13:29,880 --> 00:13:35,482 Môžete zistiť, čo to Funkcia vytlačí na konci? 269 00:13:35,482 --> 00:13:38,190 Dúfajme, ak ste si spomenúť na Rozdiel medzi okoloidúci hodnotou 270 00:13:38,190 --> 00:13:41,680 a odovzdávanie odkazom, tento Problém bol v tom nie je príliš zložité pre vás. 271 00:13:41,680 --> 00:13:44,130 A odpoveď by ste našli to je. 272 00:13:44,130 --> 00:13:47,660 Ak si nie ste úplne istý, ako sa prečo je to tak, vziať druhý, 273 00:13:47,660 --> 00:13:50,620 vrátiť, skontrolovať, čo som bol len diskutovať o odovzdávaní polí 274 00:13:50,620 --> 00:13:53,450 formou odkazu, v porovnaní s priechodom iné premenné podľa hodnoty, 275 00:13:53,450 --> 00:13:56,680 a dúfajme, bude to robiť trochu väčší zmysel. 276 00:13:56,680 --> 00:13:59,760 >> Som Doug Lloyd, a to je CS50. 277 00:13:59,760 --> 00:14:01,467