1 00:00:00,000 --> 00:00:03,388 >> [Muzika] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG Lloyd: Në rregull. 4 00:00:06,020 --> 00:00:07,680 Duke punuar me të vetëm variablave është shumë e bukur. 5 00:00:07,680 --> 00:00:09,500 Por, çfarë nëse ne duam të punojmë me një shumë të variablave, 6 00:00:09,500 --> 00:00:12,760 por ne nuk duam të kemi një bandë e emra të ndryshëm fluturon rreth kodit tonë? 7 00:00:12,760 --> 00:00:15,980 Në këtë rast, vargjeve janë do të vijnë në të vërtetë i dobishëm. 8 00:00:15,980 --> 00:00:19,510 Vargjeve janë të dhëna me të vërtetë themelore Struktura për çdo gjuhë programimi 9 00:00:19,510 --> 00:00:20,260 që ju do të përdorni. 10 00:00:20,260 --> 00:00:24,450 Dhe ata janë me të vërtetë, të vërtetë të dobishme, veçanërisht, si ne do të shohim, në CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Ne përdorim vargjeve për të mbajtur vlerat e të njëjtit lloj e të dhënave 12 00:00:27,870 --> 00:00:29,830 në vende fqinje e kujtesës. 13 00:00:29,830 --> 00:00:32,430 Kjo do të thotë, kjo është një mënyrë që ne mund të grup 14 00:00:32,430 --> 00:00:35,430 një bandë e numrave të plotë së bashku në kujtesës ose një bandë e karaktereve 15 00:00:35,430 --> 00:00:38,270 apo gjithandej në kujtesën e vërtetë ngushtë së bashku dhe të punojnë 16 00:00:38,270 --> 00:00:41,930 me ta, pa pasur nevojë për të dhënë çdo një emër e veta unike, e cila mund të 17 00:00:41,930 --> 00:00:44,500 të rëndë pas një kohë të shkurtër. 18 00:00:44,500 --> 00:00:48,130 >> Tani, një mënyrë për analogji vargjeve është që të mendoj për shkrimin tuaj lokale 19 00:00:48,130 --> 00:00:49,000 Zyra për një të dytë. 20 00:00:49,000 --> 00:00:51,820 Pra, hap larg nga programimi dhe vetëm të mbyllë sytë tuaj 21 00:00:51,820 --> 00:00:54,120 dhe kujtoj në mendjen tuaj zyrën tuaj lokale postare. 22 00:00:54,120 --> 00:00:57,160 Zakonisht, në shumicën postin zyrat, ka një bankë të madhe 23 00:00:57,160 --> 00:01:00,490 një kuti zyrë postare në mur. 24 00:01:00,490 --> 00:01:03,510 >> Një grup është një bllok gjigand e kujtesës afërt, 25 00:01:03,510 --> 00:01:06,120 në të njëjtën mënyrë që një postë bankë në zyrën tuaj postare 26 00:01:06,120 --> 00:01:11,230 është një hapësirë ​​të madhe mbi mur i postës. 27 00:01:11,230 --> 00:01:15,750 Vargjeve janë ndarë në të vogla, njëlloj blloqe mesme të hapësirës, 28 00:01:15,750 --> 00:01:19,930 secila prej të cilave është quajtur një element në në të njëjtën mënyrë që muret e postit 29 00:01:19,930 --> 00:01:23,840 Zyra ka qenë i ndarë në të vogla, njëlloj blloqe mesme të hapësirës, 30 00:01:23,840 --> 00:01:27,560 që ne e quajmë një kuti PO. 31 00:01:27,560 --> 00:01:31,650 Çdo element i vektorit mund ruajtur një sasi të caktuar të të dhënave, 32 00:01:31,650 --> 00:01:37,540 ashtu si çdo kuti e postës është në gjendje për të mbajtur një sasi të caktuar të postës. 33 00:01:37,540 --> 00:01:41,540 >> Çfarë mund të ruhen në çdo element të array është variabla e njëjtë të dhënave 34 00:01:41,540 --> 00:01:45,300 lloji, të tilla si int ose char, vetëm si në kutinë tuaj postare, 35 00:01:45,300 --> 00:01:47,300 ju mund të përshtatet vetëm gjëra i një lloji të ngjashëm, 36 00:01:47,300 --> 00:01:50,430 të tilla si letra apo pako të vogla. 37 00:01:50,430 --> 00:01:55,050 Së fundi, ne mund të hyni në çdo element të array direkt nga numri indeks, 38 00:01:55,050 --> 00:01:59,770 ashtu si ne mund të hyni zyrën tonë postare kuti duke ditur numrin e saj kuti postare. 39 00:01:59,770 --> 00:02:02,750 Shpresojmë, kjo analogji ju ndihmon të merrni kokën tuaj 40 00:02:02,750 --> 00:02:05,540 rreth idesë së vargjeve sipas analogizing për diçka tjetër 41 00:02:05,540 --> 00:02:08,400 se ju jeni me siguri tashmë të njohur me të. 42 00:02:08,400 --> 00:02:13,182 >> Në C, elementet e një grup të futura duke filluar nga 0, jo nga 1. 43 00:02:13,182 --> 00:02:14,390 Dhe kjo është me të vërtetë e rëndësishme. 44 00:02:14,390 --> 00:02:18,530 Dhe në fakt, kjo është arsyeja pse ne, në CS 50, Dhe pse shkencëtarët kompjuterike shpesh 45 00:02:18,530 --> 00:02:22,150 do të numërojnë nga 0, është për shkak të array C 46 00:02:22,150 --> 00:02:24,660 indeksimit, që fillon gjithmonë në 0. 47 00:02:24,660 --> 00:02:28,730 Pra, nëse një grup përbëhet nga elemente n, elementi i parë i asaj grup 48 00:02:28,730 --> 00:02:32,960 është vendosur në faqen 0, dhe Elementi i fundit i vektorit 49 00:02:32,960 --> 00:02:36,610 është vendosur në indeksi n minus 1. 50 00:02:36,610 --> 00:02:43,160 Përsëri, në qoftë se ka elemente n në tonë array, indeksi fundit është n minus 1. 51 00:02:43,160 --> 00:02:46,820 >> Pra, nëse array jonë ka 50 elemente, të elementi i parë është vendosur në faqen 0, 52 00:02:46,820 --> 00:02:51,060 dhe elementi i fundit është vendosur në faqen 49. 53 00:02:51,060 --> 00:02:53,940 Për fat të keq, ose për fat të mirë, në varësi perspektivën tuaj, 54 00:02:53,940 --> 00:02:56,170 C është shumë i butë këtu. 55 00:02:56,170 --> 00:02:59,480 Kjo nuk do të ju ndalojë nga shkon jashtë caqeve të vektorit tuaj. 56 00:02:59,480 --> 00:03:03,080 Ju mund të hyni në minus 3 element i vektorit tuaj 57 00:03:03,080 --> 00:03:07,400 ose elementi 59 e grup tuaj, nëse array juaj ka vetëm 50 elemente. 58 00:03:07,400 --> 00:03:11,060 Kjo nuk do të ndalet programin tuaj nga hartimin, por në kohën e duhur, 59 00:03:11,060 --> 00:03:14,350 ju mund të hasni një faji dreaded Segmentimi 60 00:03:14,350 --> 00:03:17,460 në qoftë se ju filloni për të hyrë në kujtesën që është jashtë kufijve të asaj 61 00:03:17,460 --> 00:03:19,260 keni pyetur programin tuaj për të ju jap. 62 00:03:19,260 --> 00:03:21,250 Pra, do të jenë të kujdesshëm. 63 00:03:21,250 --> 00:03:23,120 >> Çfarë e bën një grup Deklarata duken si? 64 00:03:23,120 --> 00:03:26,940 Si nuk kemi të kodojnë një grup në ekzistencë si ne kod ndonjë variabël tjetër? 65 00:03:26,940 --> 00:03:31,250 Ka tri pjesë për një grup declaration-- një lloj, një emër, 66 00:03:31,250 --> 00:03:31,880 dhe një madhësi. 67 00:03:31,880 --> 00:03:34,088 Kjo është shumë e ngjashme me një Deklarata e ndryshueshme, e cila 68 00:03:34,088 --> 00:03:36,970 është vetëm një lloj dhe një emër, elementi madhësi të qënit 69 00:03:36,970 --> 00:03:39,860 rasti i veçantë për një grup, sepse ne jemi duke marrë një bandë e tyre 70 00:03:39,860 --> 00:03:41,830 në të njëjtën kohë. 71 00:03:41,830 --> 00:03:45,560 >> Pra, lloji është se çfarë lloj variable ju dua çdo element i vektorit të jetë. 72 00:03:45,560 --> 00:03:47,150 A duan atë në një rrjet të integers? 73 00:03:47,150 --> 00:03:49,010 Pastaj, lloj të dhënat tuaja duhet të jenë të int. 74 00:03:49,010 --> 00:03:51,760 A doni që ajo të jetë një sërë dyshe apo gjithandej? 75 00:03:51,760 --> 00:03:54,545 Llojin e të dhënave duhet të jetë të dyfishtë apo noton. 76 00:03:54,545 --> 00:03:56,420 Emri është ajo që ju doni të telefononi rrjet tuaj. 77 00:03:56,420 --> 00:04:00,970 Çfarë doni të emrit këtij gjiganti banka e integers apo gjithandej apo karaktere 78 00:04:00,970 --> 00:04:03,250 ose dyshe, apo çfarëdo keni? 79 00:04:03,250 --> 00:04:04,700 Çfarë bëni ju doni të telefononi atë? 80 00:04:04,700 --> 00:04:06,110 Shpjegues Pretty vetë. 81 00:04:06,110 --> 00:04:08,610 >> Së fundi, madhësia, e cila shkon brenda kllapave katrore, 82 00:04:08,610 --> 00:04:12,180 është se sa shumë elemente që do të si grup tuaj të përmbajnë. 83 00:04:12,180 --> 00:04:13,530 Sa integers nuk ju duan? 84 00:04:13,530 --> 00:04:15,570 Sa gjithandej doni? 85 00:04:15,570 --> 00:04:19,070 >> Kështu për shembull, int notat e studentëve 40. 86 00:04:19,070 --> 00:04:26,020 Kjo deklaron një grup të quajtur Student notat, e cila përbëhet prej 40 numrave të plotë. 87 00:04:26,020 --> 00:04:28,180 Shpjegues shumë vetë, unë shpresoj. 88 00:04:28,180 --> 00:04:29,330 Ja një shembull tjetër. 89 00:04:29,330 --> 00:04:31,560 Çmimet dyfishtë menu 8. 90 00:04:31,560 --> 00:04:34,610 Kjo krijon një grup të quajtur Çmimet menu, e cila përbëhet 91 00:04:34,610 --> 00:04:38,300 hapësirë ​​në kujtesë për tetë dyshe. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Nëse ju mendoni se për çdo element e një grup të tipit të të dhënave tipit, 94 00:04:45,750 --> 00:04:49,860 kështu për shembull, një element të vetme një grup i tipit int, në të njëjtën mënyrë ju 95 00:04:49,860 --> 00:04:52,770 do të mendojnë për ndonjë tjetër variabël të tipit int, 96 00:04:52,770 --> 00:04:56,440 të gjitha operacionet e njohur se ne diskutuar më parë në operacionet 97 00:04:56,440 --> 00:04:58,270 video do të kishte kuptim. 98 00:04:58,270 --> 00:05:01,620 Kështu që këtu, ne mund të deklarojë një grup i Booleans quajtur Truthtable, 99 00:05:01,620 --> 00:05:05,590 e cila përbëhet nga dhomë për 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> Dhe pastaj, ashtu si ne mund vetëm të caktojë një vlerë cdonjerit variable tjetër të tipit 101 00:05:09,650 --> 00:05:13,470 Boolean, ne mund të themi diçka si Truthtable kllapa katrore 102 00:05:13,470 --> 00:05:18,040 2, e cila është se si ne të tregojnë, cili element i tabelës së vërtetës? 103 00:05:18,040 --> 00:05:20,350 Elementi i tretë i Tabela e vërteta, sepse mos harroni, 104 00:05:20,350 --> 00:05:21,800 ne jemi duke numëruar nga 0. 105 00:05:21,800 --> 00:05:25,690 Pra, kjo është se si ne tregojnë Elementi i tretë i tabelës vërtetës. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 është e barabartë me të rreme, ashtu si ne mund të declare-- 107 00:05:28,680 --> 00:05:33,560 ose ne mund të caktojë, në vend, ndonjë Ndryshore boolean tipit të jetë e rreme. 108 00:05:33,560 --> 00:05:35,050 >> Ne gjithashtu mund të përdorin atë në kushte. 109 00:05:35,050 --> 00:05:39,000 në qoftë se (== truthtable 7 vërtetë), e cila do të thotë, 110 00:05:39,000 --> 00:05:42,370 nëse elementin e tetë i Truthtable është e vërtetë, 111 00:05:42,370 --> 00:05:46,760 ndoshta ne duam të shkruar një mesazh për përdoruesit, printf ("TRUE! n") ;. 112 00:05:46,760 --> 00:05:50,290 Që na bën të themi Truthtable 10 është e barabartë e vërtetë, e drejtë? 113 00:05:50,290 --> 00:05:53,590 E pra, unë mund të, por kjo është goxha i rrezikshëm, sepse mos harroni, 114 00:05:53,590 --> 00:05:56,260 ne kemi një rrjet të 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Pra, indeksi më i lartë se përpilues na ka dhënë është 9. 116 00:06:02,340 --> 00:06:06,010 >> Ky program do të përpilojë, por në qoftë se diçka tjetër në kujtesën 117 00:06:06,010 --> 00:06:09,110 ekziston ku ne do presin Truthtable 10 për të shkuar, 118 00:06:09,110 --> 00:06:13,980 ne mund të vuajnë një defekt segmentimit. Ne mund të merrni larg me atë, por në përgjithësi, 119 00:06:13,980 --> 00:06:14,710 mjaft e rrezikshme. 120 00:06:14,710 --> 00:06:19,759 Pra, ajo që unë jam duke bërë këtu është C ligjore, por jo domosdoshmërisht veprim të mirë. 121 00:06:19,759 --> 00:06:22,300 Tani, kur ju të deklarojë dhe nisja një koleksion të njëjtën kohë, 122 00:06:22,300 --> 00:06:23,960 ka në fakt një goxha sintaksë të veçantë që ju 123 00:06:23,960 --> 00:06:26,250 mund të përdorin për të mbushur deri array me vlerat e saj fillestare. 124 00:06:26,250 --> 00:06:30,130 Ajo mund të merrni rëndë për të deklarojë një grup të madhësisë 100, 125 00:06:30,130 --> 00:06:33,430 dhe pastaj duhet të them, element 0 është e barabartë kjo; Elementi 1 është e barabartë kjo; 126 00:06:33,430 --> 00:06:34,850 Elementi 2 është e barabartë me atë. 127 00:06:34,850 --> 00:06:36,370 Çfarë është pika, e drejtë? 128 00:06:36,370 --> 00:06:39,470 >> Në qoftë se kjo është një grup i vogël, ju mund të bëjë diçka si kjo. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 barabartë hapur mbajtëse kaçurrel dhe pastaj presje 130 00:06:44,360 --> 00:06:48,060 ndarë listën e elementeve që ju doni të vendosni në rrjet. 131 00:06:48,060 --> 00:06:50,520 Pastaj të mbyllë pikëpresje kaçurrel Braçe. 132 00:06:50,520 --> 00:06:53,910 Kjo krijon një grup të Madhësia tre quajtur Truthtable, 133 00:06:53,910 --> 00:06:56,090 me elemente të rreme, të vërteta, dhe i vërtetë. 134 00:06:56,090 --> 00:06:59,270 Dhe në fakt, instantiation Sintaksa kam këtu është 135 00:06:59,270 --> 00:07:03,350 të njëjtë si duke bërë të Elementi Sintaksa individuale më poshtë. 136 00:07:03,350 --> 00:07:09,380 Këto dy mënyrat e kodim do prodhojnë të njëjtën array saktë. 137 00:07:09,380 --> 00:07:11,740 >> Në mënyrë të ngjashme, ne mund iterate gjatë gjithë elementet 138 00:07:11,740 --> 00:07:15,400 e një sërë duke përdorur një lak, të cilat, në fakt, është një rekomandohet fuqimisht 139 00:07:15,400 --> 00:07:16,790 në shtëpi stërvitje. 140 00:07:16,790 --> 00:07:20,720 Si do ta keni krijuar një rrjet i 100 integers, ku 141 00:07:20,720 --> 00:07:23,477 çdo element i vektorit është indeksi i saj? 142 00:07:23,477 --> 00:07:26,560 Kështu për shembull, ne kemi një rrjet prej 100 numra te plote, dhe me elementin e parë, 143 00:07:26,560 --> 00:07:27,790 ne duam të vënë 0. 144 00:07:27,790 --> 00:07:29,810 Në elementin e dytë, ne duam të vënë 1. 145 00:07:29,810 --> 00:07:33,319 Në elementin e tretë, ne duam për të vënë 2; dhe kështu me radhë e kështu me radhë. 146 00:07:33,319 --> 00:07:35,360 Kjo është një të vërtetë të mirë në shtëpi stërvitje për të bërë këtë. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Këtu, kjo nuk duket si shumë ka ndryshuar. 149 00:07:40,220 --> 00:07:44,170 Por vini re se në mes të kllapa katrore, këtë herë, 150 00:07:44,170 --> 00:07:45,830 Unë e kam lënë pas dore në fakt numrin. 151 00:07:45,830 --> 00:07:48,000 Nëse jeni duke përdorur këtë shumë instantiation veçantë 152 00:07:48,000 --> 00:07:50,380 Sintaksa për të krijuar një array, ju në fakt nuk e bëni 153 00:07:50,380 --> 00:07:53,491 nevojë për të treguar madhësinë e array paraprakisht. 154 00:07:53,491 --> 00:07:55,740 Përpiluesi është mjaft i zgjuar që të dini se ju në fakt 155 00:07:55,740 --> 00:07:58,980 duan një grup të madhësisë 3, sepse ju vendosni tre elemente 156 00:07:58,980 --> 00:08:00,640 në të djathtë e shenjës së barabartë. 157 00:08:00,640 --> 00:08:04,140 Në qoftë se ju kishte vënë katër, ai do të ketë ju dhënë një tabelë vërteta e madhësisë katër; 158 00:08:04,140 --> 00:08:06,270 dhe kështu me radhë e kështu me radhë. 159 00:08:06,270 --> 00:08:09,380 >> Vargjeve nuk janë të kufizuar në një të vetme dimension, e cila është pretty cool. 160 00:08:09,380 --> 00:08:12,000 Ju në fakt mund të ketë sa më shumë specifiers anësore si ju dëshironi. 161 00:08:12,000 --> 00:08:16,470 Kështu për shembull, në qoftë se ju doni të krijoni një bord për lojë Battleship, e cila, 162 00:08:16,470 --> 00:08:20,910 në qoftë se keni luajtur ndonjëherë, është një lojë që është luajtur me shtylla në 10 nga 10 rrjetit, 163 00:08:20,910 --> 00:08:22,450 ju mund të krijojë një grup të tillë. 164 00:08:22,450 --> 00:08:26,030 Ju mund të thonë se bool Battleship katror kllapa 10 165 00:08:26,030 --> 00:08:29,590 katror mbyllur kllapa katrore kllapa 10 mbyllur kllapa katrore. 166 00:08:29,590 --> 00:08:32,710 >> Dhe pastaj, ju mund të zgjidhni për të interpretojnë këtë në mendjen tuaj si një 10 167 00:08:32,710 --> 00:08:35,576 nga 10 rrjetë prej qelizave. 168 00:08:35,576 --> 00:08:37,409 Tani, në fakt, në kujtesë, ajo me të vërtetë e bën vetëm 169 00:08:37,409 --> 00:08:42,440 mbetet një element 100, array vetme dimensionale. 170 00:08:42,440 --> 00:08:46,070 Dhe kjo, në fakt, vlen edhe për në qoftë se ju kanë tre dimensione ose katër ose pesë. 171 00:08:46,070 --> 00:08:49,420 Ajo me të vërtetë vetëm do të shumohen të gjithë të indices-- 172 00:08:49,420 --> 00:08:51,130 ose të gjitha e madhësisë specifiers-- së bashku, 173 00:08:51,130 --> 00:08:53,480 dhe ju vetëm merrni një e-dimensionale grup i kësaj madhësie. 174 00:08:53,480 --> 00:08:57,090 >> Por në aspektin e organizimit dhe vizualizimi dhe perceptimi njerëzor, 175 00:08:57,090 --> 00:08:59,240 ajo mund të jetë shumë më e lehtë për të punuar me një rrjet 176 00:08:59,240 --> 00:09:02,980 në qoftë se ju jeni duke punuar në një lojë si Tic-Tac-shputë apo Battleship, 177 00:09:02,980 --> 00:09:05,179 ose diçka të tillë. 178 00:09:05,179 --> 00:09:06,970 Kjo është një abstraksion i madh, në vend që 179 00:09:06,970 --> 00:09:09,340 të mendojnë për një Tic-TAC-shputë bord si një linjë e nëntë 180 00:09:09,340 --> 00:09:13,810 shesheve ose një bord Battleship si një linjë e 100 shesheve. 181 00:09:13,810 --> 00:09:16,010 Një 10 nga 10 rrjetit ose tre nga tre rrjetit është ndoshta 182 00:09:16,010 --> 00:09:17,225 shumë më të lehtë për të kuptuar. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Tani, diçka me të vërtetë e rëndësishme në lidhje vargjeve. 185 00:09:22,280 --> 00:09:25,950 Ne mund të trajtojë çdo individ element i vektorit si një variabël. 186 00:09:25,950 --> 00:09:27,700 Ne pamë se më herët kur ne ishim caktimin 187 00:09:27,700 --> 00:09:32,240 vlera e vërtetë për disa Booleans ose testimin e tyre në conditionals. 188 00:09:32,240 --> 00:09:35,960 Por ne nuk mund të trajtojë të tërë vargjeve veten si variabla. 189 00:09:35,960 --> 00:09:41,760 Ne nuk mund, për shembull, të caktojë një array në një tjetër grup duke përdorur detyrën 190 00:09:41,760 --> 00:09:42,930 operatori. 191 00:09:42,930 --> 00:09:44,640 Kjo nuk është C. ligjore 192 00:09:44,640 --> 00:09:47,920 >> Në qoftë se ne duam të, për example-- çfarë ne do të bëjmë në atë shembull 193 00:09:47,920 --> 00:09:50,200 do të jenë të kopjoni një grup në një tjetër. 194 00:09:50,200 --> 00:09:53,810 Në qoftë se ne duam të bëjmë atë, ne fakt duhet të përdorni një lak të kopjoni mbi 195 00:09:53,810 --> 00:09:56,550 çdo element individual në një kohë. 196 00:09:56,550 --> 00:09:58,700 Unë e di se është një konsumon pak kohë. 197 00:09:58,700 --> 00:10:04,022 >> Kështu për shembull, nëse do të kishim këto çift i linjave të kodit, do të këtë punë? 198 00:10:04,022 --> 00:10:05,230 E pra, jo, ajo nuk do, apo jo? 199 00:10:05,230 --> 00:10:07,860 Sepse ne jemi duke u përpjekur të caktojë ushqim për bar. 200 00:10:07,860 --> 00:10:09,860 Kjo nuk do të punojë, sepse kjo është një grup, 201 00:10:09,860 --> 00:10:13,130 dhe ne vetëm e përshkruar se kjo nuk është C. ligjore 202 00:10:13,130 --> 00:10:15,580 >> Në vend të kësaj, në qoftë se ne duam të kopje përmbajtjen e ushqimit 203 00:10:15,580 --> 00:10:18,070 në bar, e cila është ajo që ne jemi duke u përpjekur për të bërë këtu, 204 00:10:18,070 --> 00:10:19,970 ne do të duhet një sintaksë si kjo. 205 00:10:19,970 --> 00:10:24,170 Ne kemi një për lak që shkon nga J është i barabartë me 0 deri në 5, 206 00:10:24,170 --> 00:10:28,390 dhe ne ardhura J në çdo përsëritje e lak dhe elementet Cakto si kjo. 207 00:10:28,390 --> 00:10:33,360 Kjo do të rezultojë në bar edhe duke qenë një, dy, tre, kater, pese, 208 00:10:33,360 --> 00:10:36,730 por ne duhet të bëjmë atë këtë shumë element-nga-element mënyrë e ngadaltë, 209 00:10:36,730 --> 00:10:40,009 në vend të vetëm me kopjimi gjithë array. 210 00:10:40,009 --> 00:10:42,050 Në programimin e tjera gjuhë, ato më moderne, 211 00:10:42,050 --> 00:10:45,610 ju mund, në fakt, të bëjë vetëm kaq e thjeshtë është e barabartë me sintaksë. 212 00:10:45,610 --> 00:10:49,620 Por C, për fat të keq, ne jemi nuk lejohet për të bërë këtë. 213 00:10:49,620 --> 00:10:52,026 >> Tani, ka një tjetër gjë që unë dua të përmend 214 00:10:52,026 --> 00:10:54,650 rreth vargjeve që mund të jetë pak pak e ndërlikuar për herë të parë ju 215 00:10:54,650 --> 00:10:55,990 punojnë me ta. 216 00:10:55,990 --> 00:10:59,860 Ne diskutuam në një video për qëllimin e ndryshueshme, 217 00:10:59,860 --> 00:11:04,940 se shumica e variablave në C, kur ju telefononi ata në funksione, janë kaluar nga vlera. 218 00:11:04,940 --> 00:11:08,620 A ju kujtohet se çfarë do të thotë për të kaluar diçka me vlerë? 219 00:11:08,620 --> 00:11:12,570 Kjo do të thotë që ne jemi duke bërë një kopje të variabël që është duke kaluar në. 220 00:11:12,570 --> 00:11:16,290 Funksioni callee, funksioni që është marrja e ndryshueshme, 221 00:11:16,290 --> 00:11:17,730 nuk ka marrë ndryshueshme vetë. 222 00:11:17,730 --> 00:11:20,850 Ajo merr lokal vet kopje e tij për të punuar me të. 223 00:11:20,850 --> 00:11:24,070 >> Vargjeve, natyrisht, të bëjë nuk e ndjekin këtë rregull. 224 00:11:24,070 --> 00:11:27,600 Përkundrazi, ajo që ne e quajmë këtë kalon duke iu referuar. 225 00:11:27,600 --> 00:11:31,360 Callee fakt merr array. 226 00:11:31,360 --> 00:11:34,207 Ajo nuk merr saj kopje vet lokal të tij. 227 00:11:34,207 --> 00:11:36,040 Dhe në qoftë se ju mendoni rreth kjo, kjo ka kuptim. 228 00:11:36,040 --> 00:11:39,750 Nëse vargjeve janë me të vërtetë të mëdha, atë merr aq shumë kohë dhe përpjekje 229 00:11:39,750 --> 00:11:44,470 për të bërë një kopje të një sërë 100 apo 1000 apo 10.000 elemente, 230 00:11:44,470 --> 00:11:48,290 se kjo nuk është e vlefshme për një funksionojë për të marrë një kopje të saj, 231 00:11:48,290 --> 00:11:51,037 të bëjë disa punë me të, dhe pastaj vetëm të bëhet me kopje; 232 00:11:51,037 --> 00:11:53,120 ajo nuk ka nevojë të ketë ajo lartësi rreth më. 233 00:11:53,120 --> 00:11:54,710 >> Për shkak se vargjeve janë disa rëndë dhe të rëndë, 234 00:11:54,710 --> 00:11:56,001 ne vetëm kalojnë duke iu referuar. 235 00:11:56,001 --> 00:12:01,210 Ne vetëm besim këtë funksion për të, nuk e thyejnë asgjë. 236 00:12:01,210 --> 00:12:03,010 Pra, kjo ka të vërtetë të marrë array. 237 00:12:03,010 --> 00:12:05,290 Ajo nuk ka marrë kopjen e vet lokale të saj. 238 00:12:05,290 --> 00:12:07,170 >> Pra, çfarë do të thotë kjo, pastaj, kur callee 239 00:12:07,170 --> 00:12:08,970 manipulon elementet e grup? 240 00:12:08,970 --> 00:12:10,780 Cfare ndodh? 241 00:12:10,780 --> 00:12:13,210 Tani për tani, ne do të komentoj mbi pse pikërisht kjo 242 00:12:13,210 --> 00:12:15,320 ndodh, pse vargjeve janë miratuar duke iu referuar 243 00:12:15,320 --> 00:12:17,810 dhe çdo gjë tjetër është miratuar nga vlera. 244 00:12:17,810 --> 00:12:20,470 Por unë ju premtoj, ne do të kthehen dhe do t'ju japë përgjigje 245 00:12:20,470 --> 00:12:23,750 për këtë në një video të mëvonshëm. 246 00:12:23,750 --> 00:12:28,110 >> Këtu është një ushtrim shumë për ju para se të përfundojë gjërat në vargjeve. 247 00:12:28,110 --> 00:12:31,400 Bandë e kodit këtu, kjo është nuk është veçanërisht stil të mirë, 248 00:12:31,400 --> 00:12:33,400 vetëm Unë do të bëjë atë paralajmërim. 249 00:12:33,400 --> 00:12:36,660 Nuk ka komente në këtu, e cila është formë shumë e keqe. 250 00:12:36,660 --> 00:12:39,750 Por kjo është vetëm për shkak se kam kërkuar që të jetë në gjendje të përshtaten çdo gjë në ekran. 251 00:12:39,750 --> 00:12:44,360 >> Në krye, ju mund të shihni se unë kam dy deklaratat funksion për të vendosur rrjet 252 00:12:44,360 --> 00:12:45,820 dhe të vendosur int. 253 00:12:45,820 --> 00:12:49,680 Array set me sa duket merr një koleksion e katër integers si input saj. 254 00:12:49,680 --> 00:12:52,767 Dhe grup int me sa duket merr një numër i plotë vetëm si input saj. 255 00:12:52,767 --> 00:12:54,350 Por dy prej tyre nuk kanë një dalje. 256 00:12:54,350 --> 00:12:57,689 Prodhimi, kthimi lloji, e secili prej tyre është i pavlefshëm. 257 00:12:57,689 --> 00:12:59,480 Në Main, ne kemi një disa rreshta të kodit. 258 00:12:59,480 --> 00:13:02,730 Ne deklarojmë një variabël integer quajtur një dhe të caktojë atë vlerën 10. 259 00:13:02,730 --> 00:13:07,080 Ne shpallim një grup prej katër integers quajtur B dhe cakton elementet 0, 1, 260 00:13:07,080 --> 00:13:08,730 2 dhe 3, respektivisht. 261 00:13:08,730 --> 00:13:12,190 Pastaj, ne kemi një telefonatë për të vendosur int dhe një thirrje për të vendosur array. 262 00:13:12,190 --> 00:13:15,910 Përkufizimet e array vendosur dhe të vendosur int janë poshtë, në pjesën e poshtme. 263 00:13:15,910 --> 00:13:17,640 >> Dhe kështu, përsëri, unë ju pyesni pyetje. 264 00:13:17,640 --> 00:13:20,770 Çfarë merr shtypur këtu në fund të kryesore? 265 00:13:20,770 --> 00:13:23,020 Ka një col printuar. Unë jam shtypjen nga dy integers. 266 00:13:23,020 --> 00:13:28,010 Unë jam shtypjen nga përmbajtjen e një dhe përmbajtja e B katror kllapa 0. 267 00:13:28,010 --> 00:13:29,880 Ndalo video këtu dhe për të marrë një minutë. 268 00:13:29,880 --> 00:13:35,482 A mund të kuptoj se çfarë kjo Funksioni do të shtypura në fund? 269 00:13:35,482 --> 00:13:38,190 Shpresojmë, nëse ju kujtohet Dallimi në mes të kalojë pranë vlerës 270 00:13:38,190 --> 00:13:41,680 dhe duke kaluar duke iu referuar, kjo Problemi nuk ishte shumë i ndërlikuar për ju. 271 00:13:41,680 --> 00:13:44,130 Dhe përgjigja ju do të kanë gjetur është kjo. 272 00:13:44,130 --> 00:13:47,660 Nëse ju nuk jeni me të vërtetë i sigurt për pse se është rasti, të marrë një të dytë, 273 00:13:47,660 --> 00:13:50,620 kthehem, të shqyrtojë atë që unë ishte vetëm diskutuar në lidhje me kalimin vargjeve 274 00:13:50,620 --> 00:13:53,450 duke iu referuar, kundrejt kaluar variabla të tjerë nga vlera, 275 00:13:53,450 --> 00:13:56,680 dhe me shpresë, se do të bëjë pak më shumë kuptim. 276 00:13:56,680 --> 00:13:59,760 >> Unë jam Doug Lloyd, dhe kjo është CS50. 277 00:13:59,760 --> 00:14:01,467