1 00:00:00,000 --> 00:00:03,388 >> [Mūzikas atskaņošanai] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 Doug LLOYD: Nu labi. 4 00:00:06,020 --> 00:00:07,680 Darbs ar vienotu mainīgie ir diezgan jautri. 5 00:00:07,680 --> 00:00:09,500 Bet ko tad, ja mēs gribam strādāt ar daudz mainīgo lielumu, 6 00:00:09,500 --> 00:00:12,760 bet mēs nevēlamies būt ķekars dažādi nosaukumi peld ap mūsu kodu? 7 00:00:12,760 --> 00:00:15,980 Šajā gadījumā, masīvi ir gatavojas nākt ļoti parocīgs. 8 00:00:15,980 --> 00:00:19,510 Masīvi ir patiešām būtiski dati struktūra jebkurā programmēšanas valodā 9 00:00:19,510 --> 00:00:20,260 ka jūs izmantojat. 10 00:00:20,260 --> 00:00:24,450 Un viņi patiešām, patiešām noderīga, īpaši, jo mēs redzēsim, CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Mēs izmantojam bloki turēt vērtības paša datu tipa 12 00:00:27,870 --> 00:00:29,830 pie blakus atmiņas vietām. 13 00:00:29,830 --> 00:00:32,430 Proti, tas ir veids, kā mēs varam grupa 14 00:00:32,430 --> 00:00:35,430 ķekars veselus skaitļus kopā atmiņa vai ķekars rakstzīmju 15 00:00:35,430 --> 00:00:38,270 vai pludiņiem atmiņā patiešām cieši kopā un darbs 16 00:00:38,270 --> 00:00:41,930 ar viņiem bez dot katram viena pati unikāls nosaukums, kas var 17 00:00:41,930 --> 00:00:44,500 saņemt apgrūtinoša pēc kāda brīža. 18 00:00:44,500 --> 00:00:48,130 >> Tagad, viens veids, kā analogize bloki ir jādomā par savu vietējo pastu 19 00:00:48,130 --> 00:00:49,000 biroja uz otru. 20 00:00:49,000 --> 00:00:51,820 Tātad solis prom no programmēšanas un vienkārši aizvērt acis 21 00:00:51,820 --> 00:00:54,120 un vizualizēt savā prātā jūsu vietējā pasta nodaļa. 22 00:00:54,120 --> 00:00:57,160 Parasti, vairumā pastu biroji, tur ir liela banka 23 00:00:57,160 --> 00:01:00,490 pasta nodaļa kastes pie sienas. 24 00:01:00,490 --> 00:01:03,510 >> Masīvs ir milzu bloks blakusesošo atmiņu, 25 00:01:03,510 --> 00:01:06,120 tāpat, ka pasta banka savā pasta nodaļā 26 00:01:06,120 --> 00:01:11,230 ir liela telpa uz siena pastā. 27 00:01:11,230 --> 00:01:15,750 Masīvi ir sadalīts mazs, identiski izmēra bloki telpā, 28 00:01:15,750 --> 00:01:19,930 katrs no kuriem tiek saukta elements, jo tādā pašā veidā, ka sienas post 29 00:01:19,930 --> 00:01:23,840 birojs ir sadalīts mazs, identiski izmēra bloki telpā, 30 00:01:23,840 --> 00:01:27,560 ko mēs saucam PO BOX. 31 00:01:27,560 --> 00:01:31,650 Katrs no masīva elementa uzglabāt noteiktu datu apjomu, 32 00:01:31,650 --> 00:01:37,540 tāpat kā katrs pasta nodaļa kaste ir spējīgs turēt zināmu pastu. 33 00:01:37,540 --> 00:01:41,540 >> Ko var uzglabāt katra elementa masīvs ir mainīgie ar tādu pašu datu 34 00:01:41,540 --> 00:01:45,300 tips, piemēram, int vai char, tikai tāpat savā pasta kastē, 35 00:01:45,300 --> 00:01:47,300 jūs varat tikai fit lietas līdzīga veida, 36 00:01:47,300 --> 00:01:50,430 piemēram, burtiem vai mazos iepakojumos. 37 00:01:50,430 --> 00:01:55,050 Visbeidzot, mēs varam piekļūt katra elementa masīvs tieši indeksa numurs, 38 00:01:55,050 --> 00:01:59,770 tāpat kā mēs varam piekļūt mūsu pastā kaste zinot savu pastkastes numurs. 39 00:01:59,770 --> 00:02:02,750 Cerams, ka analoģija palīdz jums savu galvu 40 00:02:02,750 --> 00:02:05,540 ap ideju masīvu ar analogizing uz kaut ko citu 41 00:02:05,540 --> 00:02:08,400 ka jūs, iespējams, jau ir pazīstami ar. 42 00:02:08,400 --> 00:02:13,182 >> In C, elementi masīva ir indeksēta sākot no 0, ne no 1. 43 00:02:13,182 --> 00:02:14,390 Un tas ir ļoti svarīgi. 44 00:02:14,390 --> 00:02:18,530 Un patiesībā, tas ir iemesls, kāpēc mēs, CS 50, Un kāpēc datoru zinātnieki bieži 45 00:02:18,530 --> 00:02:22,150 pieskaitīs no 0, ir jo C ir masīva 46 00:02:22,150 --> 00:02:24,660 indeksācija, kas vienmēr sākas ar 0. 47 00:02:24,660 --> 00:02:28,730 Tātad, ja masīvs sastāv no n elementiem, Minētā masīva pirmais elements 48 00:02:28,730 --> 00:02:32,960 atrodas pie indeksu 0, un pēdējais elements masīva 49 00:02:32,960 --> 00:02:36,610 atrodas pie indeksa n mīnus 1. 50 00:02:36,610 --> 00:02:43,160 Atkal, ja tur ir n elementi mūsu masīvs, pēdējais rādītājs ir n mīnus 1. 51 00:02:43,160 --> 00:02:46,820 >> Tātad, ja mūsu masīvs ir 50 elementi, kas pirmais elements atrodas pie indeksu 0, 52 00:02:46,820 --> 00:02:51,060 un pēdējais elements atrodas pie indeksa 49. 53 00:02:51,060 --> 00:02:53,940 Diemžēl, vai par laimi, Atkarībā no jūsu viedokļa, 54 00:02:53,940 --> 00:02:56,170 C ir ļoti bargas šeit. 55 00:02:56,170 --> 00:02:59,480 Tas nebūs novērst jūs no iet ārpus robežām jūsu masīvs. 56 00:02:59,480 --> 00:03:03,080 Jūs varētu piekļūt mīnus 3 elements jūsu masīvs 57 00:03:03,080 --> 00:03:07,400 vai 59. elements jūsu masīvs, Ja jūsu masīvs ir tikai 50 elementi. 58 00:03:07,400 --> 00:03:11,060 Tas nebūs pārtraukt savu programmu no apkopojot, bet pie palaist laikā, 59 00:03:11,060 --> 00:03:14,350 jūs varētu sastopaties dreaded segmentāciju vaina 60 00:03:14,350 --> 00:03:17,460 ja jūs sākat, lai piekļūtu atmiņas kas ir ārpus robežas, kuras 61 00:03:17,460 --> 00:03:19,260 jūs lūdza savu programmu, lai dotu jums. 62 00:03:19,260 --> 00:03:21,250 Tāpēc jābūt uzmanīgiem. 63 00:03:21,250 --> 00:03:23,120 >> Kāda masīvs deklarācija izskatās? 64 00:03:23,120 --> 00:03:26,940 Kā mēs kods masīvs spēkā esamību tāpat mēs kodu jebkuru citu mainīgo? 65 00:03:26,940 --> 00:03:31,250 Ir trīs daļas, masīva declaration-- veidu, nosaukumu, 66 00:03:31,250 --> 00:03:31,880 un izmērs. 67 00:03:31,880 --> 00:03:34,088 Tas ir ļoti līdzīgs mainīgs deklarācija, kas 68 00:03:34,088 --> 00:03:36,970 ir tikai veids un nosaukums, lielums elements ir 69 00:03:36,970 --> 00:03:39,860 īpašais gadījums masīva, jo mēs kļūst ķekars no tiem 70 00:03:39,860 --> 00:03:41,830 tajā pašā laikā. 71 00:03:41,830 --> 00:03:45,560 >> Tātad veids ir kāda veida mainīgo jums gribu katrs masīva elements būt. 72 00:03:45,560 --> 00:03:47,150 Vai vēlaties to masīvs integers? 73 00:03:47,150 --> 00:03:49,010 Tad jūsu datu tips ir int. 74 00:03:49,010 --> 00:03:51,760 Vai jūs vēlaties, lai būt masīvs dubultspēlē vai pludiņiem? 75 00:03:51,760 --> 00:03:54,545 Datu veids būtu dubultā vai peldēt. 76 00:03:54,545 --> 00:03:56,420 Nosaukums ir tas, ko tu vēlaties, lai izsauktu masīvs. 77 00:03:56,420 --> 00:04:00,970 Ko jūs vēlaties nosaukt šo gigants banka veseli skaitļi vai pludiņiem vai chars 78 00:04:00,970 --> 00:04:03,250 vai dubultspēlē, vai kāds tu esi? 79 00:04:03,250 --> 00:04:04,700 Ko jūs vēlaties, lai izsauktu to? 80 00:04:04,700 --> 00:04:06,110 Diezgan pašsaprotami. 81 00:04:06,110 --> 00:04:08,610 >> Visbeidzot, lielums, kas iet iekšpusē kvadrātiekavās, 82 00:04:08,610 --> 00:04:12,180 ir cik elementi turat piemēram, jūsu masīvs, lai apturētu. 83 00:04:12,180 --> 00:04:13,530 Cik veseli skaitļi jūs vēlaties? 84 00:04:13,530 --> 00:04:15,570 Cik pludiņi jūs vēlaties? 85 00:04:15,570 --> 00:04:19,070 >> Tā, piemēram, int studentu atzīmes 40. 86 00:04:19,070 --> 00:04:26,020 Tas apliecina, masīvu sauc Student pakāpes, kas sastāv no 40 veseli skaitļi. 87 00:04:26,020 --> 00:04:28,180 Diezgan pašsaprotami, es ceru. 88 00:04:28,180 --> 00:04:29,330 Lūk, vēl viens piemērs. 89 00:04:29,330 --> 00:04:31,560 Dubultie izvēlne cenas 8. 90 00:04:31,560 --> 00:04:34,610 Tas rada masīvu sauc Izvēlne cenas, kas sastāv 91 00:04:34,610 --> 00:04:38,300 vietas, atmiņā astoņus dubultspēlēs. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Ja jūs domājat, ka katra elementa no masīva tipa datu tipu, 94 00:04:45,750 --> 00:04:49,860 tā, piemēram, viens elements masīvs int tipa, tāpat jums 95 00:04:49,860 --> 00:04:52,770 varētu domāt par kādu citu int tipa mainīgais, 96 00:04:52,770 --> 00:04:56,440 Visas pazīstamās operācijas, ka mēs apspriests iepriekš ekspluatācijas 97 00:04:56,440 --> 00:04:58,270 video būs jēga. 98 00:04:58,270 --> 00:05:01,620 Tātad šeit, mēs varētu deklarēt masīvu no Booleans sauc par Truthtable, 99 00:05:01,620 --> 00:05:05,590 kas sastāv no istabas 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Un tad, tāpat kā mēs varētu tikai piešķirt vērtība uz jebkuru citu mainīgo tipa 101 00:05:09,650 --> 00:05:13,470 Būla, mēs varētu kaut ko pateikt tāpat Truthtable kvadrātiekava 102 00:05:13,470 --> 00:05:18,040 2, kas ir tas, kā mēs norāda, kas no patiesības tabulas elements? 103 00:05:18,040 --> 00:05:20,350 No trešā elements patiesība galda, jo atceros, 104 00:05:20,350 --> 00:05:21,800 mēs skaitot no 0. 105 00:05:21,800 --> 00:05:25,690 Tātad tas, kā mēs norādīt no patiesības tabulas Trešais elements. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 ir vienāds nepatiesa, tāpat kā mēs varētu declare-- 107 00:05:28,680 --> 00:05:33,560 vai mēs varētu piešķirt, drīzāk, jebkurš Boolean tipa mainīgais būt nepatiesa. 108 00:05:33,560 --> 00:05:35,050 >> Mēs varam arī izmantot to nosacījumiem. 109 00:05:35,050 --> 00:05:39,000 ja (truthtable 7 == true), kas nozīmē, 110 00:05:39,000 --> 00:05:42,370 ja astoto elementa no Truthtable ir taisnība, 111 00:05:42,370 --> 00:05:46,760 varbūt mēs vēlamies, lai izdrukātu ziņu lietotājam, printf ("TRUE n!") ;. 112 00:05:46,760 --> 00:05:50,290 Tas liek mums teikt Truthtable 10 vienāds taisnība, vai ne? 113 00:05:50,290 --> 00:05:53,590 Nu, es varu, bet tas ir diezgan bīstami, jo atceros, 114 00:05:53,590 --> 00:05:56,260 mums ir masīvs 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Tātad augstākais rādītājs, ka kompilators ir devis mums ir 9. 116 00:06:02,340 --> 00:06:06,010 >> Šī programma būs apkopot, bet ja kaut kas cits atmiņā 117 00:06:06,010 --> 00:06:09,110 pastāv, ja mēs būtu sagaida Truthtable 10 iet, 118 00:06:09,110 --> 00:06:13,980 mēs varētu ciest segmentāciju vaina. Mēs varētu saņemt prom ar to, bet kopumā, 119 00:06:13,980 --> 00:06:14,710 diezgan bīstami. 120 00:06:14,710 --> 00:06:19,759 Tātad, ko es daru šeit ir juridiska C, bet ne vienmēr ir labākais gājiens. 121 00:06:19,759 --> 00:06:22,300 Tagad, kad jums paziņot, un inicializēt masīvu vienlaicīgi, 122 00:06:22,300 --> 00:06:23,960 tur ir tiešām diezgan īpaša sintakse, kas jūs 123 00:06:23,960 --> 00:06:26,250 var izmantot, lai uzpildītu masīvs ar sākuma vērtībām. 124 00:06:26,250 --> 00:06:30,130 To var iegūt apgrūtinošas deklarēt masīvu izmēru 100, 125 00:06:30,130 --> 00:06:33,430 un tad jāsaka, elements 0 vienāds šis; elements 1 vienāds šis; 126 00:06:33,430 --> 00:06:34,850 elements 2 vienāda. 127 00:06:34,850 --> 00:06:36,370 Kāda tam jēga, vai ne? 128 00:06:36,370 --> 00:06:39,470 >> Ja tas ir mazs masīvs, jums varētu darīt kaut kas līdzīgs šim. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 vienāds open cirtaini lencēm un tad komats 130 00:06:44,360 --> 00:06:48,060 atdalīt elementu saraksts ka jūs vēlaties, lai masīvā. 131 00:06:48,060 --> 00:06:50,520 Tad aizveriet cirtaini lencēm semikolu. 132 00:06:50,520 --> 00:06:53,910 Tas rada masīvs izmērs trīs sauc Truthtable, 133 00:06:53,910 --> 00:06:56,090 ar elementiem nepatiesa, taisnība, un patiesība. 134 00:06:56,090 --> 00:06:59,270 Un patiesībā, konkretizāciju sintakse Man šeit ir 135 00:06:59,270 --> 00:07:03,350 tieši tāds pats kā dara individuāls elements sintakse zemāk. 136 00:07:03,350 --> 00:07:09,380 Šie divi veidi kodēšanas darītu ar ražot tieši tādu pašu masīvu. 137 00:07:09,380 --> 00:07:11,740 >> Tāpat mēs varētu atkārtot pa visu elementu 138 00:07:11,740 --> 00:07:15,400 no masīva, izmantojot cilpas, kas, Fakts, ir ļoti ļoti ieteicama 139 00:07:15,400 --> 00:07:16,790 at-home vingrinājums. 140 00:07:16,790 --> 00:07:20,720 Kā jūs izveidot masīvu 100 veseli skaitļi, kur 141 00:07:20,720 --> 00:07:23,477 katrs masīva elements ir tās indekss? 142 00:07:23,477 --> 00:07:26,560 Tā, piemēram, mums ir masīvs 100 veseli skaitļi, un ar pirmo elementu, 143 00:07:26,560 --> 00:07:27,790 mēs vēlamies likt 0. 144 00:07:27,790 --> 00:07:29,810 Otrajā elementu, mēs vēlamies likt 1. 145 00:07:29,810 --> 00:07:33,319 Trešajā elementu, mēs gribam likt 2; un tā tālāk, un tā tālāk. 146 00:07:33,319 --> 00:07:35,360 Tas ir ļoti labs at-home vingrinājums, lai to izdarītu. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Lūk, tas neizskatās piemēram, pārāk daudz kas ir mainījies. 149 00:07:40,220 --> 00:07:44,170 Bet paziņojums, ka starp kvadrātiekavas, šoreiz, 150 00:07:44,170 --> 00:07:45,830 Esmu tiešām izlaist numuru. 151 00:07:45,830 --> 00:07:48,000 Ja jūs izmantojat šo ļoti special konkretizāciju 152 00:07:48,000 --> 00:07:50,380 sintakse, lai izveidotu masīvs, jūs faktiski nav 153 00:07:50,380 --> 00:07:53,491 ir nepieciešams, lai norādītu izmēru masīva iepriekš. 154 00:07:53,491 --> 00:07:55,740 Kompilators ir pietiekami gudrs zināt, ka jūs faktiski 155 00:07:55,740 --> 00:07:58,980 gribu masīva izmēru 3, jo jūs nodot trīs elementus 156 00:07:58,980 --> 00:08:00,640 pa labi no vienādības zīmi. 157 00:08:00,640 --> 00:08:04,140 Ja tu būtu likts četri, tas būtu devis jums patiesība tabulu lielumu četru; 158 00:08:04,140 --> 00:08:06,270 un tā tālāk, un tā tālāk. 159 00:08:06,270 --> 00:08:09,380 >> Masīvi ir ne tikai viena dimensija, kas ir diezgan foršs. 160 00:08:09,380 --> 00:08:12,000 Jūs faktiski var būt tik daudz sānu tehnisko specifikāciju, kā vēlaties. 161 00:08:12,000 --> 00:08:16,470 Tā, piemēram, ja jūs vēlaties, lai izveidotu valdes par spēli Battleship, kas, 162 00:08:16,470 --> 00:08:20,910 ja jums kādreiz ir bijusi, ir spēle, kas ir spēlēja ar tapām par 10 līdz 10 režģi, 163 00:08:20,910 --> 00:08:22,450 jūs varētu izveidot masīvu, kā šis. 164 00:08:22,450 --> 00:08:26,030 Jūs varētu teikt bool līnijkuģis kvadrātiekava 10 165 00:08:26,030 --> 00:08:29,590 slēgta kvadrātiekava square kronšteins 10 slēgts kvadrātveida kronšteinu. 166 00:08:29,590 --> 00:08:32,710 >> Un tad, jūs varat izvēlēties, lai interpretēt to savā prātā, kā 10 167 00:08:32,710 --> 00:08:35,576 10. režģa šūnas. 168 00:08:35,576 --> 00:08:37,409 Tagad, patiesībā, atmiņas, tas tiešām vienkārši 169 00:08:37,409 --> 00:08:42,440 joprojām ir 100 elements, single dimensiju masīvs. 170 00:08:42,440 --> 00:08:46,070 Un tas, patiesībā, iet, ja jums ir trīs dimensijas vai četru vai piecu. 171 00:08:46,070 --> 00:08:49,420 Tas tiešām vienkārši nav reizināt visi no indices-- 172 00:08:49,420 --> 00:08:51,130 vai visi no lieluma specifiers-- kopā, 173 00:08:51,130 --> 00:08:53,480 un jūs tikai iegūt vienas dimensijas masīvs šī lieluma. 174 00:08:53,480 --> 00:08:57,090 >> Bet attiecībā uz organizācijas un vizualizācija un cilvēka uztvere, 175 00:08:57,090 --> 00:08:59,240 tas var būt daudz vieglāk strādāt ar režģi 176 00:08:59,240 --> 00:09:02,980 ja jūs strādājat par spēli piemēram, Tic-tac-toe vai Battleship, 177 00:09:02,980 --> 00:09:05,179 vai kaut kas tamlīdzīgs. 178 00:09:05,179 --> 00:09:06,970 Tā ir lieliska abstrakcija, tā vietā, 179 00:09:06,970 --> 00:09:09,340 domāt par Tic-tac-toe board kā līnija deviņiem 180 00:09:09,340 --> 00:09:13,810 laukumi vai to Battleship board kā līnija 100 kvadrātu. 181 00:09:13,810 --> 00:09:16,010 10 līdz 10 režģi vai trīs ar trīs režģis ir iespējams 182 00:09:16,010 --> 00:09:17,225 daudz vairāk viegli uztvert. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Tagad, kaut kas patiešām svarīgi par blokiem. 185 00:09:22,280 --> 00:09:25,950 Mēs varam ārstēt katrs indivīds masīva kā mainīgo elements. 186 00:09:25,950 --> 00:09:27,700 Mēs redzējām, ka agrāk kad mēs bijām piešķirot 187 00:09:27,700 --> 00:09:32,240 vērtība True noteiktām Booleans vai pārbaudot tos conditionals. 188 00:09:32,240 --> 00:09:35,960 Bet mēs nevaram izturēties pret visu vielas bloki sevi kā mainīgajiem. 189 00:09:35,960 --> 00:09:41,760 Mēs nevaram, piemēram, piešķirt viens bloks uz citu masīvu, izmantojot uzdevumu 190 00:09:41,760 --> 00:09:42,930 operators. 191 00:09:42,930 --> 00:09:44,640 Tas nav juridisks C. 192 00:09:44,640 --> 00:09:47,920 >> Ja mēs gribam, lai example-- ko mēs varētu darīt šajā piemērā 193 00:09:47,920 --> 00:09:50,200 Būtu kopēt viens bloks uz citu. 194 00:09:50,200 --> 00:09:53,810 Ja mēs vēlamies darīt, mēs faktiski nepieciešams izmantot cilpu kopēt vairāk 195 00:09:53,810 --> 00:09:56,550 katrs indivīds elements pa vienam. 196 00:09:56,550 --> 00:09:58,700 Es zinu, tas ir mazliet laikietilpīgs. 197 00:09:58,700 --> 00:10:04,022 >> Tā, piemēram, ja mēs būtu šos pāris no koda rindiņas, varētu šo darbu? 198 00:10:04,022 --> 00:10:05,230 Nu, nē, tā nebūtu, vai ne? 199 00:10:05,230 --> 00:10:07,860 Tāpēc, ka mēs cenšamies lai piešķirtu pārtikas bar. 200 00:10:07,860 --> 00:10:09,860 Tas nav dodas uz darbu, jo tas ir masīvs, 201 00:10:09,860 --> 00:10:13,130 un mēs tikko aprakstītā ka tas nav juridisks C. 202 00:10:13,130 --> 00:10:15,580 >> Tā vietā, ja mēs gribam, lai kopēt saturu pārtikas 203 00:10:15,580 --> 00:10:18,070 uz bāru, kas ir tas, ko mēs cenšamies darīt šeit, 204 00:10:18,070 --> 00:10:19,970 mums būtu nepieciešams sintaksi, kā šis. 205 00:10:19,970 --> 00:10:24,170 Mums ir cilpa, kas iet no J ir vienāds ar 0 līdz 5, 206 00:10:24,170 --> 00:10:28,390 un mēs pieauguma J par katru atkārtojuma cilpa un piešķirt elementi, piemēram, ka. 207 00:10:28,390 --> 00:10:33,360 Tas novestu pie bāra arī ir viens, divi, trīs, četri, pieci, 208 00:10:33,360 --> 00:10:36,730 bet mums tas ir jādara šajā ļoti lēni elements-by-elementu veidā, 209 00:10:36,730 --> 00:10:40,009 nevis, tikai nokopēt visu masīvu. 210 00:10:40,009 --> 00:10:42,050 Citās programmēšana valodas, vairāk audzēs, 211 00:10:42,050 --> 00:10:45,610 jūs varat, faktiski, darīt tieši tik vienkārši vienāds sintaksi. 212 00:10:45,610 --> 00:10:49,620 Bet C, diemžēl, mēs esam nav atļauts to darīt. 213 00:10:49,620 --> 00:10:52,026 >> Tagad tur ir viens cits lieta, ko es gribu pieminēt 214 00:10:52,026 --> 00:10:54,650 par masīvu, kas var būt nedaudz mazliet viltīgs, kad pirmo reizi 215 00:10:54,650 --> 00:10:55,990 strādāt ar viņiem. 216 00:10:55,990 --> 00:10:59,860 Mēs apspriedām ar video par mainīgo jomu, 217 00:10:59,860 --> 00:11:04,940 ka lielākā daļa mainīgie C, kad jūs zvanāt tos funkcijas, ir pagājis pēc vērtības. 218 00:11:04,940 --> 00:11:08,620 Vai tu atceries, ko tas nozīmē nodot kaut ko vērtību? 219 00:11:08,620 --> 00:11:12,570 Tas nozīmē, ka mēs nesam kopiju no mainīgais, kas ir tiek pieņemts. 220 00:11:12,570 --> 00:11:16,290 Callee funkcija, funkcija kas ir saņēmusi mainīgo, 221 00:11:16,290 --> 00:11:17,730 nesaņem mainīgo pati. 222 00:11:17,730 --> 00:11:20,850 Tas izpaužas savs vietējais tā kopiju strādāt. 223 00:11:20,850 --> 00:11:24,070 >> Bloki, protams, darīt neievēro šo noteikumu. 224 00:11:24,070 --> 00:11:27,600 Drīzāk, tas, ko mēs saucam ir iet ar atsauci. 225 00:11:27,600 --> 00:11:31,360 Callee faktiski tas saņem masīvu. 226 00:11:31,360 --> 00:11:34,207 Tā nesaņem tās pašu vietējo kopiju. 227 00:11:34,207 --> 00:11:36,040 Un, ja jūs domājat par tā, tas ir jēga. 228 00:11:36,040 --> 00:11:39,750 Ja masīvi ir tiešām liels, to aizņem tik daudz laika un pūļu 229 00:11:39,750 --> 00:11:44,470 veikt kopiju masīva 100 vai 1000 vai 10000 elementi, 230 00:11:44,470 --> 00:11:48,290 ka tas nav tā vērts priekšlikums funkcionēt saņemt tā kopiju, 231 00:11:48,290 --> 00:11:51,037 darīt kādu darbu ar to, un pēc tam vienkārši izdarīt ar kopiju; 232 00:11:51,037 --> 00:11:53,120 tas nav nepieciešams, lai būtu tas karājas ap vairs. 233 00:11:53,120 --> 00:11:54,710 >> Jo masīvi ir daži lielgabarīta un apgrūtinoša, 234 00:11:54,710 --> 00:11:56,001 mēs vienkārši nodot tos ar atsauci. 235 00:11:56,001 --> 00:12:01,210 Mēs vienkārši uzticas šo funkciju to, nav pārtraukumu neko. 236 00:12:01,210 --> 00:12:03,010 Tātad tas faktiski iegūtu masīvu. 237 00:12:03,010 --> 00:12:05,290 Tas nav iegūt sava vietējā kopiju. 238 00:12:05,290 --> 00:12:07,170 >> Tātad, ko tas nozīmē, pēc tam, kad callee 239 00:12:07,170 --> 00:12:08,970 manipulē elementu masīva? 240 00:12:08,970 --> 00:12:10,780 Kas notiek? 241 00:12:10,780 --> 00:12:13,210 Tagad mēs spīdums pār kāpēc tieši šis 242 00:12:13,210 --> 00:12:15,320 notiek, kāpēc bloki ir pagājis ar atsauci 243 00:12:15,320 --> 00:12:17,810 un viss pārējais ir pagājis pēc vērtības. 244 00:12:17,810 --> 00:12:20,470 Bet es jums apsolu, mēs atgriezties un sniegt jums atbildi 245 00:12:20,470 --> 00:12:23,750 uz šī vēlākā video. 246 00:12:23,750 --> 00:12:28,110 >> Lūk, vēl viens vingrinājums jums Pirms mēs satīt lietas, par masīvu. 247 00:12:28,110 --> 00:12:31,400 Par kodu šeit ķekars, kas ir nav īpaši labs stils, 248 00:12:31,400 --> 00:12:33,400 tikai es ņemšu veikt šo brīdinājumu. 249 00:12:33,400 --> 00:12:36,660 Tur nav komentāru šeit, kas ir diezgan slikta forma. 250 00:12:36,660 --> 00:12:39,750 Bet tas ir tikai tāpēc, ka es gribēju būt spējīgiem viss uz ekrāna. 251 00:12:39,750 --> 00:12:44,360 >> Augšpusē, jūs varat redzēt, ka man ir divfunkciju deklarācijas set masīvs 252 00:12:44,360 --> 00:12:45,820 un noteikt int. 253 00:12:45,820 --> 00:12:49,680 Set masīvs acīmredzot notiek masīvs četri veseli skaitļi, kā savu ieguldījumu. 254 00:12:49,680 --> 00:12:52,767 Un kopa int acīmredzot notiek viens vesels kā savu ieguldījumu. 255 00:12:52,767 --> 00:12:54,350 Bet gan no tiem nav izejas. 256 00:12:54,350 --> 00:12:57,689 Produkciju, atgriešanās tips, katra no tām ir spēkā neesošs. 257 00:12:57,689 --> 00:12:59,480 Galvenajā, mums ir pāris koda rindiņas. 258 00:12:59,480 --> 00:13:02,730 Mēs paziņojam skaitlim mainīgo sauc par un piešķirt tai vērtību 10. 259 00:13:02,730 --> 00:13:07,080 Mēs deklarēt masīvu četru veselu skaitļu sauc par B un piešķirt tos elementus, 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, un 3, attiecīgi. 261 00:13:08,730 --> 00:13:12,190 Tad mums ir zvanu, lai uzstādītu int un aicinājums noteikt masīvu. 262 00:13:12,190 --> 00:13:15,910 Uzstādītie masīvs un kopuma definīcijas int ir uz leju zem, apakšā. 263 00:13:15,910 --> 00:13:17,640 >> Un tā, atkal, es jums uzdot jautājumu. 264 00:13:17,640 --> 00:13:20,770 Kas izpaužas izdrukāt šeit beigās Main? 265 00:13:20,770 --> 00:13:23,020 Tur ir izdruka col. Es esmu izdrukāšana divus veselus skaitļus. 266 00:13:23,020 --> 00:13:28,010 Es esmu izdrukāšana saturu un saturs B kvadrātiekava 0. 267 00:13:28,010 --> 00:13:29,880 Pauze video šeit un ņemt minūti. 268 00:13:29,880 --> 00:13:35,482 Vai jūs varat izdomāt, ko tas funkcija drukāt beigās? 269 00:13:35,482 --> 00:13:38,190 Cerams, ja jūs atceraties Atšķirība starp iet pa vērtību 270 00:13:38,190 --> 00:13:41,680 un iet ar atsauci, šis Problēma bija ne pārāk grūts, lai jūs. 271 00:13:41,680 --> 00:13:44,130 Un atbilde jūs būtu ir atraduši tas ir. 272 00:13:44,130 --> 00:13:47,660 Ja jūs neesat īsti pārliecināts par to, kāpēc tas tā ir gadījumā, ņem otru, 273 00:13:47,660 --> 00:13:50,620 iet atpakaļ, pārskatīt to, kas man bija tikai diskutējot par iet bloki 274 00:13:50,620 --> 00:13:53,450 atsaucoties, salīdzinot iet citi mainīgie pēc vērtības, 275 00:13:53,450 --> 00:13:56,680 un, cerams, tas būs padarīt mazliet vairāk sajūtu. 276 00:13:56,680 --> 00:13:59,760 >> Es esmu Doug Lloyd, un tas ir CS50. 277 00:13:59,760 --> 00:14:01,467