1 00:00:00,000 --> 00:00:03,388 >> [Glazbom] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 Doug LLOYD: U redu. 4 00:00:06,020 --> 00:00:07,680 Rad s jednom varijable je prilično zabavno. 5 00:00:07,680 --> 00:00:09,500 No što ako želimo raditi s puno varijabli, 6 00:00:09,500 --> 00:00:12,760 ali ne želimo imati hrpu različita imena lete oko našeg koda? 7 00:00:12,760 --> 00:00:15,980 U ovom slučaju, su nizovi će doći u jako zgodan. 8 00:00:15,980 --> 00:00:19,510 Nizovi su jako bitni podaci Struktura za bilo kojeg programskog jezika 9 00:00:19,510 --> 00:00:20,260 kako ćete koristiti. 10 00:00:20,260 --> 00:00:24,450 I oni su jako, jako korisno, Posebno, kako ćemo vidjeti, u CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Mi koristimo polja držati vrijednosti istog tipa podataka 12 00:00:27,870 --> 00:00:29,830 na susjedne memorijskim mjestima. 13 00:00:29,830 --> 00:00:32,430 To je za reći, to je način na koji možemo skupina 14 00:00:32,430 --> 00:00:35,430 hrpa brojeva zajedno memorije ili hrpa znakova 15 00:00:35,430 --> 00:00:38,270 ili lebdi u memoriji stvarno zatvoriti zajedno i rade 16 00:00:38,270 --> 00:00:41,930 ih bez da svaki jedan vlastiti jedinstveni naziv, koji se mogu 17 00:00:41,930 --> 00:00:44,500 dobiti nezgrapan nakon malo vremena. 18 00:00:44,500 --> 00:00:48,130 >> Sada, jedan od načina da analogize polja je razmišljati o vašem lokalnom poštom 19 00:00:48,130 --> 00:00:49,000 Ured za sekundu. 20 00:00:49,000 --> 00:00:51,820 Dakle, korak dalje od programiranja i samo zatvoriti oči 21 00:00:51,820 --> 00:00:54,120 i zamišljati u vašem umu poštanskom uredu. 22 00:00:54,120 --> 00:00:57,160 Obično, u većini poštom uredi, postoji velika banka 23 00:00:57,160 --> 00:01:00,490 pošta kutija na zidu. 24 00:01:00,490 --> 00:01:03,510 >> Niz je div blok memorijskog, 25 00:01:03,510 --> 00:01:06,120 isti način na koji mail banka u vašem pošti 26 00:01:06,120 --> 00:01:11,230 je veliki prostor Zid pošti. 27 00:01:11,230 --> 00:01:15,750 Nizovi su podijeljen u male, jednako veličine blokova prostora, 28 00:01:15,750 --> 00:01:19,930 od kojih je svaki naziva element u isti način na koji zid post 29 00:01:19,930 --> 00:01:23,840 Ured je podijeljen u male, jednako veličine blokova prostora, 30 00:01:23,840 --> 00:01:27,560 što mi nazivamo poštanski pretinac. 31 00:01:27,560 --> 00:01:31,650 Svaki element polja može pohraniti određenu količinu podataka, 32 00:01:31,650 --> 00:01:37,540 baš kao što je svaki pošta okvir je u mogućnosti držati određenu količinu pošte. 33 00:01:37,540 --> 00:01:41,540 >> Ono što se može pohraniti u svakom elementu Niz je varijable iste podatke 34 00:01:41,540 --> 00:01:45,300 tipa, kao što su int ili char, samo kao što je u vašoj poštanski ured broj, 35 00:01:45,300 --> 00:01:47,300 možete samo stati stvari sličnog tipa, 36 00:01:47,300 --> 00:01:50,430 kao što su slova ili male pakete. 37 00:01:50,430 --> 00:01:55,050 Na kraju, možemo pristupiti svaki element Niz izravno indeksa broj, 38 00:01:55,050 --> 00:01:59,770 baš kao što možemo pristupiti naš pošta okvir znajući svoj broj spremnika. 39 00:01:59,770 --> 00:02:02,750 Nadam se, da je analogija pomaže vam dobiti svoju glavu 40 00:02:02,750 --> 00:02:05,540 oko ideje polja strane analogizing nešto drugo 41 00:02:05,540 --> 00:02:08,400 da ste vjerojatno već upoznati s. 42 00:02:08,400 --> 00:02:13,182 >> U C, a elementi su niz indeksiraju počevši od 0, a ne od 1.. 43 00:02:13,182 --> 00:02:14,390 A to je jako važno. 44 00:02:14,390 --> 00:02:18,530 A u stvari, to je razlog zašto smo, u CS 50, I zašto računalni znanstvenici često 45 00:02:18,530 --> 00:02:22,150 će brojati od 0, je jer od C u nizu 46 00:02:22,150 --> 00:02:24,660 indeksiranje, što uvijek počinje na 0. 47 00:02:24,660 --> 00:02:28,730 Dakle, ako niz sastoji od n elemenata, Prvi element tog polja 48 00:02:28,730 --> 00:02:32,960 nalazi se na indeks 0, i posljednji element niza 49 00:02:32,960 --> 00:02:36,610 Nalazi se u indeks n minus 1. 50 00:02:36,610 --> 00:02:43,160 Opet, ako postoji n elemenata u našem polje, posljednji indeks n minus 1. 51 00:02:43,160 --> 00:02:46,820 >> Dakle, ako je naš niz ima 50 elemenata, Prvi element se nalazi na indeks 0, 52 00:02:46,820 --> 00:02:51,060 a posljednji element Nalazi se na indeks 49. 53 00:02:51,060 --> 00:02:53,940 Nažalost, ili na sreću, ovisno o perspektivi, 54 00:02:53,940 --> 00:02:56,170 C je vrlo blag ovdje. 55 00:02:56,170 --> 00:02:59,480 To neće spriječiti ide izvan granica svoje polje. 56 00:02:59,480 --> 00:03:03,080 Ti bi mogao pristupiti minus 3 element vašeg polja 57 00:03:03,080 --> 00:03:07,400 ili 59. element vaše polje, ako je vaš polje ima samo 50 elemenata. 58 00:03:07,400 --> 00:03:11,060 To neće zaustaviti svoj program iz sastavljanje, ali u vrijeme izvođenja, 59 00:03:11,060 --> 00:03:14,350 možete naići zastrašujuća segmentacije kvara 60 00:03:14,350 --> 00:03:17,460 ako počnete pristupiti memorije to je izvan granica onoga što 61 00:03:17,460 --> 00:03:19,260 si tražio svoj program za dati. 62 00:03:19,260 --> 00:03:21,250 Dakle, ne budite oprezni. 63 00:03:21,250 --> 00:03:23,120 >> Što niz Deklaracija izgledati? 64 00:03:23,120 --> 00:03:26,940 Kako ćemo kodirati niz u postojanju kao što smo kodirati bilo koji drugi varijablu? 65 00:03:26,940 --> 00:03:31,250 Postoje tri dijela na niz declaration-- tip, ime, 66 00:03:31,250 --> 00:03:31,880 i veličinu. 67 00:03:31,880 --> 00:03:34,088 To je vrlo sličan varijabla izjava, koje 68 00:03:34,088 --> 00:03:36,970 je samo jedna vrsta i naziv, element veličina se 69 00:03:36,970 --> 00:03:39,860 Poseban slučaj za niz, jer smo uzimajući hrpa njih 70 00:03:39,860 --> 00:03:41,830 u isto vrijeme. 71 00:03:41,830 --> 00:03:45,560 >> Dakle, tip je kakav si varijable Želite svaki element niza se. 72 00:03:45,560 --> 00:03:47,150 Nemojte ga žele niz brojeva? 73 00:03:47,150 --> 00:03:49,010 Zatim, tvoj tip podaci trebaju biti int. 74 00:03:49,010 --> 00:03:51,760 Želite li to biti Niz parovima ili kola? 75 00:03:51,760 --> 00:03:54,545 Vrsta podataka treba biti dvostruko ili plutaju. 76 00:03:54,545 --> 00:03:56,420 Ime je ono što želite nazvati svoju lepezu. 77 00:03:56,420 --> 00:04:00,970 Što želite nazvati taj gigant banka brojeva ili plovaka ili znakova 78 00:04:00,970 --> 00:04:03,250 ili u parovima, ili što god imate? 79 00:04:03,250 --> 00:04:04,700 Što želite to nazvati? 80 00:04:04,700 --> 00:04:06,110 Prilično samo sebi. 81 00:04:06,110 --> 00:04:08,610 >> Konačno, veličina, koja ide unutar uglatih zagrada, 82 00:04:08,610 --> 00:04:12,180 je koliko elemenata što bi kao što je vaša polje sadrži. 83 00:04:12,180 --> 00:04:13,530 Koliko integers želiš? 84 00:04:13,530 --> 00:04:15,570 Koliko pluta želiš? 85 00:04:15,570 --> 00:04:19,070 >> Tako, na primjer, int ocjena studenata 40. 86 00:04:19,070 --> 00:04:26,020 To izjavljuje niz pod nazivom Studentski razreda, koji se sastoji od 40 brojeva. 87 00:04:26,020 --> 00:04:28,180 Prilično samo sebi, nadam se. 88 00:04:28,180 --> 00:04:29,330 Evo još jedan primjer. 89 00:04:29,330 --> 00:04:31,560 Dupli Cijene izbornika 8. 90 00:04:31,560 --> 00:04:34,610 To stvara niz pod nazivom Cijene izbornika, koji se sastoji 91 00:04:34,610 --> 00:04:38,300 prostora u memoriji za osam parova. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Ako mislite da je svaki element od niza tipa podataka tipa, 94 00:04:45,750 --> 00:04:49,860 Tako na primjer, jedan element niz tipa int je ti isti način 95 00:04:49,860 --> 00:04:52,770 će misliti bilo koji drugi varijabla tipa int, 96 00:04:52,770 --> 00:04:56,440 sve poznate operacije koje mi prethodno objašnjeno u Operativnom 97 00:04:56,440 --> 00:04:58,270 Video će smisla. 98 00:04:58,270 --> 00:05:01,620 Dakle ovdje smo mogli proglasiti niz od logičke izraze zove Truthtable, 99 00:05:01,620 --> 00:05:05,590 koji se sastoji od prostora za 10 logičke izraze. 100 00:05:05,590 --> 00:05:09,650 >> A onda, baš kao i mi samo mogli dodijeliti vrijednost na bilo koji drugi varijable tipa 101 00:05:09,650 --> 00:05:13,470 Boolean, mogli bismo reći nešto kao Truthtable uglata zagrada 102 00:05:13,470 --> 00:05:18,040 2, što je, kako smo naznačili, koji element tablice istina? 103 00:05:18,040 --> 00:05:20,350 Treći element Istina stol, jer zapamtite, 104 00:05:20,350 --> 00:05:21,800 Brojimo od 0. 105 00:05:21,800 --> 00:05:25,690 Dakle, to je kako smo označavaju Treći element tablice istine. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 jednako lažna, baš kao što smo mogli declare-- 107 00:05:28,680 --> 00:05:33,560 ili bismo mogli dodijeliti, a svaka Booleova tip varijabla biti lažna. 108 00:05:33,560 --> 00:05:35,050 >> Također možete ga koristiti u uvjetima. 109 00:05:35,050 --> 00:05:39,000 ako (truthtable 7 == istina), što će reći, 110 00:05:39,000 --> 00:05:42,370 ako osmog elementa od Truthtable je istina, 111 00:05:42,370 --> 00:05:46,760 Možda želimo ispisati poruku korisniku, printf ("istina! n") ;. 112 00:05:46,760 --> 00:05:50,290 To uzrokuje nam reći Truthtable 10 jednako istinito, zar ne? 113 00:05:50,290 --> 00:05:53,590 Pa, ja mogu, ali to je prilično opasno, jer ne zaboravite, 114 00:05:53,590 --> 00:05:56,260 imamo niz od 10 logičke izraze. 115 00:05:56,260 --> 00:06:02,340 Dakle, najveći indeks da prevodilac dao nam je 9. 116 00:06:02,340 --> 00:06:06,010 >> Ovaj program će se sastaviti, ali ako je nešto drugo u memoriji 117 00:06:06,010 --> 00:06:09,110 postoji kada bismo Očekujemo Truthtable 10 ići, 118 00:06:09,110 --> 00:06:13,980 možemo trpjeti grešku segmentiranja. Mi može dobiti daleko s njom, ali u cjelini, 119 00:06:13,980 --> 00:06:14,710 prilično opasno. 120 00:06:14,710 --> 00:06:19,759 Dakle, ono što ja radim ovdje je pravna C, ali ne nužno najbolji potez. 121 00:06:19,759 --> 00:06:22,300 Sada, kada se proglasiti i inicijalizirati niz istovremeno, 122 00:06:22,300 --> 00:06:23,960 tu je zapravo prilično Posebna sintaksa koja vas 123 00:06:23,960 --> 00:06:26,250 mogu koristiti za napuniti niz s početnim vrijednostima. 124 00:06:26,250 --> 00:06:30,130 Ona može doći nespretno proglasiti niz veličine 100, 125 00:06:30,130 --> 00:06:33,430 a onda moram reći, elementom 0 jednako to; Element 1 jednak ovo; 126 00:06:33,430 --> 00:06:34,850 Element 2 jednak. 127 00:06:34,850 --> 00:06:36,370 Što je točka, zar ne? 128 00:06:36,370 --> 00:06:39,470 >> Ako je mala niz, što mogao učiniti nešto poput ovoga. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 jednaka otvorenom kovrčava braće, a potom zarez 130 00:06:44,360 --> 00:06:48,060 odvojiti popis elemenata koje želite staviti u nizu. 131 00:06:48,060 --> 00:06:50,520 Zatim zatvorite kovrčavu Brace zarezom. 132 00:06:50,520 --> 00:06:53,910 To stvara niz Veličina tri naziva Truthtable, 133 00:06:53,910 --> 00:06:56,090 s elementima lažno, istinito i točno. 134 00:06:56,090 --> 00:06:59,270 A u stvari, oprimjerenja sintaksa Imam ovdje 135 00:06:59,270 --> 00:07:03,350 točno isto kao i radiš pojedinačni element sintakse u nastavku. 136 00:07:03,350 --> 00:07:09,380 Ova dva načina kodiranja bi proizvesti isti niz. 137 00:07:09,380 --> 00:07:11,740 >> Isto tako, mogli bismo ponoviti nad svim elementima 138 00:07:11,740 --> 00:07:15,400 od niza pomoću petlje, koja je, u Činjenica je vrlo preporučljivo 139 00:07:15,400 --> 00:07:16,790 at-home vježbe. 140 00:07:16,790 --> 00:07:20,720 Kako ste stvorili niz 100 brojeva, u kojima 141 00:07:20,720 --> 00:07:23,477 svaki element niza je njegov indeks? 142 00:07:23,477 --> 00:07:26,560 Tako, na primjer, imamo niz od 100 cijeli brojevi, a na prvom elementu, 143 00:07:26,560 --> 00:07:27,790 želimo staviti 0. 144 00:07:27,790 --> 00:07:29,810 U drugom elementu, želimo staviti 1. 145 00:07:29,810 --> 00:07:33,319 U trećem elementu, želimo staviti 2; i tako dalje i tako dalje. 146 00:07:33,319 --> 00:07:35,360 To je stvarno dobar at-home vježbe za to. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Evo, to ne izgleda kao što se previše promijenio. 149 00:07:40,220 --> 00:07:44,170 Ali primijetite da između uglatim zagradama, ovaj put, 150 00:07:44,170 --> 00:07:45,830 Ja sam zapravo izostaviti broj. 151 00:07:45,830 --> 00:07:48,000 Ako koristite ovaj vrlo Posebno utjelovljenje 152 00:07:48,000 --> 00:07:50,380 Sintaksa za stvaranje niz, što zapravo ne 153 00:07:50,380 --> 00:07:53,491 potrebno je ukazati na veličinu od niza unaprijed. 154 00:07:53,491 --> 00:07:55,740 Prevodilac je dovoljno pametan znati da ti zapravo 155 00:07:55,740 --> 00:07:58,980 Želite niz veličina 3, jer ste stavili tri elementa 156 00:07:58,980 --> 00:08:00,640 na desnoj strani znaka jednakosti. 157 00:08:00,640 --> 00:08:04,140 Ako je stavio četiri, to bi vam dati istinu tablicu veličine četiri; 158 00:08:04,140 --> 00:08:06,270 i tako dalje i tako dalje. 159 00:08:06,270 --> 00:08:09,380 >> Nizovi nisu ograničene na jedan dimenzija, što je prilično cool. 160 00:08:09,380 --> 00:08:12,000 Vi zapravo možete imati što više bočni Tehničke kao što želite. 161 00:08:12,000 --> 00:08:16,470 Tako na primjer, ako želite stvoriti odbor za igru ​​Battleship, koji je, 162 00:08:16,470 --> 00:08:20,910 Ako ste ikad igrali, je igra koja je igrao s klinovima na 10 do 10 rešetki, 163 00:08:20,910 --> 00:08:22,450 možete stvoriti niz ovako. 164 00:08:22,450 --> 00:08:26,030 Moglo bi se reći bool bojni uglata zagrada 10 165 00:08:26,030 --> 00:08:29,590 zatvorena uglata zagrada kvadrat Nosač 10 zatvorena uglata zagrada. 166 00:08:29,590 --> 00:08:32,710 >> A onda, možete odabrati tumače u vašem umu kao 10 167 00:08:32,710 --> 00:08:35,576 10 rešetki stanica. 168 00:08:35,576 --> 00:08:37,409 Sada je, zapravo, u sjećanju, to stvarno ne samo 169 00:08:37,409 --> 00:08:42,440 ostati 100 elementa, Jedan trodimenzionalni niz. 170 00:08:42,440 --> 00:08:46,070 A to, u stvari, vrijedi i za vas, ako ima tri dimenzije ili četiri ili pet. 171 00:08:46,070 --> 00:08:49,420 To zapravo samo znači pomnožite sve indices-- 172 00:08:49,420 --> 00:08:51,130 ili sve veličine specifiers-- zajedno, 173 00:08:51,130 --> 00:08:53,480 a vi samo dobiti jednodimenzionalna niz te veličine. 174 00:08:53,480 --> 00:08:57,090 >> No, u smislu organizacije i vizualizacija i ljudska percepcija, 175 00:08:57,090 --> 00:08:59,240 to može biti puno lakše za rad s mrežom 176 00:08:59,240 --> 00:09:02,980 ako radite na igri kao Tic-Tac-nožni prst ili Battleship, 177 00:09:02,980 --> 00:09:05,179 ili nešto slično. 178 00:09:05,179 --> 00:09:06,970 To je velika apstrakcija, umjesto 179 00:09:06,970 --> 00:09:09,340 razmišljati o Tic-Tac-nožni prst odbora kao liniju devet 180 00:09:09,340 --> 00:09:13,810 kvadrata ili bojnog broda odbora kao linija od 100 kvadrata. 181 00:09:13,810 --> 00:09:16,010 10 10 rešetki ili tri s tri mreže je vjerojatno 182 00:09:16,010 --> 00:09:17,225 puno više lako uočiti. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Sada, nešto stvarno važno o polja. 185 00:09:22,280 --> 00:09:25,950 Možemo liječiti svaki pojedinac element polja kao varijablu. 186 00:09:25,950 --> 00:09:27,700 Vidjeli smo da je ranije kad smo bili dodjeljivanje 187 00:09:27,700 --> 00:09:32,240 vrijednost True na određene logičke izraze ili ih testira na uvjetne. 188 00:09:32,240 --> 00:09:35,960 No, ne možemo liječiti cijelu Nizovi se kao varijable. 189 00:09:35,960 --> 00:09:41,760 Mi ne možemo, na primjer, dodijeliti jednu lepezu na drugi niz pomoću zadatka 190 00:09:41,760 --> 00:09:42,930 operater. 191 00:09:42,930 --> 00:09:44,640 To nije pravna C 192 00:09:44,640 --> 00:09:47,920 >> Ako želimo, jer ono example-- mi bi trebali raditi u toj primjer 193 00:09:47,920 --> 00:09:50,200 da bi se kopirali jedan niz u drugi. 194 00:09:50,200 --> 00:09:53,810 Ako želimo učiniti, mi zapravo morate koristiti petlju za kopiranje više 195 00:09:53,810 --> 00:09:56,550 svaki pojedinačni element jedan po jedan. 196 00:09:56,550 --> 00:09:58,700 Znam da je malo vremena. 197 00:09:58,700 --> 00:10:04,022 >> Tako na primjer, ako smo imali ove par linija koda, zar ovo radi? 198 00:10:04,022 --> 00:10:05,230 Pa, ne, to ne bi, zar ne? 199 00:10:05,230 --> 00:10:07,860 Jer mi pokušavamo dodijeliti hranu bara. 200 00:10:07,860 --> 00:10:09,860 To ne ide na posao, jer je niz, 201 00:10:09,860 --> 00:10:13,130 a mi samo opisao da to nije pravni C 202 00:10:13,130 --> 00:10:15,580 >> Umjesto toga, ako želimo kopirati sadržaj hrane 203 00:10:15,580 --> 00:10:18,070 u baru, što je ono mi pokušavamo učiniti ovdje, 204 00:10:18,070 --> 00:10:19,970 što će trebati sintaksu ovako. 205 00:10:19,970 --> 00:10:24,170 Imamo za petlju koja ide od J jednak 0 do 5, 206 00:10:24,170 --> 00:10:28,390 a mi povećajte J na svakom iteraciju petlje i dodijeliti elemente kao što je to. 207 00:10:28,390 --> 00:10:33,360 To bi dovelo do bara i kao jedan, dva, tri, četiri, pet, 208 00:10:33,360 --> 00:10:36,730 ali moramo ga to vrlo sporo elementa po elementu način, 209 00:10:36,730 --> 00:10:40,009 umjesto samo po kopiranje cijeli niz. 210 00:10:40,009 --> 00:10:42,050 U drugoj programiranje jezika, više moderni oni, 211 00:10:42,050 --> 00:10:45,610 možete, u stvari, ne samo tako jednostavno jednako sintaksu. 212 00:10:45,610 --> 00:10:49,620 Ali C, na žalost, mi smo Ne smiju to učiniti. 213 00:10:49,620 --> 00:10:52,026 >> Sada, postoji još jedan Ono što želim napomenuti 214 00:10:52,026 --> 00:10:54,650 O polja koja može biti malo malo zeznuto kada ste prvi put 215 00:10:54,650 --> 00:10:55,990 raditi s njima. 216 00:10:55,990 --> 00:10:59,860 Razgovarali smo u video o promjenjivim opsegom, 217 00:10:59,860 --> 00:11:04,940 da većina varijabli u C, kada poziv ih u funkcijama, donosi vrijednost. 218 00:11:04,940 --> 00:11:08,620 Sjećate li se što to znači proći nešto po vrijednosti? 219 00:11:08,620 --> 00:11:12,570 To znači da smo izradu kopije od varijabla koja je se prošlo u. 220 00:11:12,570 --> 00:11:16,290 Pozivani funkcija, funkcija koji je primio varijablu, 221 00:11:16,290 --> 00:11:17,730 ne dobiti samu varijablu. 222 00:11:17,730 --> 00:11:20,850 Ona dobiva vlastitu lokalnu Kopija to raditi. 223 00:11:20,850 --> 00:11:24,070 >> Nizovi, naravno, ne ne slijede ovo pravilo. 224 00:11:24,070 --> 00:11:27,600 Umjesto toga, ono što mi nazivamo prolazi kao referenca. 225 00:11:27,600 --> 00:11:31,360 Pozivani zapravo ne dobivaju niz. 226 00:11:31,360 --> 00:11:34,207 Ona ne prima njegova vlastiti lokalnu kopiju od njega. 227 00:11:34,207 --> 00:11:36,040 A ako mislite o tome da, to ima smisla. 228 00:11:36,040 --> 00:11:39,750 Ako polja su stvarno velike, to potrebno toliko vremena i truda 229 00:11:39,750 --> 00:11:44,470 napraviti kopiju niz 100 ili 1000 ili 10.000 elementi, 230 00:11:44,470 --> 00:11:48,290 da to nije vrijedno toga za funkcionirati dobiti kopiju od njega, 231 00:11:48,290 --> 00:11:51,037 napraviti neki posao s njim, a zatim samo biti učinjeno s kopijom; 232 00:11:51,037 --> 00:11:53,120 ne moraju imati to vješanje oko više. 233 00:11:53,120 --> 00:11:54,710 >> Budući da su neki nizovi glomazan i težak, 234 00:11:54,710 --> 00:11:56,001 samo smo ih proći kao referenca. 235 00:11:56,001 --> 00:12:01,210 Upravo smo povjerenje tu funkciju da, ne razbiti ništa. 236 00:12:01,210 --> 00:12:03,010 Dakle, to zapravo ne dobiti niz. 237 00:12:03,010 --> 00:12:05,290 To ne bi svoju lokalnu kopiju. 238 00:12:05,290 --> 00:12:07,170 >> Dakle, što to znači, onda, kad pozivani 239 00:12:07,170 --> 00:12:08,970 manipulira elemente niza? 240 00:12:08,970 --> 00:12:10,780 Što se događa? 241 00:12:10,780 --> 00:12:13,210 Za sada ćemo prijeći više zašto baš ta 242 00:12:13,210 --> 00:12:15,320 se događa, zašto polja donosi reference 243 00:12:15,320 --> 00:12:17,810 i sve ostalo što je prošao po vrijednosti. 244 00:12:17,810 --> 00:12:20,470 Ali obećajem ti, mi ćemo vratiti i dati vam odgovor 245 00:12:20,470 --> 00:12:23,750 za to u kasnijim videa. 246 00:12:23,750 --> 00:12:28,110 >> Evo još jedna vježba za vas Prije nego što smo završiti stvari na polja. 247 00:12:28,110 --> 00:12:31,400 Hrpa kod ovdje, to je nije osobito dobar stil, 248 00:12:31,400 --> 00:12:33,400 Samo ću učiniti da upozorenje. 249 00:12:33,400 --> 00:12:36,660 Nema komentara ovdje, što je prilično loša forma. 250 00:12:36,660 --> 00:12:39,750 Ali to je samo zato što sam htjela biti mogućnosti da stane sve na zaslonu. 251 00:12:39,750 --> 00:12:44,360 >> Na vrhu, možete vidjeti da imam dvije funkcije deklaracije za set niz 252 00:12:44,360 --> 00:12:45,820 i postaviti int. 253 00:12:45,820 --> 00:12:49,680 Postavi niz očito traje niz četiri brojeva kao inputa. 254 00:12:49,680 --> 00:12:52,767 I set int navodno traje jedan cijeli broj kao svoj ulaz. 255 00:12:52,767 --> 00:12:54,350 Ali obojica nemaju izlaz. 256 00:12:54,350 --> 00:12:57,689 Izlaz, povrat tipa, svaki je nevažeće. 257 00:12:57,689 --> 00:12:59,480 U glavnom, imamo par linija koda. 258 00:12:59,480 --> 00:13:02,730 Mi proglasiti cjelobrojna varijabla naziva i dodijeliti mu vrijednost 10. 259 00:13:02,730 --> 00:13:07,080 Izjavljujemo niz od četiri brojeva naziva B i dodijeliti elemente 0, 1, 260 00:13:07,080 --> 00:13:08,730 2 i 3, redom. 261 00:13:08,730 --> 00:13:12,190 Zatim, imamo poziv za postavljanje int i poziv na postavljanje niza. 262 00:13:12,190 --> 00:13:15,910 Definicije set polja i set int su dolje, na dnu. 263 00:13:15,910 --> 00:13:17,640 >> I tako, opet, ti postaviti pitanje. 264 00:13:17,640 --> 00:13:20,770 Što dobiva ispisati Ovdje na kraju Main? 265 00:13:20,770 --> 00:13:23,020 Postoji ispis col. Ja sam ispis dva prirodna broja. 266 00:13:23,020 --> 00:13:28,010 Ja sam ispis sadržaj i Sadržaj B uglata zagrada 0. 267 00:13:28,010 --> 00:13:29,880 Pauza video ovdje i uzeti minutu. 268 00:13:29,880 --> 00:13:35,482 Možete li shvatiti što je to funkcija će ispisati na kraju? 269 00:13:35,482 --> 00:13:38,190 Nadam se, ako podsjetiti Razlika između prolazu vrijednost 270 00:13:38,190 --> 00:13:41,680 i prolazu reference, ova Problem nije bio previše lukav za vas. 271 00:13:41,680 --> 00:13:44,130 A odgovor što bi Našao je to. 272 00:13:44,130 --> 00:13:47,660 Ako niste baš siguran da Zašto je to slučaj, uzeti drugi, 273 00:13:47,660 --> 00:13:50,620 vratiti, pregledati što sam bio samo raspravlja o prolazu polja 274 00:13:50,620 --> 00:13:53,450 referencom, u odnosu prolazi ostale varijable po vrijednosti, 275 00:13:53,450 --> 00:13:56,680 i nadamo se, da ćete napraviti malo više smisla. 276 00:13:56,680 --> 00:13:59,760 >> Ja sam Doug Lloyd, a to je CS50. 277 00:13:59,760 --> 00:14:01,467