1 00:00:00,000 --> 00:00:03,388 >> [MUZYKI] 2 00:00:03,388 --> 00:00:05,104 3 00:00:05,104 --> 00:00:06,020 DOUG LLOYD: Wszystko w porządku. 4 00:00:06,020 --> 00:00:07,680 Praca z pojedynczym Zmienne jest całkiem zabawne. 5 00:00:07,680 --> 00:00:09,500 Ale co, jeśli chcemy pracować z wieloma zmiennymi, 6 00:00:09,500 --> 00:00:12,760 ale nie chcemy mieć kilka różne nazwy latające wokół naszego kodu? 7 00:00:12,760 --> 00:00:15,980 W tym przypadku, tablice są przyjdzie w naprawdę przydatne. 8 00:00:15,980 --> 00:00:19,510 Tablice są naprawdę fundamentalne dane Struktura dla każdego języka programowania 9 00:00:19,510 --> 00:00:20,260 że będzie korzystać. 10 00:00:20,260 --> 00:00:24,450 I są naprawdę użyteczne, Szczególnie, jak zobaczymy, w CS 50. 11 00:00:24,450 --> 00:00:27,870 >> Używamy tablice do przechowywania Wartości danych tego samego typu 12 00:00:27,870 --> 00:00:29,830 w sąsiadujących komórek pamięci. 13 00:00:29,830 --> 00:00:32,430 To znaczy, że jest to sposób, w jaki możemy zgrupować 14 00:00:32,430 --> 00:00:35,430 kilka liczb całkowitych razem w pamięci lub kilka znaków 15 00:00:35,430 --> 00:00:38,270 lub pływa w pamięci bardzo blisko siebie i pracy 16 00:00:38,270 --> 00:00:41,930 z nich bez podania każdego jedną swoją unikalną nazwę, która może 17 00:00:41,930 --> 00:00:44,500 uzyskać kłopotliwe po chwili. 18 00:00:44,500 --> 00:00:48,130 >> Teraz jeden sposób analogizować tablice jest, aby myśleć o Twoim poście 19 00:00:48,130 --> 00:00:49,000 biuro na sekundę. 20 00:00:49,000 --> 00:00:51,820 Więc krok od programowania i po prostu zamknąć oczy 21 00:00:51,820 --> 00:00:54,120 i wizualizacji w głowie urzędzie pocztowym. 22 00:00:54,120 --> 00:00:57,160 Zwykle, w większości postu biura, istnieje duży bank 23 00:00:57,160 --> 00:01:00,490 a skrzynki pocztowe na ścianie. 24 00:01:00,490 --> 00:01:03,510 >> Tablica jest gigantyczny blok z pamięci ciągłej, 25 00:01:03,510 --> 00:01:06,120 w ten sam sposób, że poczta Bank w swojej poczcie 26 00:01:06,120 --> 00:01:11,230 Jest to duża przestrzeń na Ściana poczcie. 27 00:01:11,230 --> 00:01:15,750 Tablice zostały podzielone na małe, identycznie wielkości bloki przestrzeni, 28 00:01:15,750 --> 00:01:19,930 z których każdy jest nazywany elementem w w ten sam sposób, że ściany postu 29 00:01:19,930 --> 00:01:23,840 Biuro został podzielony na małe, identycznie wielkości bloki przestrzeni, 30 00:01:23,840 --> 00:01:27,560 które nazywamy skrzynkę pocztową. 31 00:01:27,560 --> 00:01:31,650 Każdy element tablicy może przechowywać pewną ilość danych, 32 00:01:31,650 --> 00:01:37,540 tak jak każda skrytka pocztowa jest w stanie posiadać pewną ilość mailem. 33 00:01:37,540 --> 00:01:41,540 >> Jakie mogą być przechowywane w każdym z elementów tablica jest zmienne tego samego danych 34 00:01:41,540 --> 00:01:45,300 typu, takich jak int lub char, tylko jak w skrzynce pocztowej, 35 00:01:45,300 --> 00:01:47,300 można zmieścić tylko rzeczy podobnego typu, 36 00:01:47,300 --> 00:01:50,430 takich jak liter lub małych opakowaniach. 37 00:01:50,430 --> 00:01:55,050 Wreszcie, możemy uzyskać dostęp do każdego elementu tablica bezpośrednio numer indeksu, 38 00:01:55,050 --> 00:01:59,770 jak możemy wejść na naszą pocztę box znając jego numer skrzynki. 39 00:01:59,770 --> 00:02:02,750 Mamy nadzieję, że analogia pomaga uzyskać głowę 40 00:02:02,750 --> 00:02:05,540 wokół idei macierzy przez analogizing do czegoś innego 41 00:02:05,540 --> 00:02:08,400 które są prawdopodobnie już znane. 42 00:02:08,400 --> 00:02:13,182 >> W C, elementy tablicy są indeksowane począwszy od 0, nie od 1. 43 00:02:13,182 --> 00:02:14,390 I to jest bardzo ważne. 44 00:02:14,390 --> 00:02:18,530 A w rzeczywistości, to dlaczego my, w CS 50, I dlaczego informatycy często 45 00:02:18,530 --> 00:02:22,150 liczy się od 0, to ze względu na tablicy z C. 46 00:02:22,150 --> 00:02:24,660 indeksowania, która zawsze zaczyna się od 0. 47 00:02:24,660 --> 00:02:28,730 Więc jeśli tablica składa się z n elementów, pierwszy element tej tablicy 48 00:02:28,730 --> 00:02:32,960 znajduje się przy indeksie 0, a ostatni element tablicy 49 00:02:32,960 --> 00:02:36,610 znajduje się na indeksie n minus 1. 50 00:02:36,610 --> 00:02:43,160 Ponownie, jeśli nie ma n elementów w naszym tablica, ostatni indeks jest n minus 1. 51 00:02:43,160 --> 00:02:46,820 >> Więc jeśli nasza tablica ma 50 elementów, Pierwszy element znajduje się w indeksie 0, 52 00:02:46,820 --> 00:02:51,060 i ostatni element znajduje się wskaźnik 49. 53 00:02:51,060 --> 00:02:53,940 Niestety, lub na szczęście, zależności od punktu widzenia, 54 00:02:53,940 --> 00:02:56,170 C jest tutaj bardzo wyrozumiali. 55 00:02:56,170 --> 00:02:59,480 To nie przeszkodzi wychodzi z granic swojej tablicy. 56 00:02:59,480 --> 00:03:03,080 Można uzyskać dostęp do minusa 3 element macierzy 57 00:03:03,080 --> 00:03:07,400 lub 59. elementem macierzy, jeśli tablica ma tylko 50 elementów. 58 00:03:07,400 --> 00:03:11,060 To nie zatrzyma program z kompilacji, ale w czasie wykonywania, 59 00:03:11,060 --> 00:03:14,350 może napotkasz bał winy segmentacji 60 00:03:14,350 --> 00:03:17,460 jeśli zaczniesz dostępu do pamięci które znajduje się poza granicami tego, co 61 00:03:17,460 --> 00:03:19,260 pytasz swój program, aby dać. 62 00:03:19,260 --> 00:03:21,250 Więc należy być ostrożnym. 63 00:03:21,250 --> 00:03:23,120 >> Co tablicę Deklaracja wygląda? 64 00:03:23,120 --> 00:03:26,940 Jak możemy zakodować tablicę do istnienia jak możemy zakodować dowolnej innej zmiennej? 65 00:03:26,940 --> 00:03:31,250 Istnieją trzy części do tablicy declaration-- typ, nazwa, 66 00:03:31,250 --> 00:03:31,880 i rozmiar. 67 00:03:31,880 --> 00:03:34,088 Jest to bardzo podobne do deklaracja zmiennej, która 68 00:03:34,088 --> 00:03:36,970 jest po prostu rodzaj i nazwę, element rozmiar jest 69 00:03:36,970 --> 00:03:39,860 szczególny przypadek na tablicy, dlatego, że są coraz kilka z nich 70 00:03:39,860 --> 00:03:41,830 w tym samym czasie. 71 00:03:41,830 --> 00:03:45,560 >> Więc jest to typ zmiennej, jakie można aby każdy element tablicy będzie. 72 00:03:45,560 --> 00:03:47,150 Czy chcesz go do tablicy liczb całkowitych? 73 00:03:47,150 --> 00:03:49,010 Wtedy twój typ danych powinien być int. 74 00:03:49,010 --> 00:03:51,760 Czy ma to być Tablica deblu lub pływaków? 75 00:03:51,760 --> 00:03:54,545 Typ danych powinna być dwukrotnie lub float. 76 00:03:54,545 --> 00:03:56,420 Nazwa to co masz Aby połączyć się z tablicy. 77 00:03:56,420 --> 00:04:00,970 Co chcesz, aby wymienić ten gigant bank liczb całkowitych lub pływaki lub znaków 78 00:04:00,970 --> 00:04:03,250 lub dwu, lub cokolwiek co? 79 00:04:03,250 --> 00:04:04,700 Co chcesz to nazwać? 80 00:04:04,700 --> 00:04:06,110 Dość wymowne. 81 00:04:06,110 --> 00:04:08,610 >> Wreszcie, rozmiar, który jedzie wewnątrz nawiasów kwadratowych, 82 00:04:08,610 --> 00:04:12,180 jest, jak wiele elementów byś jak swoją tablicę do przechowywania. 83 00:04:12,180 --> 00:04:13,530 Ile liczb całkowitych chcesz? 84 00:04:13,530 --> 00:04:15,570 Jak wielu pływaków chcesz? 85 00:04:15,570 --> 00:04:19,070 >> Tak na przykład, int klas 40 uczniów. 86 00:04:19,070 --> 00:04:26,020 Ten deklaruje tablicę o nazwie Student gatunki, które składa się z 40 całkowitymi. 87 00:04:26,020 --> 00:04:28,180 Dość wymowne, mam nadzieję. 88 00:04:28,180 --> 00:04:29,330 Oto kolejny przykład. 89 00:04:29,330 --> 00:04:31,560 Podwójne menu ceny 8. 90 00:04:31,560 --> 00:04:34,610 To tworzy tablicę o nazwie Menu ceny, które składa się 91 00:04:34,610 --> 00:04:38,300 miejsca w pamięci do ośmiu dwuosobowych. 92 00:04:38,300 --> 00:04:42,000 93 00:04:42,000 --> 00:04:45,750 >> Jeśli uważasz, że każdy element z tablicy typu danych typu, 94 00:04:45,750 --> 00:04:49,860 Tak na przykład, jeden z elementów tablicę typu int, w ten sam sposób 95 00:04:49,860 --> 00:04:52,770 by myśleć o jakichkolwiek innych zmienna typu int, 96 00:04:52,770 --> 00:04:56,440 wszystkie znane operacje, że my omówione wcześniej w działalności 97 00:04:56,440 --> 00:04:58,270 film będzie sensu. 98 00:04:58,270 --> 00:05:01,620 Więc, możemy zadeklarować tablicę wartości logicznych zwanych Truthtable, 99 00:05:01,620 --> 00:05:05,590 który składa się z pokoju do 10 wartości logiczne. 100 00:05:05,590 --> 00:05:09,650 >> A potem, tak jak moglibyśmy przypisać wartość do każdej innej zmiennej typu 101 00:05:09,650 --> 00:05:13,470 Boolean, możemy coś powiedzieć jak Truthtable nawiasach kwadratowych 102 00:05:13,470 --> 00:05:18,040 2, którym jest, jak to wskazuje, którego elementem tabeli prawdy? 103 00:05:18,040 --> 00:05:20,350 Trzecim elementem Tabela prawdy, bo pamiętam, 104 00:05:20,350 --> 00:05:21,800 liczymy od 0. 105 00:05:21,800 --> 00:05:25,690 Tak, to w jaki sposób wskazywać Trzeci element tabeli prawdy. 106 00:05:25,690 --> 00:05:28,680 Truthtable 2 równa się fałszywe, jak możemy declare-- 107 00:05:28,680 --> 00:05:33,560 albo możemy przypisać, a każdy Zmienna typu Boolean się fałszywe. 108 00:05:33,560 --> 00:05:35,050 >> Możemy również użyć go w warunkach. 109 00:05:35,050 --> 00:05:39,000 if (truthtable 7 == prawda), to znaczy, 110 00:05:39,000 --> 00:05:42,370 Jeżeli element ósmy z Truthtable jest prawdą, 111 00:05:42,370 --> 00:05:46,760 Może chcemy wydrukować wiadomość dla użytkownika, printf ("n PRAWDA!") ;. 112 00:05:46,760 --> 00:05:50,290 To powoduje, że mówią Truthtable 10 równa się prawdziwe, prawda? 113 00:05:50,290 --> 00:05:53,590 Cóż, mogę, ale to dość niebezpieczne, bo pamiętam, 114 00:05:53,590 --> 00:05:56,260 mamy tablicę 10 wartości logiczne. 115 00:05:56,260 --> 00:06:02,340 Więc najwyższy wskaźnik, że Kompilator dał nam jest 9. 116 00:06:02,340 --> 00:06:06,010 >> Ten program zostanie skompilowany, ale czy coś innego w pamięci 117 00:06:06,010 --> 00:06:09,110 istnieje, gdzie będzie spodziewać Truthtable 10 przejść, 118 00:06:09,110 --> 00:06:13,980 moglibyśmy ponieść winy segmentacji. My może uciec z nim, ale w ogóle, 119 00:06:13,980 --> 00:06:14,710 dość niebezpieczne. 120 00:06:14,710 --> 00:06:19,759 Więc co tu robię to C prawnych, ale niekoniecznie najlepszy pojedynek. 121 00:06:19,759 --> 00:06:22,300 Teraz, kiedy deklarujemy i zainicjować tablicę jednocześnie, 122 00:06:22,300 --> 00:06:23,960 Jest rzeczywiście dość specjalna składnia, że ​​cię 123 00:06:23,960 --> 00:06:26,250 można użyć, aby wypełnić tablicę z jego wartości wyjściowych. 124 00:06:26,250 --> 00:06:30,130 Może się kłopotliwe zadeklarować tablicę o rozmiarze 100, 125 00:06:30,130 --> 00:06:33,430 i muszę powiedzieć, element 0 równa się to; Element 1 równa się to; 126 00:06:33,430 --> 00:06:34,850 Element 2 dorównuje. 127 00:06:34,850 --> 00:06:36,370 Jaki jest sens, prawda? 128 00:06:36,370 --> 00:06:39,470 >> Jeśli jest to mała tablica, ty mógłby zrobić coś takiego. 129 00:06:39,470 --> 00:06:44,360 Bool truthtable 3 równa otwarta nawias klamrowy a następnie przecinek 130 00:06:44,360 --> 00:06:48,060 oddzielić listę elementów które chcesz umieścić w tablicy. 131 00:06:48,060 --> 00:06:50,520 Następnie zamknij nawias klamrowy średnik. 132 00:06:50,520 --> 00:06:53,910 To tworzy tablicę rozmiar trzy nazywa Truthtable, 133 00:06:53,910 --> 00:06:56,090 z elementami fałszywe, prawdziwe i prawdziwe. 134 00:06:56,090 --> 00:06:59,270 I w rzeczywistości instancji Składnia Mam tu jest 135 00:06:59,270 --> 00:07:03,350 dokładnie tak samo jak robią to Pojedynczy element składni poniżej. 136 00:07:03,350 --> 00:07:09,380 Te dwa sposoby kodowania would Produkujemy dokładnie tę samą tablicę. 137 00:07:09,380 --> 00:07:11,740 >> Podobnie, można iterujemy na wszystkich elementach 138 00:07:11,740 --> 00:07:15,400 tablicy za pomocą pętli, które, w Fakt, jest bardzo zalecane 139 00:07:15,400 --> 00:07:16,790 at-home ćwiczenia. 140 00:07:16,790 --> 00:07:20,720 Jak stworzyć tablicę 100 całkowite, w których 141 00:07:20,720 --> 00:07:23,477 każdy element tablicy jest jej indeks? 142 00:07:23,477 --> 00:07:26,560 Tak na przykład, mamy tablicę 100 całkowitymi, oraz w pierwszym elemencie 143 00:07:26,560 --> 00:07:27,790 chcemy umieścić 0. 144 00:07:27,790 --> 00:07:29,810 W drugim elemencie, chcemy umieścić 1. 145 00:07:29,810 --> 00:07:33,319 W trzecim elementem, chcemy umieścić 2; i tak dalej, i tak dalej. 146 00:07:33,319 --> 00:07:35,360 To jest naprawdę dobry at-home ćwiczenia, aby to zrobić. 147 00:07:35,360 --> 00:07:38,190 148 00:07:38,190 --> 00:07:40,220 >> Tutaj, to nie wygląda jak za dużo się nie zmieniło. 149 00:07:40,220 --> 00:07:44,170 Ale zauważmy, że w między nawiasy kwadratowe, tym razem, 150 00:07:44,170 --> 00:07:45,830 Ja właściwie pominięte numer. 151 00:07:45,830 --> 00:07:48,000 Jeśli używasz tego bardzo Specjalny instancji 152 00:07:48,000 --> 00:07:50,380 Składnia chcą tworzyć tablica, to faktycznie nie 153 00:07:50,380 --> 00:07:53,491 należy wskazać wielkość tablicy wcześniej. 154 00:07:53,491 --> 00:07:55,740 Kompilator jest wystarczająco inteligentny, wiedzieć, że rzeczywiście 155 00:07:55,740 --> 00:07:58,980 chcą tablicę o rozmiarach 3, ponieważ można umieścić trzy elementy 156 00:07:58,980 --> 00:08:00,640 z prawej jednakowej znaku. 157 00:08:00,640 --> 00:08:04,140 Jeśli włożył cztery, musiałby wam tabelę prawdy o wielkości czterech; 158 00:08:04,140 --> 00:08:06,270 i tak dalej, i tak dalej. 159 00:08:06,270 --> 00:08:09,380 >> Tablice nie są ograniczone do pojedynczego Wymiar, który jest całkiem fajne. 160 00:08:09,380 --> 00:08:12,000 Rzeczywiście można mieć aż Specyfikatory uboczne, jak chcesz. 161 00:08:12,000 --> 00:08:16,470 Tak na przykład, jeśli chcesz utworzyć deska do gry Battleship, które, 162 00:08:16,470 --> 00:08:20,910 jeśli kiedykolwiek grał, to gra, która jest grał z kołkami na 10 do 10 sieci, 163 00:08:20,910 --> 00:08:22,450 można utworzyć tablicę takiego. 164 00:08:22,450 --> 00:08:26,030 Można powiedzieć, Bool pancernik nawias kwadratowy 10 165 00:08:26,030 --> 00:08:29,590 zamknięty nawias kwadratowy plac Uchwyt 10 zamknięty nawias kwadratowy. 166 00:08:29,590 --> 00:08:32,710 >> A potem, można wybrać interpretują to w głowie, jak 10 167 00:08:32,710 --> 00:08:35,576 przez 10 siatki komórek. 168 00:08:35,576 --> 00:08:37,409 Otóż, w rzeczywistości, w pamięci to naprawdę nie tylko 169 00:08:37,409 --> 00:08:42,440 pozostanie 100 elementów, pojedyncza tablica wymiarowa. 170 00:08:42,440 --> 00:08:46,070 I to w rzeczywistości idzie na razie Ciebie mają trzy wymiary lub cztery lub pięć. 171 00:08:46,070 --> 00:08:49,420 To naprawdę nie rozmnażajcie wszystkie indices-- 172 00:08:49,420 --> 00:08:51,130 lub wszystkich rozmiarów specifiers-- razem, 173 00:08:51,130 --> 00:08:53,480 i po prostu się jednowymiarowa Tablica tej wielkości. 174 00:08:53,480 --> 00:08:57,090 >> Ale jeśli chodzi o organizację i wizualizacji i ludzkiej percepcji, 175 00:08:57,090 --> 00:08:59,240 może to być o wiele łatwiej do pracy z sieci 176 00:08:59,240 --> 00:09:02,980 jeśli pracujesz nad grą jak Kółko i krzyżyk lub Battleship, 177 00:09:02,980 --> 00:09:05,179 czy coś takiego. 178 00:09:05,179 --> 00:09:06,970 To wielka abstrakcja, zamiast 179 00:09:06,970 --> 00:09:09,340 myśleć o Kółko i krzyżyk wyżywienie w postaci linii dziewięciu 180 00:09:09,340 --> 00:09:13,810 kwadratów lub płyta Battleship w linii 100 pól. 181 00:09:13,810 --> 00:09:16,010 10 do 10 sieci lub trzy przez trzy sieci jest chyba 182 00:09:16,010 --> 00:09:17,225 o wiele łatwiej dostrzec. 183 00:09:17,225 --> 00:09:19,820 184 00:09:19,820 --> 00:09:22,280 >> Teraz coś naprawdę ważne o tablicach. 185 00:09:22,280 --> 00:09:25,950 Możemy traktować każdy Element tablicy jako zmienną. 186 00:09:25,950 --> 00:09:27,700 Widzieliśmy, że wcześniej kiedy byliśmy przypisywania 187 00:09:27,700 --> 00:09:32,240 wartość prawda do niektórych wartości logiczne lub testowania ich w warunkowych. 188 00:09:32,240 --> 00:09:35,960 Ale nie możemy traktować całej karty przyodziewa się jako zmienne. 189 00:09:35,960 --> 00:09:41,760 Nie możemy, na przykład przypisać jednej tablicy do innego tablicy przy użyciu przypisania 190 00:09:41,760 --> 00:09:42,930 Operator. 191 00:09:42,930 --> 00:09:44,640 To nie jest legalne C. 192 00:09:44,640 --> 00:09:47,920 >> Jeśli chcemy, aby example-- co będziemy robić w tym przykładzie 193 00:09:47,920 --> 00:09:50,200 byłoby skopiować jednej tablicy do drugiej. 194 00:09:50,200 --> 00:09:53,810 Jeśli chcemy to zrobić, faktycznie trzeba użyć pętli skopiować na 195 00:09:53,810 --> 00:09:56,550 każdego elementu po jednym na raz. 196 00:09:56,550 --> 00:09:58,700 Wiem, że to trochę czasochłonne. 197 00:09:58,700 --> 00:10:04,022 >> Tak na przykład, gdybyśmy mieli te parę linii kodu, to będzie działać? 198 00:10:04,022 --> 00:10:05,230 No, nie, to nie będzie, prawda? 199 00:10:05,230 --> 00:10:07,860 Ponieważ chcemy przypisać jedzenie do baru. 200 00:10:07,860 --> 00:10:09,860 To nie będzie działać, dlatego, że jest tablicą, 201 00:10:09,860 --> 00:10:13,130 i po prostu opisane że to nie jest legalne C. 202 00:10:13,130 --> 00:10:15,580 >> Zamiast tego, jeśli chcemy skopiować zawartość żywności 203 00:10:15,580 --> 00:10:18,070 w barze, który jest co staramy się zrobić tutaj, 204 00:10:18,070 --> 00:10:19,970 musielibyśmy składni takiego. 205 00:10:19,970 --> 00:10:24,170 Mamy dla pętli, która wykracza z j jest równe 0 do 5, 206 00:10:24,170 --> 00:10:28,390 i zwiększamy J na każdej iteracji pętla i przypisać elementy takie jak to. 207 00:10:28,390 --> 00:10:33,360 Spowodowałoby to pasek także jako jedna, dwie, trzy, cztery, pięć, 208 00:10:33,360 --> 00:10:36,730 ale musimy zrobić to bardzo powolny sposób Element po elemencie, 209 00:10:36,730 --> 00:10:40,009 zamiast po prostu kopiując całą tablicę. 210 00:10:40,009 --> 00:10:42,050 W drugiej programowania języki, te bardziej nowoczesne, 211 00:10:42,050 --> 00:10:45,610 można, w rzeczywistości, nie tylko, proste równa składni. 212 00:10:45,610 --> 00:10:49,620 Ale C, niestety, jesteśmy Nie wolno tego robić. 213 00:10:49,620 --> 00:10:52,026 >> Teraz jest jeszcze jedna co chcę wspomnieć 214 00:10:52,026 --> 00:10:54,650 o macierzach, że może być trochę nieco trudne pierwszy raz 215 00:10:54,650 --> 00:10:55,990 współpracy z nimi. 216 00:10:55,990 --> 00:10:59,860 Omówiliśmy w wideo o zmiennym zakresie, 217 00:10:59,860 --> 00:11:04,940 że większość zmiennych w C, gdy dzwonisz ich funkcje, są przekazywane przez wartość. 218 00:11:04,940 --> 00:11:08,620 Czy pamiętasz, co to znaczy coś przekazać przez wartość? 219 00:11:08,620 --> 00:11:12,570 Oznacza to, że robimy Kopię jest zmienną, która jest przekazywana w. 220 00:11:12,570 --> 00:11:16,290 Funkcja wywoływany funkcja że będzie odbierał zmienną, 221 00:11:16,290 --> 00:11:17,730 nie dostać samą zmienną. 222 00:11:17,730 --> 00:11:20,850 To staje się jego własna lokalna kopia pracować. 223 00:11:20,850 --> 00:11:24,070 >> Tablice, oczywiście, zrobić nie przestrzegać tej reguły. 224 00:11:24,070 --> 00:11:27,600 Raczej, co nazywamy to przechodzi przez odniesienie. 225 00:11:27,600 --> 00:11:31,360 Wywoływany w rzeczywistości ma otrzymać tablicę. 226 00:11:31,360 --> 00:11:34,207 To nie otrzyma własna lokalna kopia. 227 00:11:34,207 --> 00:11:36,040 A jeśli myślisz o to, że to ma sens. 228 00:11:36,040 --> 00:11:39,750 Jeśli tablice są bardzo duże, to zajmuje tak dużo czasu i wysiłku 229 00:11:39,750 --> 00:11:44,470 aby zrobić kopię tablicy 100 lub 1000 lub 10000 elementów, 230 00:11:44,470 --> 00:11:48,290 że nie warto dla funkcjonować otrzymać kopię tego, 231 00:11:48,290 --> 00:11:51,037 popracować z nim, a następnie po prostu zrobić z kopii; 232 00:11:51,037 --> 00:11:53,120 nie mieć go kręcącego się więcej. 233 00:11:53,120 --> 00:11:54,710 >> Ponieważ tablice są niektóre nieporęczne i niewygodne, 234 00:11:54,710 --> 00:11:56,001 po prostu przekazać je przez referencję. 235 00:11:56,001 --> 00:12:01,210 My po prostu zaufać, że funkcja aby nie złamać coś. 236 00:12:01,210 --> 00:12:03,010 Więc to jest rzeczywiście dostać tablicę. 237 00:12:03,010 --> 00:12:05,290 Nie ma się własną lokalną kopię. 238 00:12:05,290 --> 00:12:07,170 >> Więc co to oznacza, Następnie, gdy wywoływany 239 00:12:07,170 --> 00:12:08,970 manipuluje elementy tablicy? 240 00:12:08,970 --> 00:12:10,780 Co się dzieje? 241 00:12:10,780 --> 00:12:13,210 Na razie będziemy połysk ponad dlaczego właśnie ten 242 00:12:13,210 --> 00:12:15,320 się dzieje, dlaczego tablice są przekazywane przez referencję 243 00:12:15,320 --> 00:12:17,810 i wszystko co jest przekazywane przez wartość. 244 00:12:17,810 --> 00:12:20,470 Ale obiecuję wam, będziemy wrócić i dać odpowiedź 245 00:12:20,470 --> 00:12:23,750 to w późniejszej wideo. 246 00:12:23,750 --> 00:12:28,110 >> Oto jedno ćwiczenie dla Ciebie zanim zawinąć rzeczy na tablicach. 247 00:12:28,110 --> 00:12:31,400 Pęczek kod tutaj, że to nie jest szczególnie dobry styl, 248 00:12:31,400 --> 00:12:33,400 po prostu zrobię to zastrzeżenie. 249 00:12:33,400 --> 00:12:36,660 Nie ma żadnych komentarzy tutaj, co jest całkiem zła forma. 250 00:12:36,660 --> 00:12:39,750 Ale to tylko dlatego, że chcę być w stanie zmieścić wszystko na ekranie. 251 00:12:39,750 --> 00:12:44,360 >> Na górze, widać, że mam dwie deklaracje funkcji dla zadanej macierzy 252 00:12:44,360 --> 00:12:45,820 i ustawić int. 253 00:12:45,820 --> 00:12:49,680 Zestaw tablica podobno pobiera tablicę z czterech liczb całkowitych jak jego wejścia. 254 00:12:49,680 --> 00:12:52,767 A zestaw int podobno trwa jedna liczba całkowita jako wejścia. 255 00:12:52,767 --> 00:12:54,350 Ale obaj nie mają wyjścia. 256 00:12:54,350 --> 00:12:57,689 Wyjście, powrót typu, z których każdy jest nieważna. 257 00:12:57,689 --> 00:12:59,480 W Main, mamy kilka linii kodu. 258 00:12:59,480 --> 00:13:02,730 Deklarujemy zmienną całkowitą, nazywa się i przypisz jej wartość 10. 259 00:13:02,730 --> 00:13:07,080 Oświadczamy tablicę czterech liczb całkowitych zwany B i przypisać elementy 0, 1, 260 00:13:07,080 --> 00:13:08,730 2 i 3, odpowiednio. 261 00:13:08,730 --> 00:13:12,190 Następnie mamy rozmowę, aby ustawić int i wezwaniem, aby ustawić tablicę. 262 00:13:12,190 --> 00:13:15,910 Definicje ustawionej tablicy i zestaw int w dół poniżej dolnej krawędzi. 263 00:13:15,910 --> 00:13:17,640 >> I tak, ponownie, zadam ci pytanie. 264 00:13:17,640 --> 00:13:20,770 Co zostaje wydrukowana tutaj, na końcu Main? 265 00:13:20,770 --> 00:13:23,020 Istnieje kol wydruk. Jestem drukując dwie liczby całkowite. 266 00:13:23,020 --> 00:13:28,010 Jestem drukowanie zawartości oraz zawartość B uchwyt kwadratowy 0. 267 00:13:28,010 --> 00:13:29,880 Wstrzymaj film tutaj i zająć minutę. 268 00:13:29,880 --> 00:13:35,482 Można dowiedzieć się, co to Funkcja drukowania na końcu? 269 00:13:35,482 --> 00:13:38,190 Mam nadzieję, że jeśli przypomnieć Rozróżnienie pomiędzy przechodzącej wartości 270 00:13:38,190 --> 00:13:41,680 i przechodzącej przez odniesienie, w tym Problemem nie było zbyt trudne dla Ciebie. 271 00:13:41,680 --> 00:13:44,130 A odpowiedź byś znalazłem jest to. 272 00:13:44,130 --> 00:13:47,660 Jeśli nie jesteś pewien, co do dlaczego tak jest, weź drugi, 273 00:13:47,660 --> 00:13:50,620 wrócić, sprawdzić, co ja po prostu dyskusji na temat przekazywania tablic 274 00:13:50,620 --> 00:13:53,450 przez odniesienie, w porównaniu do przechodzenia inne zmienne przez wartość, 275 00:13:53,450 --> 00:13:56,680 i miejmy nadzieję, będzie to make trochę więcej sensu. 276 00:13:56,680 --> 00:13:59,760 >> Jestem Doug Lloyd, i to jest CS50. 277 00:13:59,760 --> 00:14:01,467