1 00:00:00,000 --> 00:00:03,388 >> [REPRODUCCIÓ DE MÚSICA] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: D'acord. 4 00:00:06,020 --> 00:00:07,680 Treballar amb una sola les variables és bastant divertit. 5 00:00:07,680 --> 00:00:09,500 Però el que si volem treballar amb una gran quantitat de variables, 6 00:00:09,500 --> 00:00:12,760 però no vull tenir un munt de diferents noms volant al voltant nostre codi? 7 00:00:12,760 --> 00:00:15,980 En aquest cas, les matrius són vindrà en molt pràctic. 8 00:00:15,980 --> 00:00:19,510 Les matrius són una dada realment fonamental estructura per a qualsevol llenguatge de programació 9 00:00:19,510 --> 00:00:20,260 que utilitzarà. 10 00:00:20,260 --> 00:00:24,450 I són molt, molt útil, sobretot, com veurem, en el CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Utilitzem matrius per mantenir valors del mateix tipus de dades 12 00:00:27,870 --> 00:00:29,830 en ubicacions de memòria contigües. 13 00:00:29,830 --> 00:00:32,430 És a dir, és una de manera que podem agrupar 14 00:00:32,430 --> 00:00:35,430 un munt de nombres enters junts en memòria o un grup de caràcters 15 00:00:35,430 --> 00:00:38,270 o sura en la memòria de veritat tancar junts i treballar 16 00:00:38,270 --> 00:00:41,930 amb ells sense haver de donar a cada d'un nom propi, únic, que pot 17 00:00:41,930 --> 00:00:44,500 tornar-se un problema després d'una estona. 18 00:00:44,500 --> 00:00:48,130 >> Ara, una manera d'analogia entre matrius és pensar en el seu pal local 19 00:00:48,130 --> 00:00:49,000 el càrrec per un segon. 20 00:00:49,000 --> 00:00:51,820 Així que pas lluny de la programació i tanca els ulls 21 00:00:51,820 --> 00:00:54,120 i visualitzar en la seva ment seva oficina de correus local. 22 00:00:54,120 --> 00:00:57,160 En general, en la majoria de post oficines, hi ha un gran banc 23 00:00:57,160 --> 00:01:00,490 a apartats de correus a la paret. 24 00:01:00,490 --> 00:01:03,510 >> Una matriu és un bloc gegant de memòria contigua, 25 00:01:03,510 --> 00:01:06,120 de la mateixa manera que un correu electrònic banc a la seva oficina de correus 26 00:01:06,120 --> 00:01:11,230 és un gran espai al paret de l'oficina de correus. 27 00:01:11,230 --> 00:01:15,750 Les matrius s'han dividit en petites, idènticament blocs de mida de l'espai, 28 00:01:15,750 --> 00:01:19,930 cadascun dels quals es diu un element, en de la mateixa manera que la paret del lloc 29 00:01:19,930 --> 00:01:23,840 l'oficina s'ha dividit en petites, idènticament blocs de mida de l'espai, 30 00:01:23,840 --> 00:01:27,560 que anomenem un apartat de correus. 31 00:01:27,560 --> 00:01:31,650 Cada element de la matriu pot emmagatzemar una certa quantitat de dades, 32 00:01:31,650 --> 00:01:37,540 així com cada apartat de correus és capaç per mantenir una certa quantitat de correu. 33 00:01:37,540 --> 00:01:41,540 >> Què pot ser emmagatzemat en cada element de la matriu és variables de les mateixes dades 34 00:01:41,540 --> 00:01:45,300 tipus, tal com int o char, simplement com en la seva casella de correu, 35 00:01:45,300 --> 00:01:47,300 només es pot encaixar coses d'un tipus similar, 36 00:01:47,300 --> 00:01:50,430 com ara cartes o paquets petits. 37 00:01:50,430 --> 00:01:55,050 Finalment, podem accedir a cada element de la la matriu directament per nombre d'índex, 38 00:01:55,050 --> 00:01:59,770 de la mateixa manera que podem accedir a la nostra oficina de correus boxejar per conèixer un número de correu. 39 00:01:59,770 --> 00:02:02,750 Esperem que l'analogia l'ajuda a obtenir el cap 40 00:02:02,750 --> 00:02:05,540 entorn de la idea de matrius per analogies a una altra cosa 41 00:02:05,540 --> 00:02:08,400 que són, probablement, ja familiaritzats. 42 00:02:08,400 --> 00:02:13,182 >> En C, els elements d'una matriu són indexades a partir de 0, no des d'1. 43 00:02:13,182 --> 00:02:14,390 I això és realment important. 44 00:02:14,390 --> 00:02:18,530 I de fet, és per això que, en el CS 50, i per què els informàtics freqüents 45 00:02:18,530 --> 00:02:22,150 comptarà a partir de 0, és causa de la gran varietat de C 46 00:02:22,150 --> 00:02:24,660 indexació, que sempre comença en 0. 47 00:02:24,660 --> 00:02:28,730 Així que si una sèrie es compon de n elements, el primer element d'aquesta matriu 48 00:02:28,730 --> 00:02:32,960 es troba en l'índex 0, i l'últim element de la matriu 49 00:02:32,960 --> 00:02:36,610 es troba en l'índex n mínim 1. 50 00:02:36,610 --> 00:02:43,160 Un cop més, si hi ha n elements en la nostra matriu, l'últim índex és n almenys 1. 51 00:02:43,160 --> 00:02:46,820 >> Així que si la nostra matriu té 50 elements, els primer element es troba en l'índex 0, 52 00:02:46,820 --> 00:02:51,060 i l'últim element es troba en l'índex 49. 53 00:02:51,060 --> 00:02:53,940 Desafortunadament, o afortunadament, depenent de la seva perspectiva, 54 00:02:53,940 --> 00:02:56,170 C és molt indulgent aquí. 55 00:02:56,170 --> 00:02:59,480 No li impedirà sortir dels límits de la matriu. 56 00:02:59,480 --> 00:03:03,080 Vostè podria tenir accés almenys 3 element de la matriu 57 00:03:03,080 --> 00:03:07,400 o l'element 59 de la matriu, si el seu array només compta amb 50 elements. 58 00:03:07,400 --> 00:03:11,060 No aturarà el seu programa de compilar, però en temps d'execució, 59 00:03:11,060 --> 00:03:14,350 pot trobar-se amb un fallada de segmentació temuda 60 00:03:14,350 --> 00:03:17,460 si vostè comença a accedir a la memòria que està fora dels límits del que 61 00:03:17,460 --> 00:03:19,260 que va demanar el seu programa per donar-li. 62 00:03:19,260 --> 00:03:21,250 Així que vés amb compte. 63 00:03:21,250 --> 00:03:23,120 >> Què fa un array declaració sembla? 64 00:03:23,120 --> 00:03:26,940 Com codificar una matriu en existència com codifiquem qualsevol altra variable? 65 00:03:26,940 --> 00:03:31,250 Hi ha tres parts en una matriu declaration-- un tipus, un nom, 66 00:03:31,250 --> 00:03:31,880 i una mida. 67 00:03:31,880 --> 00:03:34,088 Això és molt similar a una declaració de variables, que 68 00:03:34,088 --> 00:03:36,970 és només un tipus i un nom, sent l'element de mida 69 00:03:36,970 --> 00:03:39,860 el cas especial d'una matriu, perquè estem rebent un munt d'ells 70 00:03:39,860 --> 00:03:41,830 al mateix temps. 71 00:03:41,830 --> 00:03:45,560 >> Així que el tipus és quin tipus de variable que vol cada element de la matriu sigui. 72 00:03:45,560 --> 00:03:47,150 No vull que una matriu d'enters? 73 00:03:47,150 --> 00:03:49,010 Llavors, el tipus de dades ha de ser int. 74 00:03:49,010 --> 00:03:51,760 Vols que sigui un sèrie de dobles o flotadors? 75 00:03:51,760 --> 00:03:54,545 El tipus de dades ha de ser el doble o surar. 76 00:03:54,545 --> 00:03:56,420 El nom és el que vol cridar a la seva matriu. 77 00:03:56,420 --> 00:04:00,970 Què vols per nomenar aquest gegant banc de nombres sencers o flotadors o caràcters 78 00:04:00,970 --> 00:04:03,250 o dobles, o el que vostè té? 79 00:04:03,250 --> 00:04:04,700 Què vols dir-? 80 00:04:04,700 --> 00:04:06,110 Explica per si mateix bonic. 81 00:04:06,110 --> 00:04:08,610 >> Finalment, la mida, que va dins claudàtors, 82 00:04:08,610 --> 00:04:12,180 és el nombre d'elements que ho faria com la matriu per contenir. 83 00:04:12,180 --> 00:04:13,530 Quants nombres enters és el que vols? 84 00:04:13,530 --> 00:04:15,570 Quantes carrosses és el que vols? 85 00:04:15,570 --> 00:04:19,070 >> Així, per exemple, int qualificacions dels estudiants 40. 86 00:04:19,070 --> 00:04:26,020 Això declara una matriu anomenada Estudiant qualificacions, que consta de 40 nombres enters. 87 00:04:26,020 --> 00:04:28,180 Explica per si mateix bonic, espero. 88 00:04:28,180 --> 00:04:29,330 Heus aquí un altre exemple. 89 00:04:29,330 --> 00:04:31,560 Preus del menú dobles agost. 90 00:04:31,560 --> 00:04:34,610 Això crea una matriu anomenada Els preus del menú, que consisteix 91 00:04:34,610 --> 00:04:38,300 espai a la memòria durant vuit dobles. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Si vostè pensa en cada element d'una matriu de tipus de tipus de dades, 94 00:04:45,750 --> 00:04:49,860 Així, per exemple, un únic element de una matriu de tipus int, de la mateixa manera que 95 00:04:49,860 --> 00:04:52,770 pensaria en qualsevol altre variable de tipus int, 96 00:04:52,770 --> 00:04:56,440 totes les operacions familiars que ens discutit prèviament en les Operacions 97 00:04:56,440 --> 00:04:58,270 vídeo tindrà sentit. 98 00:04:58,270 --> 00:05:01,620 Així que aquí, podríem declarar una matriu de booleans anomenats Truthtable, 99 00:05:01,620 --> 00:05:05,590 que consisteix en peces per a 10 Booleans. 100 00:05:05,590 --> 00:05:09,650 >> I llavors, igual que vam poder assignar un valor a qualsevol altra variable de tipus 101 00:05:09,650 --> 00:05:13,470 Boole, podríem dir alguna cosa com Truthtable claudàtor 102 00:05:13,470 --> 00:05:18,040 2, que és la forma indicada, quin element de la taula de veritat? 103 00:05:18,040 --> 00:05:20,350 El tercer element de la taula de veritat, perquè recordin, 104 00:05:20,350 --> 00:05:21,800 estem explicant des de 0. 105 00:05:21,800 --> 00:05:25,690 Així que aquesta és la forma en què indiquem el tercer element de la taula de veritat. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 és igual a falsa, de la mateixa manera que podríem declare-- 107 00:05:28,680 --> 00:05:33,560 o podríem cedir, més aviat, qualsevol Variable de tipus booleà és fals. 108 00:05:33,560 --> 00:05:35,050 >> També podem utilitzar-lo en condicions. 109 00:05:35,050 --> 00:05:39,000 si (truthtable 7 == true), és a dir, 110 00:05:39,000 --> 00:05:42,370 si el vuitè element de Truthtable és cert, 111 00:05:42,370 --> 00:05:46,760 potser volem imprimir un missatge per a l'usuari, printf ("TRUE! n");. 112 00:05:46,760 --> 00:05:50,290 Això ens fa dir Truthtable 10 és igual a la veritable, no? 113 00:05:50,290 --> 00:05:53,590 Bé, jo puc, però és bastant perillós, perquè recordin, 114 00:05:53,590 --> 00:05:56,260 tenim un arranjament de 10 Booleans. 115 00:05:56,260 --> 00:06:02,340 Així que el major índex que el compilador ens ha donat és de 9. 116 00:06:02,340 --> 00:06:06,010 >> Aquest programa es compilarà, però si alguna cosa més en la memòria 117 00:06:06,010 --> 00:06:09,110 existeix on ens faria esperar Truthtable 10 per a anar-hi, 118 00:06:09,110 --> 00:06:13,980 podríem patir una fallada de segmentació. Nosaltres podria sortir-se amb la seva, però en general, 119 00:06:13,980 --> 00:06:14,710 bastant perillós. 120 00:06:14,710 --> 00:06:19,759 Així que el que estic fent aquí és C jurídica, però no necessàriament la millor jugada. 121 00:06:19,759 --> 00:06:22,300 Ara, quan es declara i inicialitzar una matriu de forma simultània, 122 00:06:22,300 --> 00:06:23,960 hi ha realment una bonica sintaxi especial que 123 00:06:23,960 --> 00:06:26,250 pot utilitzar per omplir la matriu amb els seus valors inicials. 124 00:06:26,250 --> 00:06:30,130 Es pot aconseguir molest declarar una matriu de mida 100, 125 00:06:30,130 --> 00:06:33,430 i després he de dir, l'element 0 és igual a això; element 1 és igual a això; 126 00:06:33,430 --> 00:06:34,850 element 2 és igual que. 127 00:06:34,850 --> 00:06:36,370 Què és el punt, no? 128 00:06:36,370 --> 00:06:39,470 >> Si es tracta d'una petita matriu, podria fer alguna cosa com això. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 és igual oberta claudàtor i després coma 130 00:06:44,360 --> 00:06:48,060 separar la llista d'elements que vostè vol posar en la matriu. 131 00:06:48,060 --> 00:06:50,520 A continuació, tanca coma claudàtor. 132 00:06:50,520 --> 00:06:53,910 Això crea una gran varietat de mida de tres anomenats Truthtable, 133 00:06:53,910 --> 00:06:56,090 amb elements falsos, veritable i cert. 134 00:06:56,090 --> 00:06:59,270 I de fet, la creació d'instàncies sintaxi que tinc aquí és 135 00:06:59,270 --> 00:07:03,350 exactament el mateix que fer la sintaxi element individual a continuació. 136 00:07:03,350 --> 00:07:09,380 Aquestes dues formes de codificació faria produir la mateixa gamma exacta. 137 00:07:09,380 --> 00:07:11,740 >> De la mateixa manera, podríem iterar sobretot dels elements 138 00:07:11,740 --> 00:07:15,400 d'una matriu mitjançant un bucle, que, al seu De fet, és un molt fortament recomanat 139 00:07:15,400 --> 00:07:16,790 a casa d'exercicis. 140 00:07:16,790 --> 00:07:20,720 Com es crea una matriu de 100 nombres enters, on 141 00:07:20,720 --> 00:07:23,477 cada element de la matriu és el seu índex? 142 00:07:23,477 --> 00:07:26,560 Així, per exemple, tenim una gamma de 100 nombres enters, i en el primer element, 143 00:07:26,560 --> 00:07:27,790 volem posar 0. 144 00:07:27,790 --> 00:07:29,810 En el segon element, volem posar 1. 145 00:07:29,810 --> 00:07:33,319 En el tercer element, volem posar 2; i així successivament i així successivament. 146 00:07:33,319 --> 00:07:35,360 Aquesta és una molt bona a casa d'exercicis per fer això. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Aquí, no es veu com també ha canviat molt. 149 00:07:40,220 --> 00:07:44,170 Però cal notar que entre el claudàtors, aquesta vegada, 150 00:07:44,170 --> 00:07:45,830 De fet, he omès el nombre. 151 00:07:45,830 --> 00:07:48,000 Si utilitzeu aquest mateix instanciació especial 152 00:07:48,000 --> 00:07:50,380 sintaxi per crear una matriu, que en realitat no ho fa 153 00:07:50,380 --> 00:07:53,491 cal indicar la mida de la matriu per endavant. 154 00:07:53,491 --> 00:07:55,740 El compilador és prou intel·ligent saber que en realitat 155 00:07:55,740 --> 00:07:58,980 volen una matriu de mida 3, perquè vostè posa tres elements 156 00:07:58,980 --> 00:08:00,640 a la dreta del signe igual. 157 00:08:00,640 --> 00:08:04,140 Si posar quatre, tindria que donada una taula de veritat de la mida de quatre; 158 00:08:04,140 --> 00:08:06,270 i així successivament i així successivament. 159 00:08:06,270 --> 00:08:09,380 >> Les matrius no estan restringides a un sol dimensió, que està molt bé. 160 00:08:09,380 --> 00:08:12,000 En realitat pot tenir fins especificadors secundaris com vulgui. 161 00:08:12,000 --> 00:08:16,470 Així per exemple, si voleu crear un tauler per al joc cuirassat, que, 162 00:08:16,470 --> 00:08:20,910 si alguna vegada jugat, és un joc que és jugat amb clavilles en el 10 per 10 reixeta, 163 00:08:20,910 --> 00:08:22,450 podria crear una sèrie com aquesta. 164 00:08:22,450 --> 00:08:26,030 Es podria dir Bool cuirassat claudàtor 10 165 00:08:26,030 --> 00:08:29,590 quadrat tancat claudàtor suport de 10 tanca claudàtors. 166 00:08:29,590 --> 00:08:32,710 >> I després, es pot optar per interpretar això en la seva ment com un 10 167 00:08:32,710 --> 00:08:35,576 per 10 reixeta de cel·les. 168 00:08:35,576 --> 00:08:37,409 Ara, de fet, en la memòria, el que realment fa justament 169 00:08:37,409 --> 00:08:42,440 sent un element 100, dimensional única. 170 00:08:42,440 --> 00:08:46,070 I això, de fet, va per si tenir tres dimensions o quatre o cinc. 171 00:08:46,070 --> 00:08:49,420 En realitat, només fa multiplicar tota la indices-- 172 00:08:49,420 --> 00:08:51,130 o la totalitat de la mida specifiers-- junts, 173 00:08:51,130 --> 00:08:53,480 i que acaba d'obtenir un unidimensional array d'aquesta mida. 174 00:08:53,480 --> 00:08:57,090 >> Però en termes d'organització i la visualització i la percepció humana, 175 00:08:57,090 --> 00:08:59,240 pot ser molt més fàcil per treballar amb una quadrícula 176 00:08:59,240 --> 00:09:02,980 si vostè està treballant en un joc com Tic-tac-dit del peu o del cuirassat, 177 00:09:02,980 --> 00:09:05,179 o alguna cosa per l'estil. 178 00:09:05,179 --> 00:09:06,970 És una gran abstracció, en lloc de tenir 179 00:09:06,970 --> 00:09:09,340 pensar en un Tic-tac-toe tauler com una línia de nou anys 180 00:09:09,340 --> 00:09:13,810 quadrats o un tauler cuirassat com una línia de 100 places. 181 00:09:13,810 --> 00:09:16,010 Un 10 per 10 de reixeta o de tres A les tres de la reixeta és, probablement, 182 00:09:16,010 --> 00:09:17,225 molt més fàcil de percebre. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Ara, alguna cosa realment important sobre les matrius. 185 00:09:22,280 --> 00:09:25,950 Podem tractar a cada individu element de la matriu com una variable. 186 00:09:25,950 --> 00:09:27,700 Vam veure que abans quan estàvem assignant 187 00:09:27,700 --> 00:09:32,240 el valor Fidel a certs booleans o posar-les a prova en els condicionals. 188 00:09:32,240 --> 00:09:35,960 Però no podem tractar tot arrays si mateixos com a variables. 189 00:09:35,960 --> 00:09:41,760 No podem, per exemple, assignar una matriu a una altra matriu mitjançant l'assignació 190 00:09:41,760 --> 00:09:42,930 operador. 191 00:09:42,930 --> 00:09:44,640 No és C. legal 192 00:09:44,640 --> 00:09:47,920 >> Si volem, per exemple-- el estaríem fent en aquest exemple 193 00:09:47,920 --> 00:09:50,200 seria copiar una matriu en una altra. 194 00:09:50,200 --> 00:09:53,810 Si volem fer, que en realitat necessitarà utilitzar un bucle per copiar 195 00:09:53,810 --> 00:09:56,550 cada element individual d'una en una. 196 00:09:56,550 --> 00:09:58,700 Sé que és una mica lent. 197 00:09:58,700 --> 00:10:04,022 >> Així, per exemple, si tinguéssim aquest parell de línies de codi, funcionaria això? 198 00:10:04,022 --> 00:10:05,230 Bé, no, no ho faria, no? 199 00:10:05,230 --> 00:10:07,860 Com que estem tractant per assignar els aliments a la barra. 200 00:10:07,860 --> 00:10:09,860 Això no va a treballar, perquè és una matriu, 201 00:10:09,860 --> 00:10:13,130 i que acabem de descriure que això no és legal C. 202 00:10:13,130 --> 00:10:15,580 >> En canvi, si volem copiar el contingut dels aliments 203 00:10:15,580 --> 00:10:18,070 a la barra, que és el que que estem tractant de fer aquí, 204 00:10:18,070 --> 00:10:19,970 necessitaríem una sintaxi com aquesta. 205 00:10:19,970 --> 00:10:24,170 Tenim un bucle for que va de J és igual a 0 fins a 5, 206 00:10:24,170 --> 00:10:28,390 i incrementem J en cada iteració de el llaç i elements d'assignar l'estil. 207 00:10:28,390 --> 00:10:33,360 Això resultaria en bar també ser un, dos, tres, quatre, cinc, 208 00:10:33,360 --> 00:10:36,730 però ho hem de fer aquesta mateixa manera lenta element per element, 209 00:10:36,730 --> 00:10:40,009 en lloc de amb només la còpia de tota la matriu. 210 00:10:40,009 --> 00:10:42,050 En una altra programació idiomes, les més modernes, 211 00:10:42,050 --> 00:10:45,610 pot, de fet, fer just així de simple és igual a la sintaxi. 212 00:10:45,610 --> 00:10:49,620 Però C, per desgràcia, estem no se'ls permet fer això. 213 00:10:49,620 --> 00:10:52,026 >> Ara, hi ha una altra cosa que vull esmentar 214 00:10:52,026 --> 00:10:54,650 sobre les matrius que poden ser una mica mica complicat la primera vegada que 215 00:10:54,650 --> 00:10:55,990 treballar amb ells. 216 00:10:55,990 --> 00:10:59,860 Hem discutit en un vídeo sobre l'abast variable 217 00:10:59,860 --> 00:11:04,940 que la majoria de les variables en C, quan es diu en funcions, es passen per valor. 218 00:11:04,940 --> 00:11:08,620 Te'n recordes del que significa per passar una mica de valor? 219 00:11:08,620 --> 00:11:12,570 Significa que estem fent una còpia de la variable que està sent aprovada en. 220 00:11:12,570 --> 00:11:16,290 La funció destinatari de la trucada, la funció de això està rebent la variable, 221 00:11:16,290 --> 00:11:17,730 no rep la mateixa variable. 222 00:11:17,730 --> 00:11:20,850 Aconsegueix el seu propi local, còpia de la mateixa per treballar. 223 00:11:20,850 --> 00:11:24,070 >> Matrius, per descomptat, ho fan No seguir aquesta regla. 224 00:11:24,070 --> 00:11:27,600 Més aviat, el que anomenem present es passa per referència. 225 00:11:27,600 --> 00:11:31,360 El destinatari de la trucada realitat Rep la matriu. 226 00:11:31,360 --> 00:11:34,207 No rep el seu pròpia còpia local de la mateixa. 227 00:11:34,207 --> 00:11:36,040 I si ho penses ell, això té sentit. 228 00:11:36,040 --> 00:11:39,750 Si les matrius són realment gran, pren molt de temps i esforç 229 00:11:39,750 --> 00:11:44,470 per fer una còpia d'una sèrie de 100 o 1.000 o 10.000 elements, 230 00:11:44,470 --> 00:11:48,290 que no val la pena per a un funcionar per rebre una còpia de la mateixa, 231 00:11:48,290 --> 00:11:51,037 fer un treball amb ell, i després només es pot fer amb la còpia; 232 00:11:51,037 --> 00:11:53,120 no necessita tenir que donant voltes més. 233 00:11:53,120 --> 00:11:54,710 >> A causa de que les matrius són alguns voluminós i molest, 234 00:11:54,710 --> 00:11:56,001 acabem de passar per referència. 235 00:11:56,001 --> 00:12:01,210 Només confiem que la funció que, no trencar res. 236 00:12:01,210 --> 00:12:03,010 Així es posa de fet la matriu. 237 00:12:03,010 --> 00:12:05,290 No pot ser la seva pròpia còpia local de la mateixa. 238 00:12:05,290 --> 00:12:07,170 >> Llavors, què vol dir això, llavors, quan el destinatari de la trucada 239 00:12:07,170 --> 00:12:08,970 manipula elements de la matriu? 240 00:12:08,970 --> 00:12:10,780 Què passa? 241 00:12:10,780 --> 00:12:13,210 Per ara, anem a glossem sobre què exactament això 242 00:12:13,210 --> 00:12:15,320 succeeix, per què matrius es passen per referència 243 00:12:15,320 --> 00:12:17,810 i tota la resta es passa per valor. 244 00:12:17,810 --> 00:12:20,470 Però et prometo, ho farem retornar i li donarà la resposta 245 00:12:20,470 --> 00:12:23,750 a això en un vídeo més tard. 246 00:12:23,750 --> 00:12:28,110 >> Heus aquí un exercici més per a vostè abans d'acabar les coses en matrius. 247 00:12:28,110 --> 00:12:31,400 El paquet de programes aquí, això és no particularment bon estil, 248 00:12:31,400 --> 00:12:33,400 simplement vaig a fer aquesta advertència. 249 00:12:33,400 --> 00:12:36,660 Cap comentari per aquí, que és bastant dolenta forma. 250 00:12:36,660 --> 00:12:39,750 Però és només perquè jo volia ser capaç d'adaptar-se a tot a la pantalla. 251 00:12:39,750 --> 00:12:44,360 >> A la part superior, es pot veure que tinc dues declaracions de funcions per a la matriu de conjunts 252 00:12:44,360 --> 00:12:45,820 i establir int. 253 00:12:45,820 --> 00:12:49,680 Setembre varietat aparentment pren una matriu de quatre sencers com la seva entrada. 254 00:12:49,680 --> 00:12:52,767 I conjunt int aparentment presa un sol sencer com la seva entrada. 255 00:12:52,767 --> 00:12:54,350 Però dos d'ells no tenen una sortida. 256 00:12:54,350 --> 00:12:57,689 La sortida, el retorn escrigui, de cada un és nul·la. 257 00:12:57,689 --> 00:12:59,480 En principal, tenim una parell de línies de codi. 258 00:12:59,480 --> 00:13:02,730 Declarem una variable sencera denominat A i assignar-li el valor 10. 259 00:13:02,730 --> 00:13:07,080 Declarem una matriu de quatre sencers anomenat B i assignar els elements 0, 1, 260 00:13:07,080 --> 00:13:08,730 2, i 3, respectivament. 261 00:13:08,730 --> 00:13:12,190 Llavors, tenim una crida a establir int i una crida per establir matriu. 262 00:13:12,190 --> 00:13:15,910 Les definicions de la matriu de conjunts i el conjunt de int estan allà baix, a la part inferior. 263 00:13:15,910 --> 00:13:17,640 >> I així, un cop més, li demano a la pregunta. 264 00:13:17,640 --> 00:13:20,770 El que s'imprimeix aquí al final de Main? 265 00:13:20,770 --> 00:13:23,020 Hi ha una col impressió. Estic impressió de dos enters. 266 00:13:23,020 --> 00:13:28,010 Estic imprimir el contingut d'i el contingut de B quadrat suport de 0. 267 00:13:28,010 --> 00:13:29,880 Pausa el vídeo aquí i prendre un minut. 268 00:13:29,880 --> 00:13:35,482 Pots imaginar el que això funció imprimirà al final? 269 00:13:35,482 --> 00:13:38,190 Esperem que, si vostè recorda la distinció entre passar per valor 270 00:13:38,190 --> 00:13:41,680 i que passa per referència, aquesta problema no era massa difícil per a tu. 271 00:13:41,680 --> 00:13:44,130 I la resposta que ho faria he trobat és això. 272 00:13:44,130 --> 00:13:47,660 Si vostè no està realment segur pel que fa a ¿Per què aquest és el cas, prendre un segon, 273 00:13:47,660 --> 00:13:50,620 tornar, reviso el que jo era només discutir sobre passar arrays 274 00:13:50,620 --> 00:13:53,450 per referència, que passa davant altres variables de valor, 275 00:13:53,450 --> 00:13:56,680 i és d'esperar, que farà una mica més de sentit. 276 00:13:56,680 --> 00:13:59,760 >> Sóc Doug Lloyd, i això és CS50. 277 00:13:59,760 --> 00:14:01,467