1 00:00:00,000 --> 00:00:03,269 >> [MUZYKI] 2 00:00:03,269 --> 00:00:05,391 3 00:00:05,391 --> 00:00:06,640 CAMILLE REKHSON: Cześć wszystkim. 4 00:00:06,640 --> 00:00:10,120 Witamy w quizie CS50 Przegląd zerowy sesji. 5 00:00:10,120 --> 00:00:10,770 Jestem Camille. 6 00:00:10,770 --> 00:00:13,140 I mam zamiar jechać na niektóre tematy z tobą 7 00:00:13,140 --> 00:00:16,890 Chłopaki dzisiaj pomóc przygotować się do quizu. 8 00:00:16,890 --> 00:00:20,840 Więc tutaj jest nasz wyczerpujący lista tematów, 9 00:00:20,840 --> 00:00:23,210 powinien zapoznać się z quizu. 10 00:00:23,210 --> 00:00:25,740 Zostały one wykonane bezpośrednio z programu nauczania. 11 00:00:25,740 --> 00:00:26,990 Wiem, że wydaje się to dużo. 12 00:00:26,990 --> 00:00:30,870 Ale uwierzcie mi, wiesz już wszystko te rzeczy w ciągu ostatnich kilku tygodni. 13 00:00:30,870 --> 00:00:33,210 >> Więc my na pewno tam na wiele z tych dzisiaj. 14 00:00:33,210 --> 00:00:35,825 Ale też trochę czasu na własna recenzję te rzeczy. 15 00:00:35,825 --> 00:00:38,450 A jeśli nie znali co niektóre z tych rzeczy, 16 00:00:38,450 --> 00:00:42,400 pamiętaj, aby poprosić jedną z nas. 17 00:00:42,400 --> 00:00:45,985 Ponadto, na oficjalnej słowa w quizie, iść ten link. 18 00:00:45,985 --> 00:00:48,860 Będzie to mieć wszystkie informacje z pokoju, w którym trzeba iść, 19 00:00:48,860 --> 00:00:52,960 podzielone alfabetycznie, a także kilka wskazówek, jakie materiały 20 00:00:52,960 --> 00:00:56,470 należy się uczyć, i jakie pytania konkursowe można się spodziewać. 21 00:00:56,470 --> 00:01:01,090 Więc upewnij się, aby sprawdzić, czy na zewnątrz. 22 00:01:01,090 --> 00:01:03,810 >> Również kilka wskazówek, kiedy przygotowują się do egzaminu. 23 00:01:03,810 --> 00:01:05,730 Praktyka kodowania na papierze. 24 00:01:05,730 --> 00:01:09,280 Wiem, że przyzwyczaiła się do posiadania kontrola IDE dla swoich błędów dla Ciebie, 25 00:01:09,280 --> 00:01:12,280 i it's-- podczas pisania go, to trochę inaczej niż o 26 00:01:12,280 --> 00:01:13,113 pisać rzeczy. 27 00:01:13,113 --> 00:01:14,560 Więc ćwiczyć jakiejś kodowania. 28 00:01:14,560 --> 00:01:17,910 Kilka dobrych funkcji do praktyki robi to strlen i atoi, 29 00:01:17,910 --> 00:01:20,450 sprawdzając, czy można napisać tych, na własną rękę. 30 00:01:20,450 --> 00:01:21,970 Znać zestawów problemowych. 31 00:01:21,970 --> 00:01:24,200 Większość lat istnieją pytania, które odnoszą 32 00:01:24,200 --> 00:01:25,700 niektórych z problemów ustawić materiału. 33 00:01:25,700 --> 00:01:30,480 Więc upewnij się, że wiesz, jak zrobić wszystkie zestawy problemowe. 34 00:01:30,480 --> 00:01:35,240 >> Spróbuj zrobić kilka starych quizów pod 75 minut czasu wiązania. 35 00:01:35,240 --> 00:01:37,290 Wiele quizów może być trochę długo. 36 00:01:37,290 --> 00:01:39,680 Więc jest to dobry sposób, aby dać się niektóre praktyki, 37 00:01:39,680 --> 00:01:41,650 i jak długo to będzie cię, i jak cię 38 00:01:41,650 --> 00:01:45,360 należy podzielić swój czas, aby upewnić się, skończysz wszystko do końca. 39 00:01:45,360 --> 00:01:49,690 A także, otrzymasz jedną stronę, dwustronny arkusz referencyjny 40 00:01:49,690 --> 00:01:52,962 że można pisać co chce się używać podczas quizu. 41 00:01:52,962 --> 00:01:54,670 Więc podczas tworzenia , że jest to również 42 00:01:54,670 --> 00:01:57,860 naprawdę świetny sposób, aby studiować, ponieważ będziesz rodzaj być przeglądając rzeczy 43 00:01:57,860 --> 00:01:59,610 jak piszesz to. 44 00:01:59,610 --> 00:02:05,421 >> Więc wszelkie ogólne pytania na temat quiz, lub jak to działa? 45 00:02:05,421 --> 00:02:05,921 Tak. 46 00:02:05,921 --> 00:02:09,167 >> PUBLICZNOŚCI: Will, że lista tematów że po prostu pokazał się dla nas dostępne 47 00:02:09,167 --> 00:02:09,820 w Internecie? 48 00:02:09,820 --> 00:02:12,736 >> CAMILLE REKHSON: Cały slajdów pokaż zostaną zamieszczone na stronie internetowej. 49 00:02:12,736 --> 00:02:16,040 Również film dzisiejszego przeglądu sesja będzie na stronie internetowej. 50 00:02:16,040 --> 00:02:19,250 Więc nie przejmuj się zbytnio przez pisanie rzeczy w dół. 51 00:02:19,250 --> 00:02:20,437 To wszyscy będziemy tam. 52 00:02:20,437 --> 00:02:21,270 Jakieś inne pytania? 53 00:02:21,270 --> 00:02:23,810 54 00:02:23,810 --> 00:02:26,960 OK, więc zaczynajmy. 55 00:02:26,960 --> 00:02:30,860 >> Więc jedna rzecz znać to różne typy danych i rozmiar 56 00:02:30,860 --> 00:02:32,486 , które biorą na siebie. 57 00:02:32,486 --> 00:02:35,360 To może być również doskonałym rozwiązaniem zapisać na karcie referencyjnej, 58 00:02:35,360 --> 00:02:37,240 po prostu upewnij się, że pamiętam wszystkich. 59 00:02:37,240 --> 00:02:39,200 Ale-- więc znaki to 1 bajt. 60 00:02:39,200 --> 00:02:40,700 Int są 4 bajty. 61 00:02:40,700 --> 00:02:44,450 Dawno, dawno, która jest w zasadzie więcej miejsca dla liczby całkowitej, jest 8 bajtów. 62 00:02:44,450 --> 00:02:46,560 Pływak jest 4 bajty. 63 00:02:46,560 --> 00:02:50,620 Podwójny, co w zasadzie daje więcej miejsca do przechowywania pływaka, jest 8 bajtów. 64 00:02:50,620 --> 00:02:54,210 I wtedy wskaźnik jest 8 bajtów. 65 00:02:54,210 --> 00:02:56,270 Wszelkie pytania na temat tego miasta? 66 00:02:56,270 --> 00:03:00,380 67 00:03:00,380 --> 00:03:05,580 >> Więc binarny jest inny temat mamy pokryte trochę w tym semestrze. 68 00:03:05,580 --> 00:03:07,910 Więc zróbmy pewne ćwiczyć z konwersji 69 00:03:07,910 --> 00:03:10,000 pomiędzy binarny i po przecinku. 70 00:03:10,000 --> 00:03:13,950 Więc ktoś ma jakiś pomysł, co że pierwszy będzie? 71 00:03:13,950 --> 00:03:32,840 72 00:03:32,840 --> 00:03:34,860 Kogokolwiek? 73 00:03:34,860 --> 00:03:36,270 Tak, to jest 42. 74 00:03:36,270 --> 00:03:39,200 Więc jeśli pamiętać, każda z miejsc w binarnym 75 00:03:39,200 --> 00:03:41,860 jest w zasadzie podobnie jak 2 do władzy to miejsce jest. 76 00:03:41,860 --> 00:03:43,750 >> Tak, że pierwszy spot jest 2 do 0 mocy. 77 00:03:43,750 --> 00:03:46,710 I mamy 0 tam, więc nic nie ma. 78 00:03:46,710 --> 00:03:48,700 Kolejnym miejscem jest 2 do pierwszej potęgi. 79 00:03:48,700 --> 00:03:51,220 A my mieć 1 tam, tak, że w zasadzie 2. 80 00:03:51,220 --> 00:03:53,642 Kolejnym miejscem jest 2 do po drugie, co jest 4. 81 00:03:53,642 --> 00:03:54,850 Nie mamy nic tam. 82 00:03:54,850 --> 00:03:59,390 Kolejne miejsce na to od 2 do trzecie, co byłoby 8. 83 00:03:59,390 --> 00:04:02,230 A my nie masz tam. 84 00:04:02,230 --> 00:04:03,470 A my dalej. 85 00:04:03,470 --> 00:04:07,720 To last-- najdalej do lewa, gdzie mamy 32. 86 00:04:07,720 --> 00:04:13,437 I tak, w zasadzie mają 32 oraz 8 oraz 2, aby uzyskać 42. 87 00:04:13,437 --> 00:04:14,020 Jakiekolwiek pytania? 88 00:04:14,020 --> 00:04:15,820 >> PUBLICZNOŚCI: Co to jest indeks dla? 89 00:04:15,820 --> 00:04:17,399 >> CAMILLE REKHSON: Indeks dolny w zasadzie mówi nam to binarny. 90 00:04:17,399 --> 00:04:18,230 Więc nie ma tam 2. 91 00:04:18,230 --> 00:04:20,579 Gdyby nie było like-- w następnym jeden, lub gdy mamy do konwersji po przecinku 92 00:04:20,579 --> 00:04:24,350 na binarny, jest to 10 pokazuje nam, że liczba ta jest początkowo w postaci dziesiętnej. 93 00:04:24,350 --> 00:04:25,194 >> PUBLICZNOŚCI: Dziękuję. 94 00:04:25,194 --> 00:04:26,110 >> CAMILLE REKHSON: Tak. 95 00:04:26,110 --> 00:04:28,790 Wszelkie inne pytania dotyczące tego jednego? 96 00:04:28,790 --> 00:04:31,110 OK, więc spróbujmy następnego jeden to, dziesiętny na binarny. 97 00:04:31,110 --> 00:04:35,034 Więc przy 50 i oddanie, które w formacie binarnym. 98 00:04:35,034 --> 00:04:35,950 Jak to zrobić? 99 00:04:35,950 --> 00:04:44,331 100 00:04:44,331 --> 00:04:45,317 Tak. 101 00:04:45,317 --> 00:04:49,754 >> PUBLICZNOŚCI: 110010. 102 00:04:49,754 --> 00:04:50,760 >> CAMILLE REKHSON: Tak. 103 00:04:50,760 --> 00:04:54,410 Więc jedno- łatwy sposób myśleć o konwersji z przecinku na binarny 104 00:04:54,410 --> 00:04:57,950 jest to-- często pomaga pisać co różne potęgi 2 są. 105 00:04:57,950 --> 00:05:01,460 A następnie przejść przez to i zobacz Bez względu na najwyższą jednym z tych 106 00:05:01,460 --> 00:05:05,320 jest to, że można umieścić w do liczba dziesiętna bez przechodzenia nad nim. 107 00:05:05,320 --> 00:05:09,040 >> Zatem w tym przypadku jeden z uprawnienia 2 jest 32. 108 00:05:09,040 --> 00:05:10,560 Więc 32 idzie do 50. 109 00:05:10,560 --> 00:05:14,100 Ale następnego moc będzie 64, co oczywiście nie pasuje do 50. 110 00:05:14,100 --> 00:05:16,343 Więc najwyższy mamy jest 32. 111 00:05:16,343 --> 00:05:17,343 Następny do 16. 112 00:05:17,343 --> 00:05:20,140 16 i 32 oraz tylko 48. 113 00:05:20,140 --> 00:05:21,350 Tak, że wciąż pasuje do 50. 114 00:05:21,350 --> 00:05:22,722 Więc mamy 1 w obu z nich. 115 00:05:22,722 --> 00:05:25,180 A potem, jeśli nie poddawać się w dół, jedyną rzeczą, jaką musimy w lewo 116 00:05:25,180 --> 00:05:27,510 więcej 2 dostać od 48 do 50. 117 00:05:27,510 --> 00:05:31,860 Tak więc mamy 1 w tej pozycji, i 0 na ostatniej pozycji. 118 00:05:31,860 --> 00:05:35,371 Bo nie ma nic w W 2 do 0-tym miejscu. 119 00:05:35,371 --> 00:05:37,120 Pytania dotyczące konwersji dziesiętnego na binarny? 120 00:05:37,120 --> 00:05:40,830 121 00:05:40,830 --> 00:05:44,100 >> Więc teraz spróbujmy robić niektóre binarny dodatkiem. 122 00:05:44,100 --> 00:05:47,235 Jak podczas dodawania tych dwóch w górę? 123 00:05:47,235 --> 00:05:47,735 Tak. 124 00:05:47,735 --> 00:05:51,130 >> PUBLICZNOŚCI: 11100. 125 00:05:51,130 --> 00:05:52,110 >> CAMILLE REKHSON: Tak. 126 00:05:52,110 --> 00:05:55,540 Czyniąc dodatkiem binarnie jest dość tak samo jak robi to w przecinku. 127 00:05:55,540 --> 00:05:59,390 Z wyjątkiem, jeśli masz dwa 1 na samopoczucie sumowane, 1 plus 1 oznacza 2, 128 00:05:59,390 --> 00:06:02,980 ale 2 binarnie jest 1 0. 129 00:06:02,980 --> 00:06:07,090 Więc trzeba nosić 1, i zachować przenoszenia tych kilku kolumnach. 130 00:06:07,090 --> 00:06:10,260 A poza tym, po prostu dodaj normalnie. 131 00:06:10,260 --> 00:06:13,125 Wszelkie pytania na ten temat? 132 00:06:13,125 --> 00:06:13,625 Tak. 133 00:06:13,625 --> 00:06:16,487 >> PUBLICZNOŚCI: Niestety, to, co jest na ostatnim miejscu? 134 00:06:16,487 --> 00:06:18,475 Jest sześć numerów. 135 00:06:18,475 --> 00:06:23,260 Tak skrajnej lewej kolumnie, jakie wartości chodzi? 136 00:06:23,260 --> 00:06:24,760 CAMILLE REKHSON: Na tej dolnej jednej? 137 00:06:24,760 --> 00:06:26,340 PUBLICZNOŚCI: Na górze jeden, na 50. 138 00:06:26,340 --> 00:06:27,340 CAMILLE REKHSON: Dla 50? 139 00:06:27,340 --> 00:06:29,040 Och, tak się po lewej stronie z nich jest 32. 140 00:06:29,040 --> 00:06:29,760 >> PUBLICZNOŚCI: 32? 141 00:06:29,760 --> 00:06:36,770 >> CAMILLE REKHSON: Tak, tak, że będzie być 32, 16, a następnie 8, 4, 2 lub 1, 0--. 142 00:06:36,770 --> 00:06:39,380 Cóż, to 2 zerowego, czyli 1. 143 00:06:39,380 --> 00:06:41,110 Tak. 144 00:06:41,110 --> 00:06:43,834 Wszelkie inne pytania w tej sprawie? 145 00:06:43,834 --> 00:06:47,420 OK, więc to będziemy robić trochę w systemie szesnastkowym. 146 00:06:47,420 --> 00:06:49,570 Więc to może być trochę mniej znane, 147 00:06:49,570 --> 00:06:51,680 bo wiem, że zrobiliśmy o wiele więcej z binarny. 148 00:06:51,680 --> 00:06:54,050 Ale naprawdę dobry sposób, aby myśleć o systemie szesnastkowym 149 00:06:54,050 --> 00:06:57,540 jest zerwać binarne Numer na 4 bitowe kawałki. 150 00:06:57,540 --> 00:07:00,950 Ponieważ każde 4 bity liczba binarna jest w zasadzie 151 00:07:00,950 --> 00:07:04,560 jedna z liczb w systemie szesnastkowym. 152 00:07:04,560 --> 00:07:07,420 >> Więc jeśli mamy ten pierwszy, mamy w zasadzie osiem 1-tych. 153 00:07:07,420 --> 00:07:08,620 Więc te można podzielić up-- 154 00:07:08,620 --> 00:07:09,600 >> PUBLICZNOŚCI: 255. 155 00:07:09,600 --> 00:07:10,933 >> CAMILLE REKHSON: Powiedz to jeszcze raz. 156 00:07:10,933 --> 00:07:13,772 PUBLICZNOŚCI: 255 w systemie dziesiętnym, lub 0xFF w systemie szesnastkowym. 157 00:07:13,772 --> 00:07:14,980 CAMILLE REKHSON: Tak, to jest. 158 00:07:14,980 --> 00:07:18,860 Jeśli więc, że podzielone na dwa 4-bitowe kawałki, 159 00:07:18,860 --> 00:07:20,950 w zasadzie mają cztery zestawy 1. 160 00:07:20,950 --> 00:07:22,880 Który jest maximum-- w zasadzie maksymalna 161 00:07:22,880 --> 00:07:24,329 możemy się z 4 bitów w formacie binarnym. 162 00:07:24,329 --> 00:07:27,120 A maksymalna moglibyśmy dostać za że w systemie szesnastkowym byłoby F. 163 00:07:27,120 --> 00:07:30,290 Więc mamy dwa F-tych. 164 00:07:30,290 --> 00:07:31,800 Wszelkie pytania na ten temat? 165 00:07:31,800 --> 00:07:32,490 Tak? 166 00:07:32,490 --> 00:07:35,184 >> PUBLICZNOŚCI: Możesz powtórzyć. 167 00:07:35,184 --> 00:07:36,100 CAMILLE REKHSON: Jasne. 168 00:07:36,100 --> 00:07:39,160 Tak więc każdy, w zasadzie, miejsce szesnastkowy jest 169 00:07:39,160 --> 00:07:42,570 równoważne 4 bitów binarnego. 170 00:07:42,570 --> 00:07:46,830 Tak więc najprostszym sposobem na to jest aby złamać go na 4-bitowe kawałki. 171 00:07:46,830 --> 00:07:48,690 Więc w tym przypadku, mamy osiem 1-tych. 172 00:07:48,690 --> 00:07:51,010 Więc jeśli się rozdzielimy te na dwa 4-bitowe kawałki, 173 00:07:51,010 --> 00:07:54,350 będziemy mieć dwa zestawy czterech 1-tych. 174 00:07:54,350 --> 00:07:57,181 I każdy z tych jest równoważna F 175 00:07:57,181 --> 00:07:58,930 Jeśli uważasz, że about-- Wiem, że nasze mózgi są 176 00:07:58,930 --> 00:08:00,415 rodzaj przewodowy myśleć więcej poprzez przecinku, 177 00:08:00,415 --> 00:08:01,831 ponieważ to, co do których jesteśmy przyzwyczajeni. 178 00:08:01,831 --> 00:08:06,030 Więc jeden sposób można myśleć o nim jako cztery 1 jest równa 15 w systemie dziesiętnym. 179 00:08:06,030 --> 00:08:12,960 I 15 w systemie szesnastkowym jest F. Więc to inny sposób można to przez niego. 180 00:08:12,960 --> 00:08:13,459 Tak. 181 00:08:13,459 --> 00:08:14,790 >> PUBLICZNOŚCI: Jaki jest 0x dla? 182 00:08:14,790 --> 00:08:18,240 >> CAMILLE REKHSON: 0x oznacza, że ​​jest to w systemie szesnastkowym. 183 00:08:18,240 --> 00:08:21,900 Więc po prostu umieścić, że prefiks tam normalnie. 184 00:08:21,900 --> 00:08:24,396 Inne pytania w tej sprawie. 185 00:08:24,396 --> 00:08:27,100 OK, więc spróbujmy dzieje w drugą stronę to. 186 00:08:27,100 --> 00:08:28,712 W tym przypadku mamy have-- przykro? 187 00:08:28,712 --> 00:08:29,628 PUBLICZNOŚCI: [niesłyszalne]. 188 00:08:29,628 --> 00:08:32,095 189 00:08:32,095 --> 00:08:33,720 CAMILLE REKHSON: Jedziemy na binarny. 190 00:08:33,720 --> 00:08:36,039 Tak więc, idąc w drugą stronę. 191 00:08:36,039 --> 00:08:42,090 Ale w tym przypadku, mamy 5 i A. Tak, jeśli myślimy o tym, 192 00:08:42,090 --> 00:08:46,260 Jeśli każdy z those-- do 5 i A jest jak będzie reprezentować 4-bitowy kawałek, 193 00:08:46,260 --> 00:08:49,003 jak można powiedzieć, 5 w binarnym? 194 00:08:49,003 --> 00:08:51,120 >> PUBLICZNOŚCI: 0101. 195 00:08:51,120 --> 00:08:53,100 >> CAMILLE REKHSON: Tak, tak, to jest 0101 częścią. 196 00:08:53,100 --> 00:08:55,250 A potem, jak można powiedzieć in-- 197 00:08:55,250 --> 00:08:56,910 >> PUBLICZNOŚCI: 10. 198 00:08:56,910 --> 00:08:58,243 CAMILLE REKHSON: Powiedz it-- przykro? 199 00:08:58,243 --> 00:08:58,990 PUBLICZNOŚCI: 10. 200 00:08:58,990 --> 00:09:02,052 CAMILLE REKHSON: Tak, tak, to druga część. 201 00:09:02,052 --> 00:09:04,010 A potem, jeśli umieścisz te dwa razem, to 202 00:09:04,010 --> 00:09:06,440 jak masz pełny binarny dla szesnastkowym. 203 00:09:06,440 --> 00:09:06,940 Tak? 204 00:09:06,940 --> 00:09:10,620 >> PUBLICZNOŚCI: wiedzieć, że jest 1010, nie musisz go pamiętać? 205 00:09:10,620 --> 00:09:12,460 Albo można like-- 206 00:09:12,460 --> 00:09:14,380 >> CAMILLE REKHSON: Więc jeśli you-- differe-- tak 207 00:09:14,380 --> 00:09:16,790 kiedy idziesz przez binarny, w zasadzie binarnej 208 00:09:16,790 --> 00:09:20,550 ma od 0 do 9, a następnie do F jak jego 16 rzeczy. 209 00:09:20,550 --> 00:09:25,420 Więc jeśli na drodze 0 do 9-- jeśli you-- 9, a następnie, w zasadzie 210 00:09:25,420 --> 00:09:29,640 jeśli przekształcane jest na dziesiętne, A będzie jak 10, B będzie jak 11. 211 00:09:29,640 --> 00:09:35,616 A jeśli myślisz o binarna 1010 8 i 2, 212 00:09:35,616 --> 00:09:37,990 ponieważ są to dwa miejsca, które dodają do 10, które 213 00:09:37,990 --> 00:09:41,820 jest dokładnie to, co jest równoważne. 214 00:09:41,820 --> 00:09:45,114 Więc to rodzaj łatwe sposób myślenia o tym. 215 00:09:45,114 --> 00:09:46,405 Inne pytania na szesnastkowy. 216 00:09:46,405 --> 00:09:50,510 217 00:09:50,510 --> 00:09:56,870 >> OK, więc teraz mamy zamiar podjąć Spojrzenie na operatorów bitowe. 218 00:09:56,870 --> 00:09:58,882 Więc to na pewno może pojawią się na quiz. 219 00:09:58,882 --> 00:10:00,590 Wiem, że nie mają pracował z nimi dużo. 220 00:10:00,590 --> 00:10:02,756 Ale jesteśmy po prostu zrobić trochę opinia o nich. 221 00:10:02,756 --> 00:10:05,490 Więc mam nadzieję, że to będzie nieco bardziej znajome. 222 00:10:05,490 --> 00:10:10,220 Więc sześciu operatorów bitowe że nie są tutaj wymienione. 223 00:10:10,220 --> 00:10:13,340 I pozwolili nam manipulować Poszczególne bity. 224 00:10:13,340 --> 00:10:16,676 Więc I operatora jest jednym znaku &. 225 00:10:16,676 --> 00:10:18,550 Nie należy mylić, że z podwójne znaku &, 226 00:10:18,550 --> 00:10:21,840 co jest logiczne i że pozwala nam porównać dwie rzeczy. 227 00:10:21,840 --> 00:10:25,860 >> Singiel I jest to, jak się da manipulować rzeczy bitowej. 228 00:10:25,860 --> 00:10:29,910 Więc to daje nam wynik 1, jeżeli zarówno z argumentów, że mamy porównanie 229 00:10:29,910 --> 00:10:32,440 są same-- lub są 1. 230 00:10:32,440 --> 00:10:39,370 I pionowy pasek, OR, da us 1, jeżeli co najmniej jeden z nich jest 1. 231 00:10:39,370 --> 00:10:41,460 Więc w zasadzie dokładnie jakie słowa oznaczać. 232 00:10:41,460 --> 00:10:46,640 I, jeśli dwa bity są 1, 1 i 1 daje nam 1. 233 00:10:46,640 --> 00:10:51,769 Ale z lub, jeżeli jest to 0 lub 1, lub 1 lub 1, w każdym przypadku, 234 00:10:51,769 --> 00:10:53,060 mamy 1 jako jeden z nich. 235 00:10:53,060 --> 00:10:54,101 Więc potem dostanie 1. 236 00:10:54,101 --> 00:10:56,320 PUBLICZNOŚCI: Co masz na myśli które mówi, że to daje 1? 237 00:10:56,320 --> 00:10:58,236 >> CAMILLE REKHSON: wynik. Rodzaj, jak ty 238 00:10:58,236 --> 00:11:05,060 would-- jeśli nie 0 i 1, Wynikiem tego będzie 1-- lub 0 239 00:11:05,060 --> 00:11:08,920 i 1 z wynikiem że będzie 0, przepraszam. 240 00:11:08,920 --> 00:11:12,190 Tak, to był rodzaj z Wynikiem ekspresji. 241 00:11:12,190 --> 00:11:16,520 A potem, ten daszek symbolem jest XOR lub XOR. 242 00:11:16,520 --> 00:11:21,920 To znaczy, wyłącznie jeden lub dokładnie jeden z dwóch argumentów jest równe 1. 243 00:11:21,920 --> 00:11:24,210 A potem to daje 1. 244 00:11:24,210 --> 00:11:27,370 >> Trochę falowane linii jest operatorem NOT. 245 00:11:27,370 --> 00:11:31,940 Tak więc w przeciwieństwie do pozostałej nimi które działają na pary bitów 246 00:11:31,940 --> 00:11:34,930 Operator nie bierze tylko jeden bit, i będzie go odwrócić. 247 00:11:34,930 --> 00:11:37,640 Więc jeśli give-- jeśli nie NIE 0, to daje 1. 248 00:11:37,640 --> 00:11:40,248 A jeśli nie 1, to daje 0. 249 00:11:40,248 --> 00:11:40,748 Tak? 250 00:11:40,748 --> 00:11:41,150 >> PUBLICZNOŚCI: Jaka jest różnica pomiędzy lub jednej linii 251 00:11:41,150 --> 00:11:41,983 a lub dwoma? 252 00:11:41,983 --> 00:11:44,430 253 00:11:44,430 --> 00:11:46,930 CAMILLE REKHSON: Tak lub dwie linie jest logiczną OR. 254 00:11:46,930 --> 00:11:52,430 Więc to dla porównania dwa pełne liczby całkowite lub two-- 255 00:11:52,430 --> 00:11:53,730 aby sprawdzić, czy wszystko jest równe. 256 00:11:53,730 --> 00:11:58,340 Albo jak to zrobić jest równa tej, OR jest równa tego typu rzeczy. 257 00:11:58,340 --> 00:12:04,090 Natomiast pojedynczego barze lub, jest robienie rzeczy bitowego. 258 00:12:04,090 --> 00:12:04,590 Tak. 259 00:12:04,590 --> 00:12:06,680 >> PUBLICZNOŚCI: Co masz na myśli poprzez mnożenie? 260 00:12:06,680 --> 00:12:10,330 >> CAMILLE REKHSON: Tak bitowe działa bezpośrednio z bitów w formacie binarnym. 261 00:12:10,330 --> 00:12:11,596 >> PUBLICZNOŚCI: O, widzę. 262 00:12:11,596 --> 00:12:15,000 >> CAMILLE REKHSON: Tak, tak, pracy z 0 i 1-ki. 263 00:12:15,000 --> 00:12:18,310 Zrobimy kilka przykładów tego po, tak więc nie jest to zbyt skomplikowane. 264 00:12:18,310 --> 00:12:20,970 A następnie dwa ostatnie są Przesunięcie w lewo i prawo przesunięcia. 265 00:12:20,970 --> 00:12:23,970 Które są w zasadzie dwa mniej niż znaki lub dwa większe niż znaki. 266 00:12:23,970 --> 00:12:26,294 I przesunął się trochę podana liczba miejsc 267 00:12:26,294 --> 00:12:27,710 że dajesz go w kierunku. 268 00:12:27,710 --> 00:12:29,980 Więc to albo przesunąć ją w lewo lub w prawo. 269 00:12:29,980 --> 00:12:30,480 Tak? 270 00:12:30,480 --> 00:12:32,470 PUBLICZNOŚCI: Jaka jest składnia działa? 271 00:12:32,470 --> 00:12:33,950 >> CAMILLE REKHSON: Jedziemy do przejść przez przykład w sekundę. 272 00:12:33,950 --> 00:12:35,680 Więc mam nadzieję, że pomoże. 273 00:12:35,680 --> 00:12:41,060 Wszelkie pytania dotyczące tylko co się dzieje tutaj, before-- OK. 274 00:12:41,060 --> 00:12:43,821 Tak będzie przez kilka przykładów. 275 00:12:43,821 --> 00:12:45,070 Zacznijmy z I te. 276 00:12:45,070 --> 00:12:47,880 Co byśmy zrobili, gdybyśmy się 0 i 1? 277 00:12:47,880 --> 00:12:48,899 >> PUBLICZNOŚCI: 0. 278 00:12:48,899 --> 00:12:50,690 CAMILLE REKHSON: OK, i jeśli zrobiliśmy 1 i 1? 279 00:12:50,690 --> 00:12:51,622 PUBLICZNOŚCI: 1. 280 00:12:51,622 --> 00:12:54,490 CAMILLE REKHSON: Tak, co jeśli zrobiliśmy 0 lub jeden? 281 00:12:54,490 --> 00:12:55,094 PUBLICZNOŚCI: 1. 282 00:12:55,094 --> 00:12:56,510 CAMILLE REKHSON: Jak o 1 lub 1? 283 00:12:56,510 --> 00:12:57,404 PUBLICZNOŚCI: 1. 284 00:12:57,404 --> 00:13:00,410 CAMILLE REKHSON: OK, jak o 0 XOR 1? 285 00:13:00,410 --> 00:13:01,380 PUBLICZNOŚCI: 1. 286 00:13:01,380 --> 00:13:03,120 CAMILLE REKHSON: A 1 XOR 1? 287 00:13:03,120 --> 00:13:03,902 PUBLICZNOŚCI: 0. 288 00:13:03,902 --> 00:13:05,360 CAMILLE REKHSON: Chłopaki są dobre. 289 00:13:05,360 --> 00:13:06,510 Jak o nie 0? 290 00:13:06,510 --> 00:13:07,265 >> PUBLICZNOŚCI: 1. 291 00:13:07,265 --> 00:13:08,390 CAMILLE REKHSON: a nie 1? 292 00:13:08,390 --> 00:13:09,602 PUBLICZNOŚCI: 0. 293 00:13:09,602 --> 00:13:12,810 CAMILLE REKHSON: OK, a następnie ten ostatni jeden to trochę jeden z biegów. 294 00:13:12,810 --> 00:13:18,700 Jeśli więc początkowo ustawiona x się 8 i Następnie y x jest przesunięty w lewo 3, 295 00:13:18,700 --> 00:13:19,760 co nam to daje? 296 00:13:19,760 --> 00:13:20,676 >> PUBLICZNOŚCI: [niesłyszalne]. 297 00:13:20,676 --> 00:13:22,817 298 00:13:22,817 --> 00:13:24,150 CAMILLE REKHSON: Powiedz to jeszcze raz. 299 00:13:24,150 --> 00:13:26,740 PUBLICZNOŚCI: [niesłyszalne]. 300 00:13:26,740 --> 00:13:28,766 CAMILLE REKHSON: Tak, to faktycznie daje nam 64. 301 00:13:28,766 --> 00:13:29,876 PUBLICZNOŚCI: [niesłyszalne]. 302 00:13:29,876 --> 00:13:32,250 CAMILLE REKHSON: Więc jestem zamiar napisać to tutaj, 303 00:13:32,250 --> 00:13:34,700 więc to sprawia, że ​​trochę rozsądku. 304 00:13:34,700 --> 00:13:45,120 Jeśli mamy 2 do 0, 2 do 1, 2 do 2, 2 do 3 będzie 8. 305 00:13:45,120 --> 00:13:52,380 A jeśli chcemy przesunąć go jeszcze 3 bity z lewej strony, która jest 2 do 4, 306 00:13:52,380 --> 00:13:57,270 2 do 5, a 2 do 6 i 2 do 6 wynosi 64. 307 00:13:57,270 --> 00:13:59,920 308 00:13:59,920 --> 00:14:01,110 Czy to ma sens? 309 00:14:01,110 --> 00:14:05,291 310 00:14:05,291 --> 00:14:05,791 Tak. 311 00:14:05,791 --> 00:14:08,725 >> WIDOWNI: Czy to shift wszystkie 1-ki i 0 z liczby binarnej do the-- 312 00:14:08,725 --> 00:14:09,600 >> CAMILLE REKHSON: Tak. 313 00:14:09,600 --> 00:14:12,150 314 00:14:12,150 --> 00:14:15,170 I nie musisz się martwić, na Quiz o nich jest negatywna. 315 00:14:15,170 --> 00:14:19,510 Nie będzie można poradzić sobie z Negatywne zmiany w żaden sposób. 316 00:14:19,510 --> 00:14:24,070 Wszelkie inne pytania na ten temat? 317 00:14:24,070 --> 00:14:24,570 Tak. 318 00:14:24,570 --> 00:14:30,570 >> PUBLICZNOŚCI: Jeśli to przesunięcie w prawo, jest coś, co wasn't-- niczego, 319 00:14:30,570 --> 00:14:33,220 nie był pierwotnie część rzeczy 0? 320 00:14:33,220 --> 00:14:37,110 >> CAMILLE REKHSON: Tak, to będzie wystarczy dodać 0 w serwisie w oryginale. 321 00:14:37,110 --> 00:14:38,110 Tak. 322 00:14:38,110 --> 00:14:41,540 >> PUBLICZNOŚCI: Więc co to jest 100 przesunięta w prawo, trzy razy 323 00:14:41,540 --> 00:14:43,290 CAMILLE REKHSON: 100 przesunięta w prawo 324 00:14:43,290 --> 00:14:46,057 tak, by podjąć wszystkie z 1 i 0 i po prostu przenieść je 325 00:14:46,057 --> 00:14:48,515 w prawo, tyle razy, ile Ci, że przesunięcie w prawo. 326 00:14:48,515 --> 00:14:50,452 >> PUBLICZNOŚCI: [niesłyszalne]? 327 00:14:50,452 --> 00:14:53,160 CAMILLE REKHSON: Cóż, 100-- są Mówisz o 100 binarnie, 328 00:14:53,160 --> 00:14:53,910 lub 100 w po przecinku? 329 00:14:53,910 --> 00:14:55,750 PUBLICZNOŚCI: Przykro mi, 100 binarnie. 330 00:14:55,750 --> 00:14:58,916 >> CAMILLE REKHSON: 100 binarnie, jeśli przesunąć go do prawy-- 331 00:14:58,916 --> 00:15:01,040 jeśli przesunięcie w prawo raz, to stają się 10. 332 00:15:01,040 --> 00:15:04,430 Jeśli przesunięcie go w prawo dwa razy, ale stałby się 001. 333 00:15:04,430 --> 00:15:07,590 A potem, jeśli przesunąć go ponownie, Ci rodzaj stracić trochę. 334 00:15:07,590 --> 00:15:09,610 Tak, to jest po prostu 0. 335 00:15:09,610 --> 00:15:12,140 Wszelkie inne pytania w tej sprawie? 336 00:15:12,140 --> 00:15:12,835 Tak. 337 00:15:12,835 --> 00:15:14,695 >> PUBLICZNOŚCI: Tak więc staje się to 000. 338 00:15:14,695 --> 00:15:17,020 >> CAMILLE REKHSON: Tak. 339 00:15:17,020 --> 00:15:22,150 OK, więc chodźmy przez Trochę ASCII matematyki. 340 00:15:22,150 --> 00:15:25,120 Więc znaków może zasadniczo traktować jako liczby całkowite 341 00:15:25,120 --> 00:15:28,290 na podstawie ich wartości ASCII. 342 00:15:28,290 --> 00:15:35,250 Jeśli więc siedział int A równa się 65, int B równa A plus 1, int char C równa 343 00:15:35,250 --> 00:15:39,565 D minus 1, a znak D jest równa 68, co by wydrukować na dole? 344 00:15:39,565 --> 00:15:46,150 345 00:15:46,150 --> 00:15:49,720 >> Tak, jesteśmy drukowania these-- błogosławi you-- jesteśmy 346 00:15:49,720 --> 00:15:53,520 drukując je wszystkie jako Znaki na podstawie procentowego C 347 00:15:53,520 --> 00:15:56,320 Więc jesteśmy w zasadzie drukowania wartość charakter wszystkich czterech 348 00:15:56,320 --> 00:15:58,600 z tych zmiennych. 349 00:15:58,600 --> 00:16:04,280 Jako wskazówka, 65 jest wartość ASCII kapitału A. Może to pomogło. 350 00:16:04,280 --> 00:16:04,780 Co? 351 00:16:04,780 --> 00:16:05,530 >> PUBLICZNOŚCI: ABCD. 352 00:16:05,530 --> 00:16:07,780 >> CAMILLE REKHSON: Tak, tak, byłoby wydrukować dokładnie 353 00:16:07,780 --> 00:16:10,290 ABCD, ponieważ stawiamy int A równa wartości ASCII A. 354 00:16:10,290 --> 00:16:13,085 Jeśli więc drukować że obecnie jako charakter, możemy po prostu kapitału A, 355 00:16:13,085 --> 00:16:15,540 A plus 1 będzie stolicą B w ASCII. 356 00:16:15,540 --> 00:16:19,260 D minus 1 będzie stolicą C w kodzie ASCII. 357 00:16:19,260 --> 00:16:25,185 I 68 jest wartość ASCII D. Pytania na ASCII? 358 00:16:25,185 --> 00:16:25,685 Tak. 359 00:16:25,685 --> 00:16:31,370 >> PUBLICZNOŚCI: Tak, cudzysłowów wokół A robi to zmienić na ASCII? 360 00:16:31,370 --> 00:16:34,456 >> CAMILLE REKHSON: To uses-- go count-- pojedyncze cudzysłowy wokół A 361 00:16:34,456 --> 00:16:35,330 sprawia, że ​​postać. 362 00:16:35,330 --> 00:16:37,600 A jeśli masz do czynienia z to liczby form-- 363 00:16:37,600 --> 00:16:40,320 Tak więc, gdy, jak w tym przypadku, to jest są traktowane jako int-- 364 00:16:40,320 --> 00:16:44,664 wtedy byłoby zająć z jego wartość ASCII. 365 00:16:44,664 --> 00:16:45,164 Tak. 366 00:16:45,164 --> 00:16:50,060 >> PUBLICZNOŚCI: Czy polecasz, że mamy tabeli odniesienia ASCII? 367 00:16:50,060 --> 00:16:51,900 >> CAMILLE REKHSON: Nie think-- 368 00:16:51,900 --> 00:16:54,720 >> PUBLICZNOŚCI: A może tylko to mieć do czynienia z tych? 369 00:16:54,720 --> 00:16:56,210 >> CAMILLE REKHSON: Myślę, że by zrobić to z prostych rzeczy. 370 00:16:56,210 --> 00:16:58,168 Nie sądzę, że będzie boli spisać może 371 00:16:58,168 --> 00:17:02,653 co Kapitał A i małe litery A są takie, po prostu co te zakresy są począwszy. 372 00:17:02,653 --> 00:17:05,819 Ale nie sądzę, trzeba wziąć wszystko przestrzeń, aby umieścić całą tablicę ASCII. 373 00:17:05,819 --> 00:17:06,803 Tak. 374 00:17:06,803 --> 00:17:09,755 >> PUBLICZNOŚCI: Jaka jest różnica między mówiąc char int A i C, 375 00:17:09,755 --> 00:17:12,720 jak robisz na górze? 376 00:17:12,720 --> 00:17:17,380 >> CAMILLE REKHSON: Więc to tylko jak to jest przechowywane w pamięci. 377 00:17:17,380 --> 00:17:20,010 Ale może to też sposób leczenia. 378 00:17:20,010 --> 00:17:23,274 Jak widzimy tutaj, robimy drukuj z A jako postać. 379 00:17:23,274 --> 00:17:24,690 PUBLICZNOŚCI: Więc to jest to samo, co? 380 00:17:24,690 --> 00:17:25,606 CAMILLE REKHSON: Tak. 381 00:17:25,606 --> 00:17:28,030 382 00:17:28,030 --> 00:17:29,537 Jakieś inne pytania? 383 00:17:29,537 --> 00:17:32,022 >> PUBLICZNOŚCI: Tak, procent C mówi wydrukować char? 384 00:17:32,022 --> 00:17:33,016 >> CAMILLE REKHSON: Tak. 385 00:17:33,016 --> 00:17:35,501 >> PUBLICZNOŚCI: Więc nawet jeśli ma tylko zdefiniowana jako liczba całkowita 386 00:17:35,501 --> 00:17:37,569 jeśli spróbujemy wydrukować char jako 65, to would-- 387 00:17:37,569 --> 00:17:40,110 CAMILLE REKHSON: To idź do w zasadzie idzie do tabeli ASCII 388 00:17:40,110 --> 00:17:42,990 i dostaje niezależnie znaków w tabeli ASCII dla tej 65. 389 00:17:42,990 --> 00:17:43,840 >> PUBLICZNOŚCI: Dziękuję. 390 00:17:43,840 --> 00:17:44,756 >> CAMILLE REKHSON: Tak. 391 00:17:44,756 --> 00:17:45,445 Tak? 392 00:17:45,445 --> 00:17:50,620 >> PUBLICZNOŚCI: Więc jeśli nie% I,% I, % I,% I, byłoby to po prostu print-- 393 00:17:50,620 --> 00:17:52,620 CAMILLE REKHSON: Tak, jeśli nie wszystkie 4% I na to 394 00:17:52,620 --> 00:17:57,170 by wydrukować ASCII wartości wszystkich czterech z nich. 395 00:17:57,170 --> 00:17:59,483 Jakieś inne pytania? 396 00:17:59,483 --> 00:18:06,310 OK, więc zakres, w zasadzie to pomaga nam określić, gdzie 397 00:18:06,310 --> 00:18:08,450 zmienna istnieje w programie. 398 00:18:08,450 --> 00:18:11,910 Więc rozmawialiśmy o dwóch różnych rodzaje zakresie, globalne i lokalne. 399 00:18:11,910 --> 00:18:14,560 >> Jeśli zmienna jest zawężona w skali globalnej, to znaczy całego programu 400 00:18:14,560 --> 00:18:16,292 ma dostęp do tej zmiennej. 401 00:18:16,292 --> 00:18:18,000 A jeśli na całym świecie Zakres zmienna, to 402 00:18:18,000 --> 00:18:19,510 Oświadczam, przed głównej funkcji. 403 00:18:19,510 --> 00:18:20,830 Tak to się robi tuż nietoperza. 404 00:18:20,830 --> 00:18:22,950 I wówczas cała Program do niego dostęp. 405 00:18:22,950 --> 00:18:26,070 >> Jeśli jest tylko lokalnym zakresie, że zmiennego ogranicza się do konkretnego regionu. 406 00:18:26,070 --> 00:18:29,705 Więc jeśli zadeklarować w ramach pętli for, tylko, że dla pętli do niego dostęp. 407 00:18:29,705 --> 00:18:31,580 Albo jeśli zadeklarować w terminie specyficzne funkcje, 408 00:18:31,580 --> 00:18:34,940 tylko, że funkcja do niego dostęp. 409 00:18:34,940 --> 00:18:38,265 Pytania na temat zakresu. 410 00:18:38,265 --> 00:18:41,570 >> OK, więc funkcja prototypowania. 411 00:18:41,570 --> 00:18:45,360 Zasadniczo, ponieważ C, kiedy kompiluje, czyta z góry na dół. 412 00:18:45,360 --> 00:18:48,800 Jeśli zadeklarujesz funkcję późno w kodzie, 413 00:18:48,800 --> 00:18:51,670 kompilator nie wie że funkcja istnieje. 414 00:18:51,670 --> 00:18:55,690 Więc co możemy użyć to prototypy, które w zasadzie poinformować kompilator, 415 00:18:55,690 --> 00:18:58,710 funkcja ta istnieje, najpierw sprawdź gdyż później w kodzie. 416 00:18:58,710 --> 00:19:00,900 Więc sposób, aby zrobić prototyp funkcji 417 00:19:00,900 --> 00:19:03,020 Jest dokładnie tak, jak zacząć przy pisaniu funkcji. 418 00:19:03,020 --> 00:19:05,310 Podać typ zwracany, nazwa funkcji 419 00:19:05,310 --> 00:19:08,930 a następnie wszelkie argumenty że funkcja przyjmuje. 420 00:19:08,930 --> 00:19:13,970 >> Tak więc, aby spojrzeć na szybki przykład, w tym przypadku nasz funkcję, że używamy tutaj 421 00:19:13,970 --> 00:19:15,340 jest w zasadzie funkcją kostki. 422 00:19:15,340 --> 00:19:19,170 Więc biorąc w całkowitej i powrót kostkę tej liczby całkowitej. 423 00:19:19,170 --> 00:19:23,190 Więc dlatego, że napisałem, że Funkcja poniżej głównej funkcji, 424 00:19:23,190 --> 00:19:26,300 i chcemy użyć Wyjście that-- lub my 425 00:19:26,300 --> 00:19:28,630 chcą tej funkcji w naszej głównej funkcji, 426 00:19:28,630 --> 00:19:31,980 kładziemy swój prototyp sposób na początku działania programu. 427 00:19:31,980 --> 00:19:34,460 A potem, kiedy wzywamy że w naszej głównej funkcji, 428 00:19:34,460 --> 00:19:38,800 kompilator wie, że ta funkcja jest napisane później i będzie szukać, 429 00:19:38,800 --> 00:19:40,910 i będzie go używać prawidłowo. 430 00:19:40,910 --> 00:19:45,190 Pytania na temat prototypów? 431 00:19:45,190 --> 00:19:45,690 Tak. 432 00:19:45,690 --> 00:19:46,940 >> PUBLICZNOŚCI: Więc o co chodzi? 433 00:19:46,940 --> 00:19:49,374 434 00:19:49,374 --> 00:19:50,915 Nie rozumiem sensu tworzenia prototypów. 435 00:19:50,915 --> 00:19:52,820 Dlaczego po prostu nie ma go tam? 436 00:19:52,820 --> 00:19:54,903 >> CAMILLE REKHSON: Cóż, jeśli to tu, to kiedy 437 00:19:54,903 --> 00:19:57,020 można dostać się do linii kostkę x w swojej głównej funkcji, 438 00:19:57,020 --> 00:19:59,495 kompilator nie mają pojęcia, że funkcja kostki faktycznie istnieje. 439 00:19:59,495 --> 00:20:01,310 >> PUBLICZNOŚCI: Nie mogłeś wystarczy umieścić go przed? 440 00:20:01,310 --> 00:20:02,350 >> CAMILLE REKHSON: Jest lepsze praktyki kodowania 441 00:20:02,350 --> 00:20:04,150 umieścić je na swojej głównej funkcji. 442 00:20:04,150 --> 00:20:06,350 To dlatego, że będzie zrobić prototypowania. 443 00:20:06,350 --> 00:20:07,680 Tylko dlatego, jeśli Ciebie miał wiele funkcji, 444 00:20:07,680 --> 00:20:10,180 byłoby naprawdę bałagan się przeczytanie wszystkich tych funkcji 445 00:20:10,180 --> 00:20:12,030 Zanim dojdziesz do mięsa programu. 446 00:20:12,030 --> 00:20:13,888 Tak, i trzeba było q-- 447 00:20:13,888 --> 00:20:16,796 >> PUBLICZNOŚCI: Tak, jest deklarując zmienna u góry 448 00:20:16,796 --> 00:20:18,795 tak, masz do niego dostęp, sprawiają, że zmienna globalna? 449 00:20:18,795 --> 00:20:21,119 Czy to jest podobne do tego gdzie jest deklarowania 450 00:20:21,119 --> 00:20:23,660 tam, tak, że wiadomo, że to będzie do niego dostęp później 451 00:20:23,660 --> 00:20:24,762 i można go używać? 452 00:20:24,762 --> 00:20:26,146 >> CAMILLE REKHSON: Tak. 453 00:20:26,146 --> 00:20:26,646 Tak. 454 00:20:26,646 --> 00:20:30,414 >> PUBLICZNOŚCI: Jeżeli the-- wszelkie dodatkowe Funkcje można klucz stworzyć zewnątrz 455 00:20:30,414 --> 00:20:31,840 tej rzeczy, or-- 456 00:20:31,840 --> 00:20:33,760 >> CAMILLE REKHSON: Tak, jeśli jesteś tworzenie inne functions-- main 457 00:20:33,760 --> 00:20:36,385 Sam jest function-- więc jeśli tworzysz inne funkcje, 458 00:20:36,385 --> 00:20:37,555 powinny być one na zewnątrz. 459 00:20:37,555 --> 00:20:38,055 Tak? 460 00:20:38,055 --> 00:20:39,734 >> PUBLICZNOŚCI: Co to jest procent D? 461 00:20:39,734 --> 00:20:42,150 CAMILLE REKHSON: Procent D to samo jako procent I. 462 00:20:42,150 --> 00:20:45,915 Odnosi się do liczby całkowitej. 463 00:20:45,915 --> 00:20:47,895 Tak. 464 00:20:47,895 --> 00:20:50,370 >> PUBLICZNOŚCI: Więc co jest int main robisz? 465 00:20:50,370 --> 00:20:51,724 Co to był za nieważne? 466 00:20:51,724 --> 00:20:53,890 CAMILLE REKHSON: Void mówi zajmuje się żadnych argumentów. 467 00:20:53,890 --> 00:20:55,320 PUBLICZNOŚCI: [niesłyszalne]. 468 00:20:55,320 --> 00:20:57,570 CAMILLE REKHSON: Czy możesz mówić trochę głośniej, przepraszam? 469 00:20:57,570 --> 00:21:00,153 PUBLICZNOŚCI: Tak, przepraszam, dlaczego umieścić unieważnić dla pierwszego, 470 00:21:00,153 --> 00:21:02,297 i int wejście dla drugiego? 471 00:21:02,297 --> 00:21:04,720 472 00:21:04,720 --> 00:21:07,470 CAMILLE REKHSON: Och, na dwa different-- za główną funkcję 473 00:21:07,470 --> 00:21:09,290 w stosunku do funkcji kostki? 474 00:21:09,290 --> 00:21:13,360 Tak więc w głównej funkcji używamy nieważne, ponieważ nie 475 00:21:13,360 --> 00:21:16,870 ma parametry są podejmowane. 476 00:21:16,870 --> 00:21:19,425 Podczas gdy w kostce Funkcja, mamy wejście. 477 00:21:19,425 --> 00:21:22,300 Dlatego to mówi int, wejście, ponieważ nie są argumenty, że jesteśmy 478 00:21:22,300 --> 00:21:24,571 biorąc w uruchomić naszą funkcję. 479 00:21:24,571 --> 00:21:25,070 Tak. 480 00:21:25,070 --> 00:21:27,770 481 00:21:27,770 --> 00:21:30,464 Czy są pytania? 482 00:21:30,464 --> 00:21:34,520 >> OK, a następnie szybko zmiennoprzecinkową nieścisłości. 483 00:21:34,520 --> 00:21:37,200 Więc mamy nieskończenie wiele liczb rzeczywistych. 484 00:21:37,200 --> 00:21:38,950 Ale są tylko skończona liczba bitów 485 00:21:38,950 --> 00:21:42,880 które możemy użyć w celu wyświetlenia tych Liczby i ich reprezentować. 486 00:21:42,880 --> 00:21:45,020 Tak więc to w końcu z jakiegoś niedokładności. 487 00:21:45,020 --> 00:21:49,190 A twoje numery nie będzie zawsze bardzo dokładnie, co 488 00:21:49,190 --> 00:21:51,810 myślisz, że są one, gdy jesteś czynienia z zmiennoprzecinkowych. 489 00:21:51,810 --> 00:21:53,650 To jest po prostu coś, dobrze wiedzieć. 490 00:21:53,650 --> 00:21:56,628 Pytania w tej sprawie? 491 00:21:56,628 --> 00:21:59,610 Tak. 492 00:21:59,610 --> 00:22:02,090 >> PUBLICZNOŚCI: Czy to odnosząc do idei bit przepełnienia 493 00:22:02,090 --> 00:22:03,089 to było na wykładzie? 494 00:22:03,089 --> 00:22:06,080 Było, że coś oddzielić? 495 00:22:06,080 --> 00:22:09,650 >> CAMILLE REKHSON: Oni całkowicie oddzielone, tak. 496 00:22:09,650 --> 00:22:11,160 Ok świetnie. 497 00:22:11,160 --> 00:22:16,369 498 00:22:16,369 --> 00:22:17,452 PULAK Goyal: Cześć wszystkim. 499 00:22:17,452 --> 00:22:19,872 Nazywam się Pulak i będę się będzie nad wskaźnikami. 500 00:22:19,872 --> 00:22:23,260 501 00:22:23,260 --> 00:22:25,720 OK, więc niech najpierw pomyśleć Pamięć o tym, co wygląda. 502 00:22:25,720 --> 00:22:28,610 Więc jak widać tutaj, podjąć pamięć i dzielimy go 503 00:22:28,610 --> 00:22:30,090 w bandę bloków. 504 00:22:30,090 --> 00:22:33,150 A my odwołać każdego blokować przez adres, prawda? 505 00:22:33,150 --> 00:22:37,196 A czy ktoś pamięta, jaki rodzaj Zapis używamy do określenia adresu? 506 00:22:37,196 --> 00:22:38,510 >> PUBLICZNOŚCI: szesnastkowy, 0X. 507 00:22:38,510 --> 00:22:39,510 >> PULAK Goyal: szesnastkowy, prawda? 508 00:22:39,510 --> 00:22:41,509 Więc 0X oznacza, że ​​jesteśmy mówić o systemie szesnastkowym. 509 00:22:41,509 --> 00:22:45,740 510 00:22:45,740 --> 00:22:48,360 OK, więc jak możemy stworzyć wskaźniki? 511 00:22:48,360 --> 00:22:51,960 Więc bierzemy typ, my umieścić it-- dodać gwiazdkę do niego, 512 00:22:51,960 --> 00:22:53,760 a następnie dodać nazwę zmiennej. 513 00:22:53,760 --> 00:22:59,280 Więc przykłady, które widzieliśmy są int gwiazda x, gwiazda char y, i pływak rozpocząć z. 514 00:22:59,280 --> 00:23:01,380 Więc kiedy mówię int gwiazdą x, może ktoś mi powiedzieć, 515 00:23:01,380 --> 00:23:03,965 co mam niby mówisz nie? 516 00:23:03,965 --> 00:23:05,710 >> PUBLICZNOŚCI: Lokalizacja dysku. 517 00:23:05,710 --> 00:23:06,890 >> PULAK Goyal: Niestety, to co? 518 00:23:06,890 --> 00:23:07,723 Możesz to powtórzyć? 519 00:23:07,723 --> 00:23:09,250 PUBLICZNOŚCI: Lokalizacja dysku. 520 00:23:09,250 --> 00:23:12,390 >> PULAK Goyal: Tak actually-- więc co Miałem na myśli, kiedy mamy gwiazda int x, 521 00:23:12,390 --> 00:23:14,400 mówimy jest tworzenie wskaźnik, i to 522 00:23:14,400 --> 00:23:17,130 można zapisać adresu Zmienna to int, prawda? 523 00:23:17,130 --> 00:23:21,810 Więc z gwiazdą char y, tworzymy wskaźnik 524 00:23:21,810 --> 00:23:24,220 które mogą przechowywać adres zmiennej, która jest char. 525 00:23:24,220 --> 00:23:26,270 Więc to ma sens dla każdego? 526 00:23:26,270 --> 00:23:29,600 Ok fajnie 527 00:23:29,600 --> 00:23:33,450 >> OK, więc ze wskaźnikami, są dwie ważne operacje możemy zrobić. 528 00:23:33,450 --> 00:23:36,630 Jest odwołanie, a Jest wyłuskania. 529 00:23:36,630 --> 00:23:37,130 Tak? 530 00:23:37,130 --> 00:23:38,760 >> PUBLICZNOŚCI: Czy możesz iść trochę wolniej? 531 00:23:38,760 --> 00:23:39,510 >> PULAK Goyal: Jasne. 532 00:23:39,510 --> 00:23:45,350 Tak, SO- Tak, zadawać pytania, jak przejść wraz jeśli you-- jeśli coś jest niejasne. 533 00:23:45,350 --> 00:23:47,240 Mamy więc odwołanie i wyłuskania. 534 00:23:47,240 --> 00:23:51,680 Tak więc, jeśli chcesz uzyskać adres zmiennej, a następnie użyć znaku handlowego. 535 00:23:51,680 --> 00:23:53,620 Więc powiedzmy, że oświadczył, int x gdzieś. 536 00:23:53,620 --> 00:23:57,450 I chcę, aby uzyskać adres, który i przekazać je, chciałbym zrobić ampersand x. 537 00:23:57,450 --> 00:24:01,260 A gdy chcesz uzyskać Wartość związana z wskaźnikiem, 538 00:24:01,260 --> 00:24:04,670 użyć dereference Operator, który jest gwiazdą. 539 00:24:04,670 --> 00:24:08,570 >> Więc powiedzmy, że miałem gwiazda int x, i Miałem go wskazując na coś. 540 00:24:08,570 --> 00:24:13,510 Jeśli chcę, aby uzyskać wartość tego, co to jest wskazując, że po prostu zrobić gwiazdki x. 541 00:24:13,510 --> 00:24:14,960 Czy to jasne? 542 00:24:14,960 --> 00:24:16,390 Wszelkie pytania na ten temat? 543 00:24:16,390 --> 00:24:18,129 Tak. 544 00:24:18,129 --> 00:24:25,275 >> PUBLICZNOŚCI: Tak generalnie, ci nie będzie w stanie zrobić w punkcie x i gwiazdy 545 00:24:25,275 --> 00:24:27,135 x o tym samym x. 546 00:24:27,135 --> 00:24:28,740 Czy to jest poprawne? 547 00:24:28,740 --> 00:24:31,800 Gdyż jeśli x jest zmienna, to masz 548 00:24:31,800 --> 00:24:35,980 zrobić w punkcie x, aby ta jest wskaźnikiem. 549 00:24:35,980 --> 00:24:40,810 Ale jeśli x jest wskaźnikiem, to trzeba zrobić gwiazdki x uzyskać zmienną. 550 00:24:40,810 --> 00:24:43,240 >> PULAK Goyal: Tak, więc pytanie o to, kiedy 551 00:24:43,240 --> 00:24:45,750 nie używamy star-- kiedy należy użyć gwiazdki, 552 00:24:45,750 --> 00:24:47,470 i kiedy używamy ampersand, i możemy 553 00:24:47,470 --> 00:24:49,160 używać tego samego typu o zmiennej? 554 00:24:49,160 --> 00:24:51,810 Więc zwykle, jeśli masz, Na przykład, int x, 555 00:24:51,810 --> 00:24:55,170 byś się głównie za pomocą handlowe i uzyskać adresu tego. 556 00:24:55,170 --> 00:24:58,220 Bo to nie robi sensu przychylne do x. 557 00:24:58,220 --> 00:25:04,220 Natomiast gdybyśmy mieli gwiazda int x, chcesz używać operację wyłuskiwania 558 00:25:04,220 --> 00:25:07,910 bo to nie ma sensu stosowanie co X, w tym przypadku. 559 00:25:07,910 --> 00:25:09,582 Czy to ma sens? 560 00:25:09,582 --> 00:25:13,192 >> PUBLICZNOŚCI: Więc nie możesz i i wskaźnik? 561 00:25:13,192 --> 00:25:14,900 PULAK Goyal: Więc technicznie, w rzeczywistości 562 00:25:14,900 --> 00:25:16,870 może zrobić ampersanda wyżła. 563 00:25:16,870 --> 00:25:18,984 Ale to się z Zakres tej klasy. 564 00:25:18,984 --> 00:25:21,900 Dla purpose-- dla swoich chłopaków " cele, gdy masz wskazówki, 565 00:25:21,900 --> 00:25:25,191 chcesz użyć operatora wyłuskiwania aby uzyskać wartość związaną z tym. 566 00:25:25,191 --> 00:25:27,380 A gdy masz regularne zmienne, jak int x, 567 00:25:27,380 --> 00:25:31,410 chcesz użyć znaku handlowego Operator uzyskać adresu tego. 568 00:25:31,410 --> 00:25:31,910 OK? 569 00:25:31,910 --> 00:25:35,670 570 00:25:35,670 --> 00:25:38,850 >> OK, więc spójrzmy na wskaźniki i to, co dzieje się pod wyciągiem. 571 00:25:38,850 --> 00:25:42,640 Tak więc pierwszą rzeczą, jaką zrobiłem tutaj jest deklarowana int x jest równe 5. 572 00:25:42,640 --> 00:25:48,460 Adres tej zmiennej jest 0x04, a wartość to 5. 573 00:25:48,460 --> 00:25:52,940 Zobaczmy więc, co się dzieje, w następnej linii. 574 00:25:52,940 --> 00:25:55,130 Więc teraz możemy zadeklarować wskaźnik. 575 00:25:55,130 --> 00:26:01,450 Jego adres to 0x08, a jego wartością jest adres x. 576 00:26:01,450 --> 00:26:05,220 Czy to ma sens dla każdego? 577 00:26:05,220 --> 00:26:06,507 Wszelkie pytania na ten temat? 578 00:26:06,507 --> 00:26:09,130 579 00:26:09,130 --> 00:26:13,080 >> OK, a teraz zobaczmy, co dzieje się w następnej linii. 580 00:26:13,080 --> 00:26:18,140 Więc z tej nowej linii, mamy adres kopia jest 0x10, 581 00:26:18,140 --> 00:26:20,780 a jego wartość wynosi 5. 582 00:26:20,780 --> 00:26:23,570 Więc z powodu mamy pięć Jest to powiedział, że wyłuskiwania 583 00:26:23,570 --> 00:26:26,740 wskaźnik, który zadeklarowaliśmy int gwiazdę. 584 00:26:26,740 --> 00:26:35,797 I tak to went-- kiedy wyłuskanie tego, to powiedział, OK, co jest w 0x04 gniazda. 585 00:26:35,797 --> 00:26:36,630 I udał się do tego. 586 00:26:36,630 --> 00:26:40,785 A co x jest x0-- 0x04, a wartość to 5. 587 00:26:40,785 --> 00:26:41,660 Czy to ma sens? 588 00:26:41,660 --> 00:26:42,334 Tak? 589 00:26:42,334 --> 00:26:50,090 >> PUBLICZNOŚCI: Dlaczego adres kopii w tylko 4 bajty powyżej x wskaźnik? 590 00:26:50,090 --> 00:26:52,318 >> PULAK Goyal: Tak, jest to błąd on-- 591 00:26:52,318 --> 00:26:55,304 >> CAMILLE REKHSON: Tak, tak, pamiętam to jest napisane w kodzie szesnastkowym. 592 00:26:55,304 --> 00:26:56,220 PULAK Goyal: O, tak. 593 00:26:56,220 --> 00:26:58,615 CAMILLE REKHSON: Więc to jest rzeczywiście 8 i 16 594 00:26:58,615 --> 00:27:00,960 dlatego, że powiedział, że, wskaźnik, należy pamiętać, 595 00:27:00,960 --> 00:27:05,330 w naszym IDE będzie długość 8 bajtów. 596 00:27:05,330 --> 00:27:06,080 PULAK Goyal: Tak. 597 00:27:06,080 --> 00:27:09,160 598 00:27:09,160 --> 00:27:12,540 Więc po prostu się jasne, wskaźniki są długość 8 bajtów. 599 00:27:12,540 --> 00:27:14,160 Int jest 4 bajty. 600 00:27:14,160 --> 00:27:18,380 Więc dlatego co skoczył od 0x04 do 0x08 601 00:27:18,380 --> 00:27:20,980 Jest tak, ponieważ musieliśmy zrobić skok 8 bajtów. 602 00:27:20,980 --> 00:27:24,396 A potem for-- od Kopia jest tylko int, 603 00:27:24,396 --> 00:27:26,020 to 4 bajty, czyli połowę z 8 bajtów. 604 00:27:26,020 --> 00:27:29,970 Więc po prostu przejść do 0x10, która jest dwa z dala od 0x08. 605 00:27:29,970 --> 00:27:33,100 606 00:27:33,100 --> 00:27:34,570 Jakieś inne pytania? 607 00:27:34,570 --> 00:27:36,850 OK, let's-- tak? 608 00:27:36,850 --> 00:27:39,245 >> PUBLICZNOŚCI: Dlaczego nie jest wartość int kopii 609 00:27:39,245 --> 00:27:45,000 tylko the-- dlaczego jest 5 zamiast 0x04? 610 00:27:45,000 --> 00:27:46,270 >> PULAK Goyal: OK, dlaczego jest 5? 611 00:27:46,270 --> 00:27:51,600 OK, więc kiedy the-- więc niech pierwszy myśleć o tym w kategoriach typów. 612 00:27:51,600 --> 00:27:55,600 Więc mówię int kopię jest równa gwiazdy wskaźnika. 613 00:27:55,600 --> 00:27:57,490 Więc jaki jest rodzaj wskaźnika? 614 00:27:57,490 --> 00:27:59,310 Jest to int gwiazdą. 615 00:27:59,310 --> 00:28:03,850 A kiedy dereference że typ staje int. 616 00:28:03,850 --> 00:28:06,570 Co więc możemy spodziewać się zapisać tutaj jest rzeczywiście int. 617 00:28:06,570 --> 00:28:07,965 Czy to ma sens? 618 00:28:07,965 --> 00:28:09,090 PUBLICZNOŚCI: Oczywiście, trochę. 619 00:28:09,090 --> 00:28:11,465 PULAK Goyal: Więc zwykle, gdy myślisz, że pod względem rodzajów, 620 00:28:11,465 --> 00:28:15,607 to pomaga zrozumieć, co jest Typ wartości, które powinny iść tam. 621 00:28:15,607 --> 00:28:17,940 Więc zazwyczaj można wykluczyć wiele z tych typowych błędów 622 00:28:17,940 --> 00:28:21,790 przez myślenie w kategoriach typów. 623 00:28:21,790 --> 00:28:23,612 Pozwól mi przejść przez trochę bardziej zjeżdżalniami. 624 00:28:23,612 --> 00:28:26,070 I możemy się pytania na koniec sekcji wskaźnika. 625 00:28:26,070 --> 00:28:28,910 626 00:28:28,910 --> 00:28:32,290 OK, więc mamy program buggy tutaj. 627 00:28:32,290 --> 00:28:35,460 I tak nie anyone-- ktoś może powiedzieć, mi co jest nie tak z tym programem? 628 00:28:35,460 --> 00:28:39,000 629 00:28:39,000 --> 00:28:40,820 Dobra, więc co mamy spodziewając się zrobić tutaj 630 00:28:40,820 --> 00:28:44,520 jest-- to, co chcemy zrobić, jest zmienną int zabrać x 631 00:28:44,520 --> 00:28:48,350 i obrócić it-- sprawiają, że równe 5 zamiast 3, a następnie wydrukować, że. 632 00:28:48,350 --> 00:28:49,640 Ale to się nie dzieje. 633 00:28:49,640 --> 00:28:50,950 Czy ktoś może mi powiedzieć dlaczego? 634 00:28:50,950 --> 00:28:51,934 Tak? 635 00:28:51,934 --> 00:28:54,840 >> PUBLICZNOŚCI: Gdy funkcja to_five trwa x jak to argumentem, 636 00:28:54,840 --> 00:28:58,130 nie bierze x sobie, ale zamiast tworzy kopię, a, z niego. 637 00:28:58,130 --> 00:29:00,115 I to tworzy operacje na tym. 638 00:29:00,115 --> 00:29:02,614 Ale z tego powodu, nie musisz zmienić rzeczywiste wartości x. 639 00:29:02,614 --> 00:29:03,970 Skoro jesteś [niesłyszalne]. 640 00:29:03,970 --> 00:29:07,950 >> PULAK Goyal: Prawo, Dobrze, więc kiedy zadzwonić 641 00:29:07,950 --> 00:29:10,100 to_five funkcji, jakie robimy jest myślenie, 642 00:29:10,100 --> 00:29:12,550 daj mi kopię tego Wartość tej funkcji. 643 00:29:12,550 --> 00:29:16,010 To funkcja, a następnie, będzie i robi jakieś manipulacje. 644 00:29:16,010 --> 00:29:21,260 Ale gdy wraca, to teraz się z zakresu podstawowej funkcji tutaj. 645 00:29:21,260 --> 00:29:24,750 I tak x pozostaje w istocie równy 3, i drukowanie 3. 646 00:29:24,750 --> 00:29:26,445 OK, więc zobaczymy jak to się dzieje. 647 00:29:26,445 --> 00:29:29,430 648 00:29:29,430 --> 00:29:31,180 >> OK, więc nie ma nic oświadczył. 649 00:29:31,180 --> 00:29:34,490 Następnie tu x jest równe 3. 650 00:29:34,490 --> 00:29:40,820 A teraz to jest-- w pozycji dwa, w jeszcze nie jest w zasięgu. 651 00:29:40,820 --> 00:29:46,790 A teraz idziemy do pozycji trzy, gdzie teraz przyjmuje wartość 3. 652 00:29:46,790 --> 00:29:49,380 Na czterech, teraz zmienić od a do 5. 653 00:29:49,380 --> 00:29:53,290 Ale teraz, kiedy wrócić do pięć, które jest instrukcja print, 654 00:29:53,290 --> 00:29:55,380 a jest teraz poza zakresem. 655 00:29:55,380 --> 00:29:57,450 I x jest nadal równa 3. 656 00:29:57,450 --> 00:29:59,700 Czy to ma sens dla każdego? 657 00:29:59,700 --> 00:30:03,010 OK, to teraz porozmawiajmy o tym, jak możemy użyć wskaźników, aby to naprawić. 658 00:30:03,010 --> 00:30:06,140 Czy ktoś ma jakieś pomysły, jak może naprawić za pomocą wskaźników? 659 00:30:06,140 --> 00:30:08,710 660 00:30:08,710 --> 00:30:11,490 >> PUBLICZNOŚCI: Bierzesz w int gwiazdy zamiast int dla to_five. 661 00:30:11,490 --> 00:30:12,530 >> PULAK Goyal: Niestety, można mówić? 662 00:30:12,530 --> 00:30:15,266 >> PUBLICZNOŚCI: Bierzesz w int gwiazdy zamiast int dla to_five. 663 00:30:15,266 --> 00:30:16,140 PULAK Goyal: OK, tak. 664 00:30:16,140 --> 00:30:20,250 Więc pass-- zamiast przekazywać tylko wartość, niech przekazać go przez odniesienie. 665 00:30:20,250 --> 00:30:21,690 Ta nowa funkcja, prawda? 666 00:30:21,690 --> 00:30:25,210 I tak przez przekazanie adresu w, my może zrobić manipulacje na adres. 667 00:30:25,210 --> 00:30:27,400 A więc jesteśmy w rzeczywistości, W rzeczywistości, zmiana x. 668 00:30:27,400 --> 00:30:30,570 Zobaczmy więc, jak to działa. 669 00:30:30,570 --> 00:30:32,950 >> OK, więc w tym przykładzie możemy naprawić go. 670 00:30:32,950 --> 00:30:38,000 Zmieniliśmy nasz podpis z to_five podjąć w int 671 00:30:38,000 --> 00:30:40,540 gwiazda, a nie tylko int tutaj. 672 00:30:40,540 --> 00:30:45,470 Potem wyłuskanie tego 5 A i przypisać do niego. 673 00:30:45,470 --> 00:30:48,090 A teraz to będzie w rzeczywistości, wydrukować 5. 674 00:30:48,090 --> 00:30:51,960 Zobaczmy więc, jak tu pracować kroki. 675 00:30:51,960 --> 00:30:55,200 >> Tak więc w pierwszym etapie, nic jeszcze zgłoszone. 676 00:30:55,200 --> 00:31:00,140 Więc, w drugim etapie, mówiliśmy x jest równa 3, 677 00:31:00,140 --> 00:31:03,970 ale nadal jest poza zakresem. 678 00:31:03,970 --> 00:31:08,100 Teraz w trzeciej linii, mamy x jest nadal równa się trzy. 679 00:31:08,100 --> 00:31:14,150 A teraz, minęło in-- co przechowywane w jest teraz adres x. 680 00:31:14,150 --> 00:31:16,760 Czy to ma sens wszyscy, jak dostaliśmy to? 681 00:31:16,760 --> 00:31:21,470 Dobrze, mamy amper-- to jak minęliśmy znak ampersand x do funkcji 682 00:31:21,470 --> 00:31:23,040 to_five. 683 00:31:23,040 --> 00:31:30,330 A potem do następnej linii, co robimy, to my dereference a. 684 00:31:30,330 --> 00:31:36,120 >> I wyłuskania a, jesteśmy w stanie zmianę wartości X od 3 do 5. 685 00:31:36,120 --> 00:31:38,560 Ponieważ x mieszka pod tym adresem 0x12. 686 00:31:38,560 --> 00:31:42,440 687 00:31:42,440 --> 00:31:45,810 I w końcu, gdy Wracając do głównego, 688 00:31:45,810 --> 00:31:50,570 chociaż a jest obecnie z Zakres, że posiada, w rzeczywistości, zmianie X. 689 00:31:50,570 --> 00:31:51,570 I to jest 5. 690 00:31:51,570 --> 00:31:55,160 Wszelkie pytania na ten temat? 691 00:31:55,160 --> 00:31:56,036 Tak? 692 00:31:56,036 --> 00:31:58,185 >> PUBLICZNOŚCI: Czy możesz mi powiedzieć, co ampersand x było? 693 00:31:58,185 --> 00:32:00,004 Myślałem, handlowe i było jak I. 694 00:32:00,004 --> 00:32:03,480 695 00:32:03,480 --> 00:32:07,210 >> PULAK Goyal: Tak, więc korzystać z tego samego symbol dla wielu różnych rzeczy. 696 00:32:07,210 --> 00:32:11,470 Więc, kiedy have-- w ten przypadek, kiedy trzeba, 697 00:32:11,470 --> 00:32:19,380 I guess-- więc w tym przypadku, gdy masz do czynienia ze wskaźnikami, 698 00:32:19,380 --> 00:32:23,640 kiedy można umieścić znaku handlowego przed z int, int, lub zmiennej char, 699 00:32:23,640 --> 00:32:28,609 lub przepływu, co mówisz to, daj mi adres tego. 700 00:32:28,609 --> 00:32:31,900 Ale co pan myśli, kiedy indziej należy użyć znaku handlowego jest, powiedzmy, 701 00:32:31,900 --> 00:32:33,180 w instrukcji if. 702 00:32:33,180 --> 00:32:39,256 Masz prawdziwe, a niektóre zmienne że oceny w pewnym Boolean, 703 00:32:39,256 --> 00:32:41,380 i inne zmienne że zweryfikować pewne Boolean 704 00:32:41,380 --> 00:32:42,880 i chcesz dostać i to. 705 00:32:42,880 --> 00:32:44,552 Następnie należy użyć znaku handlowego. 706 00:32:44,552 --> 00:32:47,510 1 głośnik: Tak, tak, właśnie dzisiaj, mamy mówił o trzech różnych zastosowań 707 00:32:47,510 --> 00:32:48,250 z ampersand. 708 00:32:48,250 --> 00:32:51,040 Mamy dwóch znaków handlowego, który jest co Pulak właśnie opisane. 709 00:32:51,040 --> 00:32:53,420 Mamy jeden znaku handlowego, który jest to, co opisane Camille 710 00:32:53,420 --> 00:32:54,897 na początku, który jest jednym znaku &. 711 00:32:54,897 --> 00:32:56,685 I to jest dla bitowego AND. 712 00:32:56,685 --> 00:32:59,640 I zauważyć, że zarówno AND-- warunkowe lub, przepraszam, 713 00:32:59,640 --> 00:33:04,180 I logiczne i bitowe I ci, mają dwa numery, prawda? 714 00:33:04,180 --> 00:33:07,354 To było coś, Ampersand coś znaku &, 715 00:33:07,354 --> 00:33:09,350 coś ampersand coś. 716 00:33:09,350 --> 00:33:13,862 Tutaj, kiedy tylko mają ampersanda coś, co jest wyłuskania. 717 00:33:13,862 --> 00:33:15,830 >> PULAK Goyal: Tak, wielkie pytanie. 718 00:33:15,830 --> 00:33:16,677 Tak. 719 00:33:16,677 --> 00:33:21,150 >> PUBLICZNOŚCI: Dlaczego w kolejce 5a i gwiazda się stać N / A? 720 00:33:21,150 --> 00:33:25,520 Dlaczego nie po prostu rodzaj zachowują Te same wartości z poprzedniej linii? 721 00:33:25,520 --> 00:33:28,000 >> PULAK Goyal: Bo my wyszliśmy z funkcji. 722 00:33:28,000 --> 00:33:30,894 A więc co happens-- tak what-- teraz jesteśmy 723 00:33:30,894 --> 00:33:33,060 z zakresu stosowania tej funkcji, co dzieje się w rzeczywistości 724 00:33:33,060 --> 00:33:37,770 jest te są usuwane z pamięci. 725 00:33:37,770 --> 00:33:38,808 Tak. 726 00:33:38,808 --> 00:33:42,982 >> PUBLICZNOŚCI: Między 3 lub 4 gwiazdki A równa się 5. 727 00:33:42,982 --> 00:33:43,690 PULAK Goyal: Tak. 728 00:33:43,690 --> 00:33:45,575 PUBLICZNOŚCI: Co to dokładnie oznacza? 729 00:33:45,575 --> 00:33:46,950 PULAK Goyal: Co to oznacza? 730 00:33:46,950 --> 00:33:47,380 PUBLICZNOŚCI: Tak. 731 00:33:47,380 --> 00:33:49,088 PULAK Goyal: Tak Pytanie było, co jest 732 00:33:49,088 --> 00:33:52,300 that-- co robisz w Internecie gdy mówimy, gwiazda jest równa 5? 733 00:33:52,300 --> 00:33:55,210 Więc pamiętam Star operator wyłuskiwania. 734 00:33:55,210 --> 00:33:58,640 Kiedy więc, w tym przypadku jest to wskaźnik. 735 00:33:58,640 --> 00:34:00,030 To int gwiazdą. 736 00:34:00,030 --> 00:34:03,710 Kiedy więc dereference A przez za pomocą gwiazdki, co mówimy 737 00:34:03,710 --> 00:34:11,250 jest, przejdź do tego, co jest przechowywane w adres, przechowywane w A-- tak take-- więc, 738 00:34:11,250 --> 00:34:13,280 teraz, ma jedne Adres przechowywane w nim. 739 00:34:13,280 --> 00:34:19,920 Idź gdzie ten punktów adresowych do i teraz zmienić cokolwiek to jest do pięciu. 740 00:34:19,920 --> 00:34:20,420 Tak. 741 00:34:20,420 --> 00:34:23,390 >> PUBLICZNOŚCI: Czy można powiedzieć, to w prostszy sposób? 742 00:34:23,390 --> 00:34:27,360 Zmianę adresu do 5. 743 00:34:27,360 --> 00:34:31,070 >> PULAK Goyal: Nie jesteśmy zmianę adresu do 5. 744 00:34:31,070 --> 00:34:36,340 A ma jakiś adres w tym, co jest adres zmiennej zainteresowania. 745 00:34:36,340 --> 00:34:39,570 A więc to, co mówimy kiedy dereference jest, 746 00:34:39,570 --> 00:34:42,630 teraz chcemy change-- jesteśmy teraz odwołanie 747 00:34:42,630 --> 00:34:45,135 procentowej zmiennej bezpośrednio. 748 00:34:45,135 --> 00:34:48,499 Czy to ma sens? 749 00:34:48,499 --> 00:34:52,280 >> Głośnik 1: Inny sposób myślenia z jest go-- więc jest adres. 750 00:34:52,280 --> 00:34:55,310 Gwiazda twierdzi, że udać się do zajęcia i spojrzeć na jego wartości. 751 00:34:55,310 --> 00:34:58,000 A teraz ustawić jej wartość na 5. 752 00:34:58,000 --> 00:35:00,920 Więc mówi, przejdź do adres X, które 753 00:35:00,920 --> 00:35:05,720 będzie to, co jest przechowywane w sposób i zmienić go na 5. 754 00:35:05,720 --> 00:35:06,470 PULAK Goyal: Tak? 755 00:35:06,470 --> 00:35:10,817 PUBLICZNOŚCI: Więc sytuacja jest, gdy wskaźnik będzie, adres. 756 00:35:10,817 --> 00:35:14,270 Ale wartość jest przypisany wartość na podstawie adresu. 757 00:35:14,270 --> 00:35:15,020 PULAK Goyal: Tak. 758 00:35:15,020 --> 00:35:18,076 759 00:35:18,076 --> 00:35:19,367 Wszelkie inne pytania na ten temat? 760 00:35:19,367 --> 00:35:22,774 761 00:35:22,774 --> 00:35:23,940 PUBLICZNOŚCI: Mam pytanie. 762 00:35:23,940 --> 00:35:25,664 PULAK Goyal: Tak, przepraszam. 763 00:35:25,664 --> 00:35:30,324 PUBLICZNOŚCI: Więc kiedy store-- tak jeśli mówisz [niesłyszalne] a. 764 00:35:30,324 --> 00:35:31,032 PULAK Goyal: Tak. 765 00:35:31,032 --> 00:35:34,448 PUBLICZNOŚCI: Czy trzeba przechowywać X z ampersand? 766 00:35:34,448 --> 00:35:37,376 Dlaczego nie można po prostu powiedzieć, x przed int [niesłyszalne]? 767 00:35:37,376 --> 00:35:40,562 768 00:35:40,562 --> 00:35:41,270 PULAK Goyal: SO- 769 00:35:41,270 --> 00:35:42,090 PUBLICZNOŚCI: [niesłyszalne]. 770 00:35:42,090 --> 00:35:43,673 PULAK Goyal: Więc jest twój question-- och. 771 00:35:43,673 --> 00:35:47,160 772 00:35:47,160 --> 00:35:51,300 Więc pytanie brzmi, dlaczego nie we-- do to_five funkcji, dlaczego nie możemy 773 00:35:51,300 --> 00:35:52,590 po prostu zdać x, prawda? 774 00:35:52,590 --> 00:35:53,570 >> PUBLICZNOŚCI: Racja. 775 00:35:53,570 --> 00:35:59,570 >> PULAK Goyal: OK, tak, tak, to znowu wraca do naszej dyskusji na temat typów. 776 00:35:59,570 --> 00:36:06,080 Więc to_five funkcja jest obecnie spodziewa się typ int gwiazdy. 777 00:36:06,080 --> 00:36:07,660 Więc co to jest typ x? 778 00:36:07,660 --> 00:36:09,800 X jest tylko int. 779 00:36:09,800 --> 00:36:13,530 Ale co ta funkcja oczekuje, jest int gwiazdą. 780 00:36:13,530 --> 00:36:16,910 Więc to, że spodziewa się zmienną ma adres przechowywany w nim. 781 00:36:16,910 --> 00:36:20,250 Więc tak you-- umieścić ampersand, a więc to, 782 00:36:20,250 --> 00:36:22,560 jak przejść w adres, który jest now-- 783 00:36:22,560 --> 00:36:25,120 i interpretuje, że jako int gwiazdy, tak. 784 00:36:25,120 --> 00:36:26,700 Świetne pytanie. 785 00:36:26,700 --> 00:36:29,300 Wszelkie inne pytania w tej sprawie? 786 00:36:29,300 --> 00:36:29,800 Ok fajnie. 787 00:36:29,800 --> 00:36:32,870 788 00:36:32,870 --> 00:36:37,020 >> OK, to teraz porozmawiajmy o wskaźnik arytmetyki. 789 00:36:37,020 --> 00:36:40,050 Więc tutaj, dodawanie i odejmowanie i ustawia wskaźnik 790 00:36:40,050 --> 00:36:43,950 przez I razy większa od rodzaj bajtów wskaźnika. 791 00:36:43,950 --> 00:36:46,170 Warto więc przyjrzeć się, jak to wygląda. 792 00:36:46,170 --> 00:36:49,640 Więc, mamy zadeklarowane int x równa 5. 793 00:36:49,640 --> 00:36:56,120 A teraz mamy zamiar zadeklarować wskaźnik y, i przechodzą w adresie X istnieje. 794 00:36:56,120 --> 00:36:58,910 Mamy więc, że. 795 00:36:58,910 --> 00:37:01,005 Tak więc x przechowuje się 0x04. 796 00:37:01,005 --> 00:37:03,960 Więc teraz, y jest równe. 797 00:37:03,960 --> 00:37:12,260 A może ktoś mi powiedzieć co myślą się stanie, gdy robimy y oraz równa się 1? 798 00:37:12,260 --> 00:37:19,100 799 00:37:19,100 --> 00:37:19,771 Tak? 800 00:37:19,771 --> 00:37:24,010 >> PUBLICZNOŚCI: Czy zmieni się na 0 razy w 0 8? 801 00:37:24,010 --> 00:37:25,342 >> PULAK Goyal: Rozmiar i type-- 802 00:37:25,342 --> 00:37:27,789 >> PUBLICZNOŚCI: Ty jesteś w ruchu adres. 803 00:37:27,789 --> 00:37:29,080 PULAK Goyal: Tak, to was-- tak. 804 00:37:29,080 --> 00:37:31,130 Więc dobrze. 805 00:37:31,130 --> 00:37:33,110 Tak to się zmieni do 0x08. 806 00:37:33,110 --> 00:37:38,750 I because-- więc chcesz skorzystać z tej Formuła 1 razy większy od wskaźnika 807 00:37:38,750 --> 00:37:42,354 i wskaźniki są size-- 808 00:37:42,354 --> 00:37:44,050 >> [STUDENCI szmer] 809 00:37:44,050 --> 00:37:45,190 >> PULAK Goyal: Racja. 810 00:37:45,190 --> 00:37:46,150 >> [STUDENCI szmer] 811 00:37:46,150 --> 00:37:49,230 >> Głośnik 1: Więc typem, który wskaźnik pokazywał to-- 812 00:37:49,230 --> 00:37:51,862 >> PULAK Goyal: Czy, tak, tak, to jest 4 bajty. 813 00:37:51,862 --> 00:37:53,930 >> Głośnik 1: Więc int są 4 bajty. 814 00:37:53,930 --> 00:38:01,260 >> PULAK Goyal: Czyli gdybyśmy A-- Miejmy powiedzieć, że oświadczył, myślę, char. 815 00:38:01,260 --> 00:38:06,830 Co by that-- więc powiedzmy, że mają char x równa lub coś. 816 00:38:06,830 --> 00:38:14,400 I mieliśmy adres, że w 0x04, co by y oraz równa 1 teraz zrobić? 817 00:38:14,400 --> 00:38:14,960 Przepraszam, co? 818 00:38:14,960 --> 00:38:16,099 >> PUBLICZNOŚCI: 0x05. 819 00:38:16,099 --> 00:38:17,140 PULAK Goyal: 0x05, w prawo. 820 00:38:17,140 --> 00:38:18,520 Czy każdy widzi? 821 00:38:18,520 --> 00:38:20,212 OK, a teraz załóżmy, że jest to pływak. 822 00:38:20,212 --> 00:38:20,962 Co by się stało? 823 00:38:20,962 --> 00:38:25,210 824 00:38:25,210 --> 00:38:26,130 Kogokolwiek? 825 00:38:26,130 --> 00:38:28,066 Więc pływaki są jak wiele bajtów? 826 00:38:28,066 --> 00:38:28,860 >> PUBLICZNOŚCI: 4 bajty. 827 00:38:28,860 --> 00:38:29,651 >> PULAK Goyal: Racja. 828 00:38:29,651 --> 00:38:32,661 Tak więc byłoby to samo, co ten. 829 00:38:32,661 --> 00:38:33,160 Chłodny. 830 00:38:33,160 --> 00:38:36,230 831 00:38:36,230 --> 00:38:40,180 OK, a teraz porozmawiajmy o wskaźniki i tablice. 832 00:38:40,180 --> 00:38:44,210 Więc widziałem to na Poprzednie dwa zestawy p, 833 00:38:44,210 --> 00:38:48,570 gdzie możemy treat-- więc tablice i wskaźniki nie są tym samym. 834 00:38:48,570 --> 00:38:51,170 Ale tablice możemy traktować jako wskazówki. 835 00:38:51,170 --> 00:38:55,550 Więc tutaj mamy tę tablicę Tutaj, która ma trzy otwory. 836 00:38:55,550 --> 00:38:57,570 W pierwszym slot-- my mają jeden, dwa i trzy. 837 00:38:57,570 --> 00:39:00,930 >> Więc jeśli we-- więc możemy przypisać że mówiąc, mamy tablicę, 838 00:39:00,930 --> 00:39:02,080 wyłuskanie tego. 839 00:39:02,080 --> 00:39:04,579 A potem, kiedy wyłuskiwania , że to, co mamy rzeczywiście robi 840 00:39:04,579 --> 00:39:05,910 odnosi się do tej samej szczeliny. 841 00:39:05,910 --> 00:39:09,230 Tak gwiazda tablica jest równa 1. 842 00:39:09,230 --> 00:39:11,020 Mamy could- jak można piszemy that-- co 843 00:39:11,020 --> 00:39:13,404 alternatywny sposób możemy napisać, że? 844 00:39:13,404 --> 00:39:14,840 >> PUBLICZNOŚCI: Array 0 równa 1. 845 00:39:14,840 --> 00:39:17,100 >> PULAK Goyal: Dokładnie, nie każdy widzi? 846 00:39:17,100 --> 00:39:18,320 Tak samo z tutaj. 847 00:39:18,320 --> 00:39:24,060 Więc kiedy mamy tablicę plus 1, mamy do-- tak even-- 848 00:39:24,060 --> 00:39:28,890 pamiętam z arytmetyki, że tak mówił o, gdy robimy plus 1 849 00:39:28,890 --> 00:39:32,120 lub przenieść go przez 4 bajty, prawda. 850 00:39:32,120 --> 00:39:33,170 Czy każdy widzi? 851 00:39:33,170 --> 00:39:35,753 A to z boku, kiedy wyłuskiwania że możemy ustawić, że do 2. 852 00:39:35,753 --> 00:39:37,710 A to, jak ustawić następny blok do 2. 853 00:39:37,710 --> 00:39:41,640 I tak alternatywny sposób napisać byłoby również wspornik tablicy 854 00:39:41,640 --> 00:39:44,436 0 Uchwyt jest równa 1. 855 00:39:44,436 --> 00:39:47,070 >> PUBLICZNOŚCI: Czy potrzebujesz nawiasy? 856 00:39:47,070 --> 00:39:50,840 >> PULAK Goyal: Tak, dlatego, że jesteś wyłuskania całej ilości 857 00:39:50,840 --> 00:39:53,460 Tablica plus 1. 858 00:39:53,460 --> 00:39:56,829 OK, a samo na tablicy plus 2. 859 00:39:56,829 --> 00:39:57,870 Wszelkie pytania na ten temat? 860 00:39:57,870 --> 00:39:58,369 Tak. 861 00:39:58,369 --> 00:40:01,340 PUBLICZNOŚCI: Więc tablica jest automatycznie ustawiany na 0? 862 00:40:01,340 --> 00:40:03,054 >> PULAK Goyal: Array jest-- Przepraszam, co? 863 00:40:03,054 --> 00:40:03,962 >> PUBLICZNOŚCI: Array 0. 864 00:40:03,962 --> 00:40:07,140 Adres tablicy jest po prostu 0. 865 00:40:07,140 --> 00:40:10,200 >> PULAK Goyal: Więc pytanie było, jest adresem tablicy tylko 0? 866 00:40:10,200 --> 00:40:11,950 Tak więc, nie, tablica ma jakiś adres. 867 00:40:11,950 --> 00:40:14,930 Kiedy więc wyłuskanie tego, that's-- tak można myśleć about-- 868 00:40:14,930 --> 00:40:18,230 dosłownie jak wskazując kursorem do początku tablicy. 869 00:40:18,230 --> 00:40:19,390 Tak, że ma jakiś adres. 870 00:40:19,390 --> 00:40:20,580 Nie wiemy, co to jest. 871 00:40:20,580 --> 00:40:24,170 Ale kiedy dereference nim wiemy to początek tablicy. 872 00:40:24,170 --> 00:40:25,980 I tak, kiedy poruszamy się przez 1, po prostu przesuwając 873 00:40:25,980 --> 00:40:29,090 w stosunku do których, że adres był. 874 00:40:29,090 --> 00:40:30,480 Jakieś inne pytania? 875 00:40:30,480 --> 00:40:31,419 Tak? 876 00:40:31,419 --> 00:40:35,559 >> PUBLICZNOŚCI: Więc jeśli nie Wspornik tablicy oraz 1-- 877 00:40:35,559 --> 00:40:37,350 PULAK Goyal: Niestety, Ja-- można mówić? 878 00:40:37,350 --> 00:40:41,174 PUBLICZNOŚCI: Tak, jeśli nie Wspornik tablicy [niesłyszalne]. 879 00:40:41,174 --> 00:40:45,227 Więc jeśli umieścisz pointer-- 880 00:40:45,227 --> 00:40:46,810 PULAK Goyal: Niestety, nie mogę Cię usłyszeć. 881 00:40:46,810 --> 00:40:48,100 Czy możesz powiedzieć to jeszcze raz? 882 00:40:48,100 --> 00:40:49,470 >> PUBLICZNOŚCI: Jesteś OK. 883 00:40:49,470 --> 00:40:50,870 >> PULAK Goyal: OK, przepraszam. 884 00:40:50,870 --> 00:40:51,420 Ok fajnie. 885 00:40:51,420 --> 00:40:52,200 Any-- tak. 886 00:40:52,200 --> 00:40:55,710 Więc kiedy idziesz w uchwycie tablicy 3-- 887 00:40:55,710 --> 00:40:56,570 >> PULAK Goyal: Tak. 888 00:40:56,570 --> 00:40:59,832 >> PUBLICZNOŚCI: --isn't there-- nie to cztery miejsca takich jak 0, 1, 2 i 3? 889 00:40:59,832 --> 00:41:02,630 Dlaczego nie int tablicy 2? 890 00:41:02,630 --> 00:41:07,850 >> PULAK Goyal: Nie, tak po prostu konwencja od C jest-- kiedy zadeklarować tablicę, 891 00:41:07,850 --> 00:41:12,010 we-- numer kładziemy tam to, ile slotów chcemy. 892 00:41:12,010 --> 00:41:16,970 A indeksy tablicy są faktycznie tablica 0, tablica 1 i tablica 2. 893 00:41:16,970 --> 00:41:19,780 Więc to tylko konwencja na jak deklarowania tablic. 894 00:41:19,780 --> 00:41:20,880 Tak, jakieś inne pytania? 895 00:41:20,880 --> 00:41:21,380 Tak. 896 00:41:21,380 --> 00:41:23,750 PUBLICZNOŚCI: Więc nadal jesteśmy mówić o wskazówki, prawda? 897 00:41:23,750 --> 00:41:24,500 PULAK Goyal: Tak. 898 00:41:24,500 --> 00:41:28,600 PUBLICZNOŚCI: Czy możesz jeszcze zrobić gwiazda na tablicy 0 równa się 1? 899 00:41:28,600 --> 00:41:32,870 PULAK Goyal: Nie, nie, SO- OK, więc pytanie było mogłem 900 00:41:32,870 --> 00:41:37,370 po prostu zrobić gwiazdy wspornik tablicy zero, a potem mówią, że równy 1. 901 00:41:37,370 --> 00:41:40,000 Tak więc, nie, co mówimy tutaj jest to, że możemy think-- 902 00:41:40,000 --> 00:41:42,600 tablice możemy traktować jako wskazówki. 903 00:41:42,600 --> 00:41:44,970 Więc have-- co mamy Powiedzenie to mamy dwa sposoby 904 00:41:44,970 --> 00:41:47,370 do teraz odwoływać się do tego samego bloku. 905 00:41:47,370 --> 00:41:52,270 Więc doing-- jeśli masz tablicę zerowy, rodzaj, który jest obecnie int. 906 00:41:52,270 --> 00:41:55,264 A jeśli zdecydujesz się na gwiazdę, która, masz nieprawidłowy rzeczy. 907 00:41:55,264 --> 00:41:57,680 Więc to, co mówimy tu jest istnieją dwa alternatywne sposoby 908 00:41:57,680 --> 00:41:59,100 odnosi się do tego samego bloku. 909 00:41:59,100 --> 00:42:01,860 Możesz też zrobić tablicę Uchwyt 0 jest równa 1. 910 00:42:01,860 --> 00:42:06,420 Albo możesz zrobić dereference macierz, i, że równy 0. 911 00:42:06,420 --> 00:42:08,621 Więc po prostu dwa sposoby robi to samo. 912 00:42:08,621 --> 00:42:09,120 Tak. 913 00:42:09,120 --> 00:42:15,270 >> PUBLICZNOŚCI: Dlaczego nie jest to rozmiar int 1 dodać to-- 914 00:42:15,270 --> 00:42:17,650 >> PULAK Goyal: Rozmiar int 1. 915 00:42:17,650 --> 00:42:19,900 >> PUBLICZNOŚCI: Bo to przesuwając jeden off. 916 00:42:19,900 --> 00:42:23,620 >> PULAK Goyal: Bo to tak, jak C działa. 917 00:42:23,620 --> 00:42:26,460 To tak, jak wskaźnik arytmetyka jest zdefiniowana. 918 00:42:26,460 --> 00:42:27,854 To zajmie wskaźnik. 919 00:42:27,854 --> 00:42:30,020 A potem cokolwiek dodać do niego, to będzie pomnożyć 920 00:42:30,020 --> 00:42:34,770 o wielkości co sklep wskaźnik jest, tak. 921 00:42:34,770 --> 00:42:35,480 Tak. 922 00:42:35,480 --> 00:42:39,595 >> PUBLICZNOŚCI: Więc mówisz, możemy traktować wskaźniki i tablice takie same, 923 00:42:39,595 --> 00:42:40,720 ale, że są one różne. 924 00:42:40,720 --> 00:42:41,950 Więc co sprawia, że ​​są różne? 925 00:42:41,950 --> 00:42:45,070 Co możemy nie zrobić z jeden, ale nie inne? 926 00:42:45,070 --> 00:42:52,390 >> PULAK Goyal: Dla celów niniejszej klasy, myślę it's-- co zrobić you-- 927 00:42:52,390 --> 00:42:56,270 >> 1 głośnik: Tak, we-- OK, więc, dla Przykładowo, jeśli przydzielić pamięci 928 00:42:56,270 --> 00:42:59,680 i masz wskaźnik do liczbą całkowitą, np. 929 00:42:59,680 --> 00:43:01,890 Jeśli próbowałeś uruchomić robi arytmetyki wskaźników 930 00:43:01,890 --> 00:43:05,890 i wykracza poza ilością pamięci Ci przydzielone, można uruchomić do błędów. 931 00:43:05,890 --> 00:43:08,250 Wiemy, z tablicami, mamy powiedzieć z wyprzedzeniem, OK, 932 00:43:08,250 --> 00:43:11,400 chcą allocate-- to zasadniczo mówi, chce przeznaczyć 933 00:43:11,400 --> 00:43:13,490 wystarczająco dużo miejsca dla trzech liczb całkowitych. 934 00:43:13,490 --> 00:43:17,820 A więc teraz możemy traktować pamięć jakby mamy wszystkie trzy z tych liczb. 935 00:43:17,820 --> 00:43:19,460 Czy tego rodzaju ma sens? 936 00:43:19,460 --> 00:43:22,042 >> PULAK Goyal: Tak. 937 00:43:22,042 --> 00:43:22,542 Tak. 938 00:43:22,542 --> 00:43:24,778 >> PUBLICZNOŚCI: Tak gwiazdą tablica, jest to, że przypisanie 1 939 00:43:24,778 --> 00:43:26,657 z indeksem macierzy 0? 940 00:43:26,657 --> 00:43:27,365 PULAK Goyal: Tak. 941 00:43:27,365 --> 00:43:31,160 942 00:43:31,160 --> 00:43:34,439 >> PUBLICZNOŚCI: Tak, to jest po Następne dwie linie w zakresie the-- I 943 00:43:34,439 --> 00:43:36,980 Rozumiem, że starasz w użyciu arytmetyki wskaźników tutaj, 944 00:43:36,980 --> 00:43:39,355 ale znowu nie rozumiem co wskaźnik arytmetyka jest. 945 00:43:39,355 --> 00:43:43,869 Więc tablica plus 1, jesteś mówiąc, że jesteś teraz 946 00:43:43,869 --> 00:43:47,540 będzie chciał rozmawiać o pierwszy indeks do tablicy. 947 00:43:47,540 --> 00:43:50,050 >> PULAK Goyal: Prawo, a więc Dlatego, że działa to tablica, 948 00:43:50,050 --> 00:43:52,970 tutaj, możemy myśleć jako int gwiazdy. 949 00:43:52,970 --> 00:43:56,110 I tak, gdy mamy arytmetyki wskaźników na nim, pamiętaj o wzorze w którym 950 00:43:56,110 --> 00:43:59,020 bierzemy the-- Myślę, że niezależnie aktualny adres, 951 00:43:59,020 --> 00:44:02,100 a gdy dodamy 1 do niej rzeczywiście 952 00:44:02,100 --> 00:44:06,620 pomnożyć 1 wielkością rzecz jesteśmy manipulacji. 953 00:44:06,620 --> 00:44:09,090 Tak więc w tym przypadku, wielkość int. 954 00:44:09,090 --> 00:44:11,634 A potem przenieść go przekazania przez tyle. 955 00:44:11,634 --> 00:44:14,419 >> Głośnik 1: Więc udawaj masz gwiazdę b tablicy. 956 00:44:14,419 --> 00:44:15,335 PULAK Goyal: OK, tak. 957 00:44:15,335 --> 00:44:16,005 Głośnik 1: Ze swojej strony. 958 00:44:16,005 --> 00:44:16,505 Przejdź tutaj. 959 00:44:16,505 --> 00:44:18,350 PULAK Goyal: Albo Ja tylko tak. 960 00:44:18,350 --> 00:44:23,660 Więc here-- OK, więc tablica u początek, to tylko tutaj. 961 00:44:23,660 --> 00:44:29,155 Kiedy więc dereference tablicy, byliśmy tylko odnosząc się do pierwszego bloku tutaj. 962 00:44:29,155 --> 00:44:36,620 Ale teraz, kiedy mam zrobić tablicę plus 1, które jest-- tej strzałki jest teraz tutaj. 963 00:44:36,620 --> 00:44:38,250 Czy to ma sens? 964 00:44:38,250 --> 00:44:46,690 Racja, bo ten blok jest od wielkości int, który jest 4 bajty. 965 00:44:46,690 --> 00:44:53,540 I tak, co robimy, to my jesteśmy porusza ten wskaźnik przez ponad 4 bajtów. 966 00:44:53,540 --> 00:44:56,080 Zawsze, gdy robimy arytmetyki na to, że będzie zawsze 967 00:44:56,080 --> 00:44:59,730 przenieść go skokowo o 4 bajty. 968 00:44:59,730 --> 00:45:01,902 Bo to jest jak int gwiazdy. 969 00:45:01,902 --> 00:45:04,970 Czy to ma sens? 970 00:45:04,970 --> 00:45:05,470 OK. 971 00:45:05,470 --> 00:45:07,770 >> PUBLICZNOŚCI: Więc rzeczy w tablicy Było 5 bajtów, chcemy przenieść go 5 bytes-- 972 00:45:07,770 --> 00:45:10,853 >> PULAK Goyal: Dobrze, więc jeśli mieliśmy char gwiazda, chcemy przenieść go tylko o 1 bajt. 973 00:45:10,853 --> 00:45:13,670 Tak więc w przypadku gwiazd char, że to po prostu przenieść go o 1. 974 00:45:13,670 --> 00:45:15,420 PUBLICZNOŚCI: Aby w Następnie musisz gwiazdę. 975 00:45:15,420 --> 00:45:18,099 PULAK Goyal: Tak, tak, czy to ma sens? 976 00:45:18,099 --> 00:45:19,890 Głośnik 1: Możemy porozmawiać o tym później. 977 00:45:19,890 --> 00:45:21,530 PULAK Goyal: Tak, tak, na pewno. 978 00:45:21,530 --> 00:45:23,214 Ok fajnie. 979 00:45:23,214 --> 00:45:24,630 Przejdźmy do następnej części. 980 00:45:24,630 --> 00:45:27,182 981 00:45:27,182 --> 00:45:28,140 Głośnik 1: Och, OK, fajnie. 982 00:45:28,140 --> 00:45:29,205 Tak, to ja. 983 00:45:29,205 --> 00:45:30,330 Wszystko w porządku, niesamowite. 984 00:45:30,330 --> 00:45:35,064 OK, fajnie, więc teraz jesteśmy na trochę Więcej informacje na temat pamięci. 985 00:45:35,064 --> 00:45:37,730 Ponadto, doceniam fakt, że że idą dość szybko. 986 00:45:37,730 --> 00:45:40,230 To dużo materiału, aby uzyskać przez godzinę i pół. 987 00:45:40,230 --> 00:45:42,880 Ale czy są jakieś tematy, chce iść bardziej pogłębione w, 988 00:45:42,880 --> 00:45:44,630 będziemy mieć godziny pracy w tym tygodniu 989 00:45:44,630 --> 00:45:46,340 gdzie można porozmawiać z nami jeden na jednego. 990 00:45:46,340 --> 00:45:49,240 Albo może po prostu wymyślić u końca i będziemy rozmawiać o rzeczach. 991 00:45:49,240 --> 00:45:52,130 I jak zawsze, czuję do zadawania pytań. 992 00:45:52,130 --> 00:45:52,695 Niesamowite. 993 00:45:52,695 --> 00:45:55,820 Więc tutaj jest nasz obraz pamięci widzieliśmy w wykładzie miliard razy. 994 00:45:55,820 --> 00:45:58,610 I wiemy, że ten stos rośnie od dołu 995 00:45:58,610 --> 00:46:00,214 i sterta rośnie w dół. 996 00:46:00,214 --> 00:46:03,380 A jaka jest różnica między rzeczami które trzymamy na stercie i rzeczy 997 00:46:03,380 --> 00:46:05,981 które trzymamy na stosie? 998 00:46:05,981 --> 00:46:07,397 Ktoś rzucić coś tam. 999 00:46:07,397 --> 00:46:10,806 1000 00:46:10,806 --> 00:46:11,780 Tak. 1001 00:46:11,780 --> 00:46:14,215 >> PUBLICZNOŚCI: Czy stos na rzeczy, które są po prostu 1002 00:46:14,215 --> 00:46:18,095 zmienne, nietrwałe, że jesteśmy po prostu deklarując przy użyciu niektórych funkcji? 1003 00:46:18,095 --> 00:46:19,220 Głośnik 1: Piękny, tak. 1004 00:46:19,220 --> 00:46:23,007 Więc za każdym razem, gdy, powiedzmy, powiedzieć, że jesteśmy w funkcji, 1005 00:46:23,007 --> 00:46:24,590 i po prostu mają pewne zmienne lokalne. 1006 00:46:24,590 --> 00:46:26,214 Ci, zamiar skończyć na stosie. 1007 00:46:26,214 --> 00:46:30,020 Jeśli zamiast nazywamy malloc i rzeczywiście przydzielić pamięci, 1008 00:46:30,020 --> 00:46:32,290 że zawsze przychodzi ze sterty. 1009 00:46:32,290 --> 00:46:35,100 Więc tak fajne? 1010 00:46:35,100 --> 00:46:38,672 >> A więc pamiętać, że jakiekolwiek pamięci które można przydzielić za pomocą malloc, 1011 00:46:38,672 --> 00:46:40,130 , że skończy się na stercie. 1012 00:46:40,130 --> 00:46:42,019 A jeśli zapomnisz za darmo to, Komputer użytkownika 1013 00:46:42,019 --> 00:46:43,810 Nie będziemy wiedzieć, że jesteś z nim zrobić. 1014 00:46:43,810 --> 00:46:45,560 Więc to po prostu będzie spędzać czas tam w pamięci. 1015 00:46:45,560 --> 00:46:47,412 I jesteś w istocie przecieki, że pamięć. 1016 00:46:47,412 --> 00:46:48,120 Tracisz go. 1017 00:46:48,120 --> 00:46:51,840 Bo nigdy nie powiedział, komputer, hej Skończyłem go używać, zachęcamy do korzystania, 1018 00:46:51,840 --> 00:46:53,632 umieścić inne rzeczy tam. 1019 00:46:53,632 --> 00:46:54,470 Chłodny. 1020 00:46:54,470 --> 00:46:55,928 Jakieś pytania? 1021 00:46:55,928 --> 00:46:56,428 Tak. 1022 00:46:56,428 --> 00:46:58,808 >> PUBLICZNOŚCI: Więc co to pamięci jest stos? 1023 00:46:58,808 --> 00:46:59,974 Nie dynamiczne paszy, delegowany? 1024 00:46:59,974 --> 00:47:01,200 Co by to nazwać? 1025 00:47:01,200 --> 00:47:03,870 >> Głośnik 1: Jasne, więc mogłem myśleć o tym jak zmienne lokalne. 1026 00:47:03,870 --> 00:47:10,137 Rzeczywiste wywołania funkcji zamiar stos. 1027 00:47:10,137 --> 00:47:10,720 Cokolwiek innego? 1028 00:47:10,720 --> 00:47:11,220 Tak? 1029 00:47:11,220 --> 00:47:14,627 PUBLICZNOŚCI: Jak za darmo pamięci można dodać do the-- 1030 00:47:14,627 --> 00:47:17,710 Głośnik 1: Jasne, więc jeśli przydzielić pamięci na stercie, zadzwonić malloc. 1031 00:47:17,710 --> 00:47:20,543 I tak to, że daje z powrotem wskaźnik do jakiegoś adresu w pamięci. 1032 00:47:20,543 --> 00:47:22,630 Więc mówisz, że nazywa się ten wskaźnik, prawda? 1033 00:47:22,630 --> 00:47:24,970 Następnie, po prostu powiedzieć bezpłatny wskaźnik. 1034 00:47:24,970 --> 00:47:27,351 A to zwalnia pamięć. 1035 00:47:27,351 --> 00:47:27,850 Chłodny. 1036 00:47:27,850 --> 00:47:28,660 Inne pytania? 1037 00:47:28,660 --> 00:47:28,880 Tak. 1038 00:47:28,880 --> 00:47:30,838 >> PUBLICZNOŚCI: Co dynamicznie przydzielane na myśli? 1039 00:47:30,838 --> 00:47:32,345 1040 00:47:32,345 --> 00:47:35,381 >> Głośnik 1: dynamicznie przydzielane Oznacza, w trakcie programu. 1041 00:47:35,381 --> 00:47:37,630 Więc kiedy zadzwonisz malloc w w połowie programu, 1042 00:47:37,630 --> 00:47:40,510 na początku programu nie ma przydzielone pamięci. 1043 00:47:40,510 --> 00:47:42,600 I tak jak w komputerze krok po kroku tego kodeksu, 1044 00:47:42,600 --> 00:47:44,280 to będzie przydzielić pamięci. 1045 00:47:44,280 --> 00:47:46,507 Więc to, co rozumiemy przez dynamicznie. 1046 00:47:46,507 --> 00:47:47,090 Dobre pytanie. 1047 00:47:47,090 --> 00:47:48,309 Tak? 1048 00:47:48,309 --> 00:47:50,809 PUBLICZNOŚCI: Podczas definiowania Tablica w nawiasach kwadratowych, 1049 00:47:50,809 --> 00:47:54,154 robi to nadal [niesłyszalne]? 1050 00:47:54,154 --> 00:47:55,570 Głośnik 1: To jest dobre pytanie. 1051 00:47:55,570 --> 00:48:00,320 Myślę, że jeśli przydzielić tablicę, faktycznie stawia go na stosie. 1052 00:48:00,320 --> 00:48:03,008 Nie jestem pozytywnie że tak mnie nie cytować. 1053 00:48:03,008 --> 00:48:04,430 >> GŁOŚNIK 2: Myślę it-- tak stawia go na stosie. 1054 00:48:04,430 --> 00:48:05,763 >> Głośnik 1: Stawia go na stosie. 1055 00:48:05,763 --> 00:48:07,044 OK, fajnie, potwierdzone. 1056 00:48:07,044 --> 00:48:07,710 Inne pytania? 1057 00:48:07,710 --> 00:48:08,030 Tak? 1058 00:48:08,030 --> 00:48:10,946 >> PUBLICZNOŚCI: Kiedy delegować malloc, nie komputer automatycznie 1059 00:48:10,946 --> 00:48:12,910 przydzielić pamięci dla zmiennych? 1060 00:48:12,910 --> 00:48:14,660 1 głośnik: Tak, dla Twoje lokalne zmienne, 1061 00:48:14,660 --> 00:48:16,724 automatycznie umieszcza pamięci na stosie. 1062 00:48:16,724 --> 00:48:18,640 PUBLICZNOŚCI: Więc co jest punkt za pomocą malloc? 1063 00:48:18,640 --> 00:48:19,840 Głośnik 1: Jaki jest punkt za pomocą malloc? 1064 00:48:19,840 --> 00:48:22,850 Więc widzieliśmy kilka przykładów, takich jak, na przykład, przy użyciu swap 1065 00:48:22,850 --> 00:48:25,690 gdzie chcemy zakres zmienna być coś 1066 00:48:25,690 --> 00:48:27,940 poza tylko jego wywołania funkcji. 1067 00:48:27,940 --> 00:48:29,875 I chcemy coś że możemy przejść wokół 1068 00:48:29,875 --> 00:48:31,750 i że mamy dostęp z różnych miejsc. 1069 00:48:31,750 --> 00:48:33,791 To gdzie my chcemy umieścić pamięć na stercie. 1070 00:48:33,791 --> 00:48:37,835 Tak, że wszystkie te różne funkcje do niego dostęp. 1071 00:48:37,835 --> 00:48:40,510 >> PUBLICZNOŚCI: Może po prostu wyjaśnić? 1072 00:48:40,510 --> 00:48:44,770 >> Głośnik 1: Więc jedna opcja jest-- więc Pytanie było, możemy po prostu allocate-- 1073 00:48:44,770 --> 00:48:47,660 Przepraszam, możemy zadeklarować zmienna globalna, zasadniczo. 1074 00:48:47,660 --> 00:48:48,560 To jest jedna z opcji. 1075 00:48:48,560 --> 00:48:50,893 Ale z wielu tych, tych, stają się bardzo brudny. 1076 00:48:50,893 --> 00:48:52,847 I na ogół, że od tego, jak zły projektowania. 1077 00:48:52,847 --> 00:48:53,821 Tak. 1078 00:48:53,821 --> 00:48:56,580 Fajne, jakieś inne pytania? 1079 00:48:56,580 --> 00:48:57,140 Niesamowite. 1080 00:48:57,140 --> 00:48:58,789 OK, przejściem. 1081 00:48:58,789 --> 00:49:00,580 Więc to jest rzeczywiście jak przydzielić pamięci. 1082 00:49:00,580 --> 00:49:02,670 Rozmawialiśmy o tym trochę. 1083 00:49:02,670 --> 00:49:04,240 Używamy tej funkcji o nazwie malloc. 1084 00:49:04,240 --> 00:49:07,850 I powiedzieć, jak wiele bajtów pamięci, tak jak wiele bajtów na stercie, 1085 00:49:07,850 --> 00:49:08,610 Ty chcesz. 1086 00:49:08,610 --> 00:49:13,120 I to będzie powrócić adres, więc wskaźnik do, kawałek pamięci 1087 00:49:13,120 --> 00:49:14,500 że to przeznaczono dla Ciebie. 1088 00:49:14,500 --> 00:49:17,080 Więc typu będzie nieważne gwiazdą. 1089 00:49:17,080 --> 00:49:21,310 To będzie wskaźnikiem do Cokolwiek zdecydujesz się umieścić tam. 1090 00:49:21,310 --> 00:49:23,530 Za każdym razem kiedy zadzwonić malloc, już powiedział 1091 00:49:23,530 --> 00:49:25,640 trzeba uwolnić go więc nie ma wycieków pamięci. 1092 00:49:25,640 --> 00:49:27,170 >> Co do innych rzeczy że ciebie absolutnie 1093 00:49:27,170 --> 00:49:29,185 musisz zrobić każdy Czas zadzwonić malloc? 1094 00:49:29,185 --> 00:49:31,210 1095 00:49:31,210 --> 00:49:32,210 OK, trzeba go uwolnić. 1096 00:49:32,210 --> 00:49:34,010 Co do innych rzeczy? 1097 00:49:34,010 --> 00:49:35,890 Sprawdź, null, piękne. 1098 00:49:35,890 --> 00:49:38,850 Tak, tak, to prawda znajduje się na płycie. 1099 00:49:38,850 --> 00:49:42,120 Jeśli chcesz spróbować przeznaczyć Pamięć i nie masz pamięci w lewo, 1100 00:49:42,120 --> 00:49:44,940 komputer powie, Nie mam nic do dać. 1101 00:49:44,940 --> 00:49:47,650 A to daje powrotem zerowy. 1102 00:49:47,650 --> 00:49:48,400 Pytania na ten temat? 1103 00:49:48,400 --> 00:49:49,290 Tak. 1104 00:49:49,290 --> 00:49:52,995 >> PUBLICZNOŚCI: Dlaczego miałbym kiedykolwiek chcesz zadeklarować wskaźnik z określonego typu 1105 00:49:52,995 --> 00:49:56,329 kiedy nieważne gwiazda może obsłużyć wszystkie rodzaje wskaźnik anyways? 1106 00:49:56,329 --> 00:49:57,370 Głośnik 1: Dobre pytanie. 1107 00:49:57,370 --> 00:50:00,590 Dlaczego mielibyśmy powiedzieć, int gwiazdę w przeciwieństwie do unieważnienia gwiazdę 1108 00:50:00,590 --> 00:50:03,740 kiedy nieważne gwiazda może obsługiwać wszystko? 1109 00:50:03,740 --> 00:50:06,390 Więc nie chcemy, aby kiedykolwiek wyraźnie rzucił wskazówek. 1110 00:50:06,390 --> 00:50:07,940 To jest po prostu złą praktyką. 1111 00:50:07,940 --> 00:50:11,850 Ale mówimy o int gwiazd tylko jako zrozumienia, 1112 00:50:11,850 --> 00:50:14,195 jest wskaźnikiem do liczby całkowitej. 1113 00:50:14,195 --> 00:50:14,850 >> PUBLICZNOŚCI: OK. 1114 00:50:14,850 --> 00:50:17,558 >> 1 głośnik: Tak, i to pozwala manipulować wartości w nim 1115 00:50:17,558 --> 00:50:18,667 jako liczby całkowite. 1116 00:50:18,667 --> 00:50:20,008 >> PUBLICZNOŚCI: Och, OK. 1117 00:50:20,008 --> 00:50:22,250 I nieważne, gwiazda nie będzie na to pozwolić? 1118 00:50:22,250 --> 00:50:25,070 >> Głośnik 1: To zależy od Kontekst Tak, więc nie martw się 1119 00:50:25,070 --> 00:50:28,460 nie martw się zbyt wiele o tam typu. 1120 00:50:28,460 --> 00:50:32,620 Po prostu wiem, że na ogół, malloc zwraca wskaźnik do czegoś. 1121 00:50:32,620 --> 00:50:33,520 Dobre pytanie. 1122 00:50:33,520 --> 00:50:37,260 >> PUBLICZNOŚCI: Dlaczego pomnożyć to razy 10? [NIESŁYSZALNY]. 1123 00:50:37,260 --> 00:50:40,150 >> Głośnik 1: Jasne, więc byłem po prostu robi losowy przykład tu, gdzie 1124 00:50:40,150 --> 00:50:42,840 Chciałem przeznaczyć tyle pokój do przechowywania 10 liczb całkowitych. 1125 00:50:42,840 --> 00:50:44,320 Wystarczy przypadkowy wybór. 1126 00:50:44,320 --> 00:50:45,250 Tak. 1127 00:50:45,250 --> 00:50:45,440 Tak, o co chodzi? 1128 00:50:45,440 --> 00:50:47,440 >> PUBLICZNOŚCI: Co ty oznacza, sprawdzając wartość null? 1129 00:50:47,440 --> 00:50:51,351 Chcesz sprawdzić wskaźnik dla wartości null lub malloc? 1130 00:50:51,351 --> 00:50:52,350 1 głośnik: Tak, dokładnie. 1131 00:50:52,350 --> 00:50:54,599 Więc pytanie, co rozumiemy czekiem o wartości null? 1132 00:50:54,599 --> 00:50:57,880 Chcemy to-- każdej chwili nazywamy malloc a my wrócił wskaźnik, 1133 00:50:57,880 --> 00:51:01,110 chcemy powiedzieć, jest Wskaźnik równy null? 1134 00:51:01,110 --> 00:51:02,610 Więc dosłownie PTR. 1135 00:51:02,610 --> 00:51:05,620 Czy PTR równa null. 1136 00:51:05,620 --> 00:51:06,958 Tak. 1137 00:51:06,958 --> 00:51:08,832 PUBLICZNOŚCI: Tak, byłem rodzaju zastanawiać się, jeśli Ciebie 1138 00:51:08,832 --> 00:51:14,013 zainicjować wskaźnik do malloc, robi wskazywać na początku malloc? 1139 00:51:14,013 --> 00:51:15,097 Bo jeśli jest to array-- 1140 00:51:15,097 --> 00:51:16,554 Głośnik 1: To jest dobre pytanie. 1141 00:51:16,554 --> 00:51:19,200 Tak, jeśli wywołanie malloc, wskaźnik, który it-- powiedzmy, 1142 00:51:19,200 --> 00:51:21,700 tak tutaj mamy przeznaczyć 10 bajtów pamięci. 1143 00:51:21,700 --> 00:51:23,830 Więc, przepraszam, tyle Pokój dla 10 liczb całkowitych, 1144 00:51:23,830 --> 00:51:28,220 mamy zamiar uzyskać adres ten pierwszy element pamięci. 1145 00:51:28,220 --> 00:51:29,880 To jest dobre pytanie. 1146 00:51:29,880 --> 00:51:30,481 Tak. 1147 00:51:30,481 --> 00:51:34,810 >> PUBLICZNOŚCI: Poprzez przydzielanie 10 rozpowszechnione liczby całkowite, 1148 00:51:34,810 --> 00:51:38,177 może faktycznie używać, wskaźnik jako like-- prawie 1149 00:51:38,177 --> 00:51:39,372 jak tablicy liczb całkowitych? 1150 00:51:39,372 --> 00:51:41,830 1 głośnik: Tak, więc można używać go jako tablica liczb całkowitych? 1151 00:51:41,830 --> 00:51:45,970 Tak, dokładnie, to co Pulak tylko pokazałem on-- kilka slajdy temu 1152 00:51:45,970 --> 00:51:48,680 gdzie mówimy, OK, to jest tak naprawdę rodzaj of-- mamy 1153 00:51:48,680 --> 00:51:50,805 można myśleć o nim jako tablica z 10 liczb. 1154 00:51:50,805 --> 00:51:52,222 To właśnie dzieje się na stercie. 1155 00:51:52,222 --> 00:51:54,971 PUBLICZNOŚCI: Ale nie może uzyskać dostępu to z kwadratową notacji uchwytu? 1156 00:51:54,971 --> 00:51:58,220 Głośnik 1: Rzeczywiście może uzyskać dostępu to z kwadratową notacji wspornika, tak. 1157 00:51:58,220 --> 00:52:00,221 Można traktować je tak samo. 1158 00:52:00,221 --> 00:52:00,720 Tak. 1159 00:52:00,720 --> 00:52:02,420 >> PUBLICZNOŚCI: Dlaczego miałbym wskaźnik kiedykolwiek być null? 1160 00:52:02,420 --> 00:52:04,170 >> Głośnik 1: Dlaczego miałbym wskaźnik kiedykolwiek być null? 1161 00:52:04,170 --> 00:52:06,570 Jeśli będziesz używać do wszystkich pamięć na stercie. 1162 00:52:06,570 --> 00:52:09,141 Jeśli twój program jest jedzenie się, jedzenie się, jedzenie pamięć, 1163 00:52:09,141 --> 00:52:11,890 i nie ma nic w lewo, a następnie malloc będzie say-- jeśli powiesz, 1164 00:52:11,890 --> 00:52:14,760 Chcę 100 więcej bajtów, to będzie powiedzieć, nie mam 100 bajtów. 1165 00:52:14,760 --> 00:52:15,740 Tu jest zerowa. 1166 00:52:15,740 --> 00:52:18,780 Oznacza to, że nie udało mi się. 1167 00:52:18,780 --> 00:52:20,516 Tak. 1168 00:52:20,516 --> 00:52:22,830 >> PUBLICZNOŚCI: W tym przypadku, null jest nic, prawda? 1169 00:52:22,830 --> 00:52:24,110 >> 1 głośnik: Tak, w tym Sprawa, null ma nic. 1170 00:52:24,110 --> 00:52:24,943 Nie masz adres. 1171 00:52:24,943 --> 00:52:28,065 Brak pamięci. 1172 00:52:28,065 --> 00:52:31,500 Dobra, przechodząc. 1173 00:52:31,500 --> 00:52:34,976 OK, niech naprawdę szybko mówić o przepełnienie bufora. 1174 00:52:34,976 --> 00:52:38,210 Kiedy możemy spotkać przepełnienia bufora? 1175 00:52:38,210 --> 00:52:42,980 Powiedzmy, że mamy A-- my przeznaczyć kawałek pamięci, 1176 00:52:42,980 --> 00:52:44,720 i będziemy pisać ciąg w. 1177 00:52:44,720 --> 00:52:47,240 I mamy zamiar powiedzieć, OK, mam zamiar przeznaczyć 1178 00:52:47,240 --> 00:52:49,320 wystarczająco dużo miejsca dla sześciu znaków. 1179 00:52:49,320 --> 00:52:51,680 I mam zamiar zapytać użytkownik z jakiegoś wejścia. 1180 00:52:51,680 --> 00:52:54,470 I dane wprowadzane przez użytkownika, na przykład, cześć. 1181 00:52:54,470 --> 00:52:56,430 I że doskonale pasuje w porządku, bo mamy 1182 00:52:56,430 --> 00:53:00,790 Pokój dla wszystkich bohaterów witam, i znak null terminator. 1183 00:53:00,790 --> 00:53:02,840 Dużo miejsca, nie ma problemu. 1184 00:53:02,840 --> 00:53:08,010 >> Ale co, jeśli dajemy możliwość za zło użytkownika do korzystania z naszego programu, 1185 00:53:08,010 --> 00:53:13,152 i wpisać w nie sześć znaków, czy nie pięć znaków, ale milion. 1186 00:53:13,152 --> 00:53:15,860 Trzymają pisania i pisania, a pisania, co się wydarzy? 1187 00:53:15,860 --> 00:53:18,220 Cóż my tylko dać enough-- komputer lub przykro, 1188 00:53:18,220 --> 00:53:23,350 tylko dał ten ciąg wystarczająco dużo miejsca dla 5 znaków. 1189 00:53:23,350 --> 00:53:28,300 Tak, mamy zamiar coś podobnego tego, gdzie zło osoba, która jest 1190 00:53:28,300 --> 00:53:31,750 wpisując w wejściu może nadpisać rozmiar bufora 1191 00:53:31,750 --> 00:53:35,922 i rzeczywiście można przejść obok ilości że to pierwotnie przyznane. 1192 00:53:35,922 --> 00:53:38,380 I co wtedy można dokonać, bardzo zła, co można zrobić, 1193 00:53:38,380 --> 00:53:40,260 jest zastąpienie adresu zwrotnego. 1194 00:53:40,260 --> 00:53:42,010 Co w zasadzie oznacza, można trochę się 1195 00:53:42,010 --> 00:53:45,110 Kontrola zachowań programu. 1196 00:53:45,110 --> 00:53:47,880 Tak więc na bardzo wysokim poziomie Przepełnienie bufora jest wtedy, gdy 1197 00:53:47,880 --> 00:53:49,960 można przeznaczyć pewną ilość pamięci. 1198 00:53:49,960 --> 00:53:53,060 A potem you-- to dlatego, że jesteś biorąc dane wprowadzone przez użytkownika lub coś 1199 00:53:53,060 --> 00:53:57,190 jak that-- przejść ponad granicami z tego, co już pierwotnie przydzielona 1200 00:53:57,190 --> 00:53:59,955 i zacząć bawić się program. 1201 00:53:59,955 --> 00:54:00,455 Tak? 1202 00:54:00,455 --> 00:54:03,220 >> PUBLICZNOŚCI: A dlaczego nie, że tylko zwraca błąd segmentacji? 1203 00:54:03,220 --> 00:54:05,594 >> Głośnik 1: Dlaczego nie chcieli, zwraca błąd segmentacji? 1204 00:54:05,594 --> 00:54:06,570 To mogło. 1205 00:54:06,570 --> 00:54:10,030 Czasami kompilator lub podczas jednej z Twojej starcie 1206 00:54:10,030 --> 00:54:11,430 faktycznie się sprawdzić to. 1207 00:54:11,430 --> 00:54:13,890 Jeśli pewne rzeczy się zdarzają, i jest to rodzaj niższym poziomie, 1208 00:54:13,890 --> 00:54:15,610 to trzeba wiedzieć. 1209 00:54:15,610 --> 00:54:18,820 Ale jeśli nie projektujemy te systemy prawidłowo, 1210 00:54:18,820 --> 00:54:21,170 to masz szansę z nie połowu i po prostu 1211 00:54:21,170 --> 00:54:24,844 dzięki czemu komputer take-- zły człowiek kontrolować swój komputer. 1212 00:54:24,844 --> 00:54:25,344 Tak. 1213 00:54:25,344 --> 00:54:26,260 >> PUBLICZNOŚCI: [niesłyszalne]? 1214 00:54:26,260 --> 00:54:28,934 1215 00:54:28,934 --> 00:54:29,600 Głośnik 1: Jasne. 1216 00:54:29,600 --> 00:54:33,800 Och, kiedy mówię, bufor, po prostu znaczy, że Ilość pamięci, które zostały przydzielone. 1217 00:54:33,800 --> 00:54:39,090 Więc powiedziałem, och, jakie przeznaczono sześć char-- wystarczająco dużo miejsca dla sześciu znaków. 1218 00:54:39,090 --> 00:54:42,880 A ja po prostu zadzwonić, że moim buforze gdzie mogę pisać informacje. 1219 00:54:42,880 --> 00:54:44,390 Tak. 1220 00:54:44,390 --> 00:54:46,791 Wszelkie inne pytania w tej sprawie? 1221 00:54:46,791 --> 00:54:47,290 Tak. 1222 00:54:47,290 --> 00:54:49,150 >> PUBLICZNOŚCI: Jak go zatrzymać? 1223 00:54:49,150 --> 00:54:50,274 Jak można temu zapobiec? 1224 00:54:50,274 --> 00:54:51,440 Głośnik 1: Awesome pytanie. 1225 00:54:51,440 --> 00:54:52,240 Jak można temu zapobiec? 1226 00:54:52,240 --> 00:54:54,110 Jak można uniknąć przepełnienia bufora? 1227 00:54:54,110 --> 00:54:59,160 Cóż jednym ze sposobów, aby to zrobić jest coś jak GetString, gdzie stale zwiększają 1228 00:54:59,160 --> 00:55:03,200 ilość pamięci, że możemy przydzielić Jeśli użytkownik wchodzi wiele tekstu. 1229 00:55:03,200 --> 00:55:07,570 Inną rzeczą jest, jeśli masz tylko chcą sześć znaków, zrobić szybki test. 1230 00:55:07,570 --> 00:55:11,220 Tylko powiedzieć, wejście sześciu znaków. 1231 00:55:11,220 --> 00:55:12,444 Tak. 1232 00:55:12,444 --> 00:55:14,360 Więc powiedzmy, że były pracy on-- jedziemy 1233 00:55:14,360 --> 00:55:16,985 , aby przejść do strony internetowej rzeczy trochę później w course-- ale niech 1234 00:55:16,985 --> 00:55:21,422 powiedzieć, że pracujesz na formularzu, byś po prostu ograniczyć, ile może wręczył. 1235 00:55:21,422 --> 00:55:22,378 Tak. 1236 00:55:22,378 --> 00:55:24,768 >> PUBLICZNOŚCI: GetString ciągnie pamięci ze stosu, tak? 1237 00:55:24,768 --> 00:55:25,444 Aby wyjaśnic? 1238 00:55:25,444 --> 00:55:26,485 Głośnik 1: Jeszcze raz? 1239 00:55:26,485 --> 00:55:28,400 PUBLICZNOŚCI: Czy getString podjąć pamięć ze stosu? 1240 00:55:28,400 --> 00:55:31,210 Głośnik 1: Wierzę Getm-- get int zajmuje pamięci ze sterty 1241 00:55:31,210 --> 00:55:32,911 dlatego, że nazywa alloc. 1242 00:55:32,911 --> 00:55:33,452 PUBLICZNOŚCI: Och. 1243 00:55:33,452 --> 00:55:33,951 OK. 1244 00:55:33,951 --> 00:55:35,750 1 głośnik: Tak, malloc i realloc. 1245 00:55:35,750 --> 00:55:37,120 Inne pytania? 1246 00:55:37,120 --> 00:55:37,803 Tak. 1247 00:55:37,803 --> 00:55:40,650 >> PUBLICZNOŚCI: Tak definiując wielkość buforowania 1248 00:55:40,650 --> 00:55:42,733 zapobiec ktoś z jest w stanie wprowadzić kod 1249 00:55:42,733 --> 00:55:45,700 że może prześlizgnąć się w [niesłyszalne]. 1250 00:55:45,700 --> 00:55:48,130 >> 1 głośnik: Tak, poprzez zdefiniowanie rozmiar bufora 1251 00:55:48,130 --> 00:55:50,760 powiedziałeś, OK, oto jak to zrobić dużo pamięci możemy wykorzystać. 1252 00:55:50,760 --> 00:55:55,550 Jeśli pozwalają użytkownikowi napisać nad nim, wtedy będziesz napotkasz problemy. 1253 00:55:55,550 --> 00:55:57,930 Mieć sens. 1254 00:55:57,930 --> 00:55:59,370 Niesamowite. 1255 00:55:59,370 --> 00:56:00,640 Przejdźmy dalej. 1256 00:56:00,640 --> 00:56:02,320 W porządku. 1257 00:56:02,320 --> 00:56:06,652 Mówiąc o błędach, tu są niektóre Typowe komunikaty o błędach 1258 00:56:06,652 --> 00:56:09,860 które mogą wykazały się w czasie, kiedy kodowanie, pracuje nad swoimi zestawami problemowych. 1259 00:56:09,860 --> 00:56:12,320 Duża szansa, że ​​jeden z to pokazuje się na quizie 1260 00:56:12,320 --> 00:56:15,090 jeśli ostatnich lat jakieś wskazanie. 1261 00:56:15,090 --> 00:56:17,580 Tak, odpowiedzi są rodzajem tutaj na forum. 1262 00:56:17,580 --> 00:56:19,510 Ale nie krępuj się krzyczeć trochę więcej. 1263 00:56:19,510 --> 00:56:21,280 >> Dlatego może się zdarzyć błąd segmentacji? 1264 00:56:21,280 --> 00:56:24,279 Dlaczego można uzyskać winy segmentacji jeśli używasz programu? 1265 00:56:24,279 --> 00:56:26,760 1266 00:56:26,760 --> 00:56:28,230 >> PUBLICZNOŚCI: [niesłyszalne]. 1267 00:56:28,230 --> 00:56:29,500 >> Głośnik 1: Dobra. 1268 00:56:29,500 --> 00:56:32,820 Tak, jeśli staramy się dostęp Pamięć, która nie jest nam dana. 1269 00:56:32,820 --> 00:56:34,610 Jeśli dereference wskaźnikiem NULL. 1270 00:56:34,610 --> 00:56:38,610 Na przykład, jeśli nazywamy malloc, i zapomnij sprawdzić, czy jest to null 1271 00:56:38,610 --> 00:56:42,250 i po prostu spróbować użyć go, komputera da nam błąd segmentacji. 1272 00:56:42,250 --> 00:56:42,750 Dobry. 1273 00:56:42,750 --> 00:56:46,680 Co z niejawne Deklaracja funkcji? 1274 00:56:46,680 --> 00:56:48,589 Co to znaczy? 1275 00:56:48,589 --> 00:56:51,380 PUBLICZNOŚCI: Próbujesz użyć funkcji, które nie zostały zdefiniowane. 1276 00:56:51,380 --> 00:56:52,130 Głośnik 1: Dobra. 1277 00:56:52,130 --> 00:56:54,504 Próbujesz użyć funkcji które nie zostały zdefiniowane. 1278 00:56:54,504 --> 00:56:56,000 Tak, że może być jedną z dwóch czynności. 1279 00:56:56,000 --> 00:56:59,320 Może to było jak na przykład Camille pokazałem wcześniej. 1280 00:56:59,320 --> 00:57:02,330 I masz główną funkcją który wywołuje coś o nazwie Cube. 1281 00:57:02,330 --> 00:57:04,371 I powiedzmy, że zapomniałem do napisania tego prototypu. 1282 00:57:04,371 --> 00:57:07,540 Zapomniałeś powiedzieć, hej komputer, Mam tę funkcję o nazwie Cube. 1283 00:57:07,540 --> 00:57:09,380 Zobaczysz go później. 1284 00:57:09,380 --> 00:57:12,440 Powiedzmy, że zapomniałem napisać Prototyp, możesz otrzymać ten błąd. 1285 00:57:12,440 --> 00:57:14,820 Inną rzeczą jest, powiedzmy, Czy próbowałeś użyć printf, 1286 00:57:14,820 --> 00:57:16,880 i zapomniałem włączyć biblioteka standardowa, 1287 00:57:16,880 --> 00:57:20,240 to powie niejawny Deklaracja funkcji. 1288 00:57:20,240 --> 00:57:22,800 I ostatnie, ale nie najmniej, niezdefiniowany indentyfikator. 1289 00:57:22,800 --> 00:57:23,300 Tak. 1290 00:57:23,300 --> 00:57:24,841 >> PUBLICZNOŚCI: Masz zakres problemu. 1291 00:57:24,841 --> 00:57:28,728 Jak być może próbujesz zadzwoń do zmiennej lokalnej, która jest 1292 00:57:28,728 --> 00:57:30,884 w innym rodzaju obszaru. 1293 00:57:30,884 --> 00:57:33,550 Głośnik 1: Świetnie, więc jeśli masz zmienna, która nie jest w zakresie, 1294 00:57:33,550 --> 00:57:36,890 i starasz się go używać, będziesz miał kłopoty. 1295 00:57:36,890 --> 00:57:40,960 I tak bardziej ogólnie, powiedzmy, próby użycia x, z coraz mówiąc int 1296 00:57:40,960 --> 00:57:45,140 x jest równa 5, to jesteś zamierza uruchomić w kłopoty. 1297 00:57:45,140 --> 00:57:47,640 Przepraszam, pytania na ten temat? 1298 00:57:47,640 --> 00:57:49,330 Niesamowite, chugging prawo wzdłuż. 1299 00:57:49,330 --> 00:57:55,692 >> OK, rekurencja, dlaczego might-- niech see-- Straciłem sch-- oh jedziemy, 1300 00:57:55,692 --> 00:57:57,400 tylko upewnić się, że jesteśmy mniej więcej w terminie. 1301 00:57:57,400 --> 00:57:59,060 Wszystko w porządku, super. 1302 00:57:59,060 --> 00:58:03,150 OK, rekurencja, ogólna idea rekursji, rekurencyjna funkcja 1303 00:58:03,150 --> 00:58:05,380 Jest to funkcja, która nazywa siebie. 1304 00:58:05,380 --> 00:58:08,170 OK, więc to co ja myśli, koncepcji programowej 1305 00:58:08,170 --> 00:58:11,130 przy czym funkcja nazywa siebie. 1306 00:58:11,130 --> 00:58:16,210 Co byłoby some-- co to jest dobry powód, aby użyć rekurencji? 1307 00:58:16,210 --> 00:58:17,550 Kiedy może być przydatne? 1308 00:58:17,550 --> 00:58:20,926 Albo co jest to program, który naprawdę nadaje się do rekursji? 1309 00:58:20,926 --> 00:58:22,330 >> PUBLICZNOŚCI: Binary wyszukiwania. 1310 00:58:22,330 --> 00:58:25,500 >> Głośnik 1: Przeszukiwanie binarne nadaje się do rekursji, 1311 00:58:25,500 --> 00:58:29,060 bo masz ten problem, że cię można rozbić na mniejsze kawałki, 1312 00:58:29,060 --> 00:58:32,330 i nieprzerwanie wykonywać ten sam algorytm na nim. 1313 00:58:32,330 --> 00:58:37,790 Prowadzi to w wielu przypadkach bardziej Elegancki kod, który jest bardziej precyzyjny. 1314 00:58:37,790 --> 00:58:40,500 Po prostu są przykładem poszukiwania binarnego. 1315 00:58:40,500 --> 00:58:43,100 Innym przykładem jest sortowanie przez scalanie. 1316 00:58:43,100 --> 00:58:45,920 Czasami, gdy myślisz algorytm, jak silni, 1317 00:58:45,920 --> 00:58:47,410 po prostu czuje rekurencyjne, prawda? 1318 00:58:47,410 --> 00:58:52,440 Ponieważ wiemy, że silnia od 5 jest silnia 4 razy 5. 1319 00:58:52,440 --> 00:58:56,080 I tak podczas konfigurowania problem w ten sposób, że po prostu czuje rekurencyjne. 1320 00:58:56,080 --> 00:58:58,530 Tak że byłoby świetny sposób, aby to napisać. 1321 00:58:58,530 --> 00:58:59,425 Pytania? 1322 00:58:59,425 --> 00:59:00,395 Tak. 1323 00:59:00,395 --> 00:59:01,850 >> PUBLICZNOŚCI: Co to jest wariant podstawowy? 1324 00:59:01,850 --> 00:59:02,770 >> Głośnik 1: Ach, co to wariant podstawowy? 1325 00:59:02,770 --> 00:59:04,680 Powiedziałem, nie zapomnij obejmuje przypadek bazowy. 1326 00:59:04,680 --> 00:59:07,690 Powiedzmy pisaliśmy Silnia funkcji, 1327 00:59:07,690 --> 00:59:09,620 i robimy silni 5. 1328 00:59:09,620 --> 00:59:12,352 I wiemy silni 5 jest 5 razy silnia 4, 1329 00:59:12,352 --> 00:59:13,310 bla, bla, bla, bla. 1330 00:59:13,310 --> 00:59:14,360 Skąd mamy wiedzieć, kiedy się zatrzymać? 1331 00:59:14,360 --> 00:59:16,276 Skąd mamy wiedzieć, że my rzeczywiście mają numer? 1332 00:59:16,276 --> 00:59:20,180 Bo jeśli wołała silnia, to, że nigdy nie otrzymasz odpowiedzi, prawda? 1333 00:59:20,180 --> 00:59:24,470 Tak więc, gdy wiemy, jak zatrzymać w przykładzie silni. 1334 00:59:24,470 --> 00:59:25,460 Każdy, tak. 1335 00:59:25,460 --> 00:59:27,764 >> PUBLICZNOŚCI: Po 1 silnia to 1. 1336 00:59:27,764 --> 00:59:28,430 Głośnik 1: Dobra. 1337 00:59:28,430 --> 00:59:29,530 Więc wiemy. 1338 00:59:29,530 --> 00:59:33,400 Możemy przyjąć, że 1 silnia jest równe 1. 1339 00:59:33,400 --> 00:59:36,570 Więc jeśli mamy do punktu, w którym my dzwoniąc silni 1, 1340 00:59:36,570 --> 00:59:38,050 po prostu iść do przodu i zwraca 1. 1341 00:59:38,050 --> 00:59:39,180 I to jest twoja sprawa bazowej. 1342 00:59:39,180 --> 00:59:45,040 Ponieważ wiemy, że po raz trafiliśmy, a zawsze trafi, że będziemy never-- 1343 00:59:45,040 --> 00:59:48,800 nie będzie po prostu wracamy zawsze. 1344 00:59:48,800 --> 00:59:50,700 Wszelkie inne pytania dotyczące rekursji? 1345 00:59:50,700 --> 00:59:51,630 Tak. 1346 00:59:51,630 --> 00:59:54,420 >> PUBLICZNOŚCI: Więc kiedy wracasz 1, to po prostu automatycznie 1347 00:59:54,420 --> 00:59:56,290 będzie zatrzymać program, prawda? 1348 00:59:56,290 --> 00:59:59,390 >> 1 głośnik: Tak więc, gdy ci zadzwoń do zwrotu 1, if-- powiedzmy, 1349 00:59:59,390 --> 01:00:04,480 powiedzmy silnia 2 połączeń silnia 1, silnia z 1 1350 01:00:04,480 --> 01:00:06,120 po prostu oddać 1. 1351 01:00:06,120 --> 01:00:12,790 A teraz silnia 2 powie OK, 2 1 jest 2 razy, i powrót tą odpowiedź. 1352 01:00:12,790 --> 01:00:14,260 Tak. 1353 01:00:14,260 --> 01:00:16,710 >> PUBLICZNOŚCI: Czy mamy się martwić o zakresie w rekursji 1354 01:00:16,710 --> 01:00:20,150 gdy idziesz do algorytmu? 1355 01:00:20,150 --> 01:00:21,880 >> Głośnik 1: Ach, tak. 1356 01:00:21,880 --> 01:00:25,060 Tak, to nie musisz się martwić o Zakres w kontekście rekursji. 1357 01:00:25,060 --> 01:00:29,820 Więc tylko zmienne zdefiniowane w tym okresie funkcji 1358 01:00:29,820 --> 01:00:32,170 będą przydatne. 1359 01:00:32,170 --> 01:00:33,792 Tak dobre pytanie. 1360 01:00:33,792 --> 01:00:35,250 W porządku, niech ruszać dalej. 1361 01:00:35,250 --> 01:00:37,320 Ponieważ mamy dużo Materiał do przejść. 1362 01:00:37,320 --> 01:00:41,080 Ale jak powiedziałem, nie krępuj się trafić do godziny pracy, lub nam po fakcie. 1363 01:00:41,080 --> 01:00:42,850 >> To jest po prostu naprawdę szybka zjeżdżalnia. 1364 01:00:42,850 --> 01:00:45,150 Dowiedzieliśmy się wiele o wyszukuje i sortuje. 1365 01:00:45,150 --> 01:00:47,400 Proszę proszę proszę, Te fragmenty są w Internecie, 1366 01:00:47,400 --> 01:00:51,240 Wierzę w cs50.net/quizzes~~pobj. 1367 01:00:51,240 --> 01:00:53,762 Więc idź się z poniższej tabeli i umieścić go na swoim arkuszu przeglądu, 1368 01:00:53,762 --> 01:00:55,470 ponieważ nie będzie pytanie na ten temat. 1369 01:00:55,470 --> 01:00:56,682 Proszę nie to źle. 1370 01:00:56,682 --> 01:00:58,390 Tylko bardzo szybko, co to wykres oznacza, 1371 01:00:58,390 --> 01:01:04,370 to mówi o Big O, które znamy być górna granica an algorytmów 1372 01:01:04,370 --> 01:01:05,150 czas pracy. 1373 01:01:05,150 --> 01:01:08,080 I mamy Omega, która jest będzie dolnej granicy 1374 01:01:08,080 --> 01:01:10,290 o czasie pracy algorytmów. 1375 01:01:10,290 --> 01:01:10,840 OK? 1376 01:01:10,840 --> 01:01:12,480 >> PUBLICZNOŚCI: [niesłyszalne]. 1377 01:01:12,480 --> 01:01:12,800 >> 1 głośnik: Tak, co jest ostatnią rzeczą? 1378 01:01:12,800 --> 01:01:13,380 Co znajduje się w theta? 1379 01:01:13,380 --> 01:01:16,850 To, czy we-- jedziemy tylko obchodzi w tej klasie w przypadku 1380 01:01:16,850 --> 01:01:19,381 gdzie nasza górna granica i Nasz dolny są takie same. 1381 01:01:19,381 --> 01:01:22,005 Tak, to jedyny czas, to przyjdzie się w tej klasie. 1382 01:01:22,005 --> 01:01:23,320 OK, mam zamiar iść dalej. 1383 01:01:23,320 --> 01:01:26,490 Jeżeli nie miały swoje zdjęcie, Obiecuję to będzie online. 1384 01:01:26,490 --> 01:01:28,220 >> OK, niesamowite, structury. 1385 01:01:28,220 --> 01:01:29,810 Dlaczego możemy chcieć konstrukcjom? 1386 01:01:29,810 --> 01:01:34,110 Co to jest przydatne powodem Może chcemy konstrukcjom. 1387 01:01:34,110 --> 01:01:36,277 Ktoś krzyczał coś. 1388 01:01:36,277 --> 01:01:38,110 Dobrze niech spojrzeć na Przykładem na pokładzie. 1389 01:01:38,110 --> 01:01:41,090 Powiedzmy, że mamy do czynienia z tymi wszystkimi studentami. 1390 01:01:41,090 --> 01:01:44,900 Jeśli robimy program dla CS50, są jak 800 osób. 1391 01:01:44,900 --> 01:01:47,890 Musimy write-- będziemy trzeba obsłużyć wiele informacji 1392 01:01:47,890 --> 01:01:49,020 o studentów. 1393 01:01:49,020 --> 01:01:50,990 Byłoby miło, gdyby mogliśmy rodzaju grupy 1394 01:01:50,990 --> 01:01:54,460 this-- wszystkich informacji ma do czynienia z konkretnym uczniem 1395 01:01:54,460 --> 01:01:56,027 do jednego typu danych. 1396 01:01:56,027 --> 01:01:58,360 Ale wiemy, że nie ma danych wpisz nazywa, student, prawda? 1397 01:01:58,360 --> 01:02:01,890 Mamy liczbę całkowitą, mamy pływak, mamy ciąg lub gwiazdę char, 1398 01:02:01,890 --> 01:02:03,920 ale my nie mamy, student. 1399 01:02:03,920 --> 01:02:08,680 >> Tak więc możemy zrobić, to właściwie rodzaj zdefiniować nasza struktura, nazywamy to student, 1400 01:02:08,680 --> 01:02:12,440 i możemy powiązać niektóre Pola z tym różne struktury. 1401 01:02:12,440 --> 01:02:14,410 Więc w tym przypadku, niech że mamy uczniów. 1402 01:02:14,410 --> 01:02:17,350 I to, że dbamy o to numer legitymacji studenckiej 1403 01:02:17,350 --> 01:02:19,500 i imię ucznia. 1404 01:02:19,500 --> 01:02:24,175 A teraz możemy powiązać tego identyfikatora i ta nazwa z danego ucznia. 1405 01:02:24,175 --> 01:02:25,300 Zobaczmy kilka przykładów. 1406 01:02:25,300 --> 01:02:28,860 1407 01:02:28,860 --> 01:02:33,490 >> OK, więc tutaj mogę powiedzieć, OK, niech że chcemy, aby student. 1408 01:02:33,490 --> 01:02:35,050 Nazywam go student 1. 1409 01:02:35,050 --> 01:02:38,850 I jego numer identyfikacyjny, w w tym przypadku, możemy uzyskać dostęp do 1410 01:02:38,850 --> 01:02:45,200 po prostu robi nazwę studenta dot pole chcemy uzyskać dostęp. 1411 01:02:45,200 --> 01:02:49,110 Więc to będzie po prostu być studentem 1 kropka ID, i ustawić go równa 1. 1412 01:02:49,110 --> 01:02:52,300 Bo pamiętam, że powiedział, że Identyfikator będzie liczbą całkowitą. 1413 01:02:52,300 --> 01:02:56,540 I bardzo podobnie, możemy powiedzieć, że to Nazwa studenta będzie Davin, 1414 01:02:56,540 --> 01:02:57,760 na przykład. 1415 01:02:57,760 --> 01:03:01,420 Więc może po prostu dostęp do pola z struct przy użyciu tej kropki. 1416 01:03:01,420 --> 01:03:03,098 Pytania na ten temat? 1417 01:03:03,098 --> 01:03:03,598 Tak. 1418 01:03:03,598 --> 01:03:05,582 >> PUBLICZNOŚCI: Czy jest jakiś sposób chronić swoje zmienne? 1419 01:03:05,582 --> 01:03:08,560 Czy jest jakiś sposób, aby chronić zmienne z zewnętrznie dostępne? 1420 01:03:08,560 --> 01:03:10,726 >> Głośnik 1: Czy mimo chronić swoje zmienne 1421 01:03:10,726 --> 01:03:12,680 z zewnętrznie dostępne? 1422 01:03:12,680 --> 01:03:13,750 Nie w zakresie CS50. 1423 01:03:13,750 --> 01:03:16,680 1424 01:03:16,680 --> 01:03:17,977 Inne pytania? 1425 01:03:17,977 --> 01:03:18,476 Tak. 1426 01:03:18,476 --> 01:03:18,942 >> PUBLICZNOŚCI: Co to jest typedef struct? 1427 01:03:18,942 --> 01:03:20,192 Co każdy składnik oznacza? 1428 01:03:20,192 --> 01:03:22,937 1429 01:03:22,937 --> 01:03:24,520 Głośnik 1: Ach, co jest typedef struct? 1430 01:03:24,520 --> 01:03:26,240 Co każdy składnik średnia z tym facetem? 1431 01:03:26,240 --> 01:03:26,850 >> PUBLICZNOŚCI: Tak. 1432 01:03:26,850 --> 01:03:27,683 >> Głośnik 1: OK, fajnie. 1433 01:03:27,683 --> 01:03:31,200 Więc to mówi, hej komputer, ja chcą stworzyć nową strukturę. 1434 01:03:31,200 --> 01:03:34,970 I mam zamiar określić definicję dla niego, tak że mogę go używać 1435 01:03:34,970 --> 01:03:37,520 jakby to był typ w całym moim programie. 1436 01:03:37,520 --> 01:03:39,300 OK, więc chcę, aby zdefiniować strukturę. 1437 01:03:39,300 --> 01:03:41,650 A ja teraz będzie w stanie użyć go jako typ. 1438 01:03:41,650 --> 01:03:43,400 A jego nazwa jest studentem. 1439 01:03:43,400 --> 01:03:45,730 A oto jego pola. 1440 01:03:45,730 --> 01:03:48,130 >> PUBLICZNOŚCI: Więc jest to, że typedef struct [niesłyszalne]? 1441 01:03:48,130 --> 01:03:50,592 1442 01:03:50,592 --> 01:03:53,800 Głośnik 1: Jeśli chcesz, aby móc używać tej struktury w całym programie, 1443 01:03:53,800 --> 01:03:57,910 w większości przypadków w CS50 my zrobić, musimy powiedzieć typu Def. 1444 01:03:57,910 --> 01:04:01,190 A to, że pozwala używać jej tak samo sposób, w jaki używamy jak int lub pływaka. 1445 01:04:01,190 --> 01:04:04,168 Komputer Zawsze wiesz, co to jest. 1446 01:04:04,168 --> 01:04:04,668 Tak. 1447 01:04:04,668 --> 01:04:06,560 >> PUBLICZNOŚCI: możemy napisać to w pliku nagłówka? 1448 01:04:06,560 --> 01:04:07,060 >> Głośnik 1: Oh, przepraszam. 1449 01:04:07,060 --> 01:04:08,600 Czy piszemy to w pliku nagłówka? 1450 01:04:08,600 --> 01:04:11,410 Możesz napisać to na górze Program, w górnej części programu c. 1451 01:04:11,410 --> 01:04:13,010 Tak, to będzie najbardziej rozsądne miejsce dla niego. 1452 01:04:13,010 --> 01:04:13,509 Powrót istnieje. 1453 01:04:13,509 --> 01:04:15,704 PUBLICZNOŚCI: Samo pytanie, więc przed głównym? 1454 01:04:15,704 --> 01:04:18,870 1 głośnik: Tak, trzeba to będzie gdzieś, że każdy może uzyskać do niego dostęp. 1455 01:04:18,870 --> 01:04:20,612 Więc przed głównym w Twoim przypadku, tak. 1456 01:04:20,612 --> 01:04:23,820 PUBLICZNOŚCI: Czy jest jakaś różnica między wprowadzenie studenta na górze i na dole? 1457 01:04:23,820 --> 01:04:25,810 Głośnik 1: Ach, to istnieje Różnica między wprowadzenie studenta 1458 01:04:25,810 --> 01:04:26,840 na górze lub na dole? 1459 01:04:26,840 --> 01:04:29,650 Let-- zapisać na to pytanie, a gdy mamy do połączonych listach, 1460 01:04:29,650 --> 01:04:31,020 zobaczymy, że, OK? 1461 01:04:31,020 --> 01:04:32,750 Więc trzymaj się, że w ciągu jednej sekundy. 1462 01:04:32,750 --> 01:04:37,080 Ostatnią rzeczą, chciałbym wspomnieć tutaj, Jest zamiast mieć strukturę 1463 01:04:37,080 --> 01:04:41,180 mamy wskaźnik do struktury, możemy zmienić nasze notacji 1464 01:04:41,180 --> 01:04:42,480 być trochę ładniejszy. 1465 01:04:42,480 --> 01:04:45,810 >> Można powiedzieć, powiedzmy, że mamy wskaźnik do ucznia, a nie tylko 1466 01:04:45,810 --> 01:04:47,040 uczeń. 1467 01:04:47,040 --> 01:04:52,460 Jeśli chcemy korzystać z pola, zamiast robi, dobrze pójść wyłuskanie wskaźnika, 1468 01:04:52,460 --> 01:04:54,100 a następnie uzyskać dostęp do nazwy pola. 1469 01:04:54,100 --> 01:04:57,310 Ten zapis wygląda trochę bałagan z gwiazdą w tej kropce. 1470 01:04:57,310 --> 01:05:00,790 Całkowicie poprawne, ale to rodzaj czystszej sposób to zrobić, 1471 01:05:00,790 --> 01:05:03,280 jest po prostu powiedzieć nazwę wskaźnik strzałki. 1472 01:05:03,280 --> 01:05:11,460 I to właściwie łączy dereferencing i dostępu w jednym pięknym symbolem. 1473 01:05:11,460 --> 01:05:12,470 Pytania na ten temat? 1474 01:05:12,470 --> 01:05:13,760 >> PUBLICZNOŚCI: Wystarczy powiedzieć, że jeszcze raz. 1475 01:05:13,760 --> 01:05:14,480 >> Głośnik 1: Powiedz to jeszcze raz. 1476 01:05:14,480 --> 01:05:16,021 >> PUBLICZNOŚCI: Dokładnie to, co właśnie powiedział. 1477 01:05:16,021 --> 01:05:17,870 Głośnik 1: Pewnie, dokładnie co właśnie powiedziałem. 1478 01:05:17,870 --> 01:05:21,580 Jeśli mamy wskaźnik do ucznia a nie samego ucznia, 1479 01:05:21,580 --> 01:05:25,410 mamy can-- jeden sposób, że możemy uzyskać dostęp do Pole jest wyłuskanie go, a następnie 1480 01:05:25,410 --> 01:05:27,110 Nazwa dostępu. 1481 01:05:27,110 --> 01:05:29,040 Innym, bardziej przyjemny sposób, w jaki może zrobić to, co jest po prostu 1482 01:05:29,040 --> 01:05:33,550 trochę cukru składniowej, jest po prostu zrobić wskaźnik nazwę strzałki. 1483 01:05:33,550 --> 01:05:38,190 I że ma zamiar połączyć wyłuskania i użytkowanie. 1484 01:05:38,190 --> 01:05:40,400 Tak, całkiem fajne. 1485 01:05:40,400 --> 01:05:41,260 W porządku. 1486 01:05:41,260 --> 01:05:44,390 >> Więc porozmawiajmy o innej kwestii. 1487 01:05:44,390 --> 01:05:46,520 Miejmy przejść do węzłów, które mamy zamiar używać 1488 01:05:46,520 --> 01:05:49,120 w związane list w ciągu sekundy. 1489 01:05:49,120 --> 01:05:53,580 Więc, można zauważyć, że istnieje jest węzeł słowo zarówno od dołu 1490 01:05:53,580 --> 01:05:55,160 i na górze. 1491 01:05:55,160 --> 01:05:59,040 Wcześniej, kiedy byliśmy definiowania ucznia, mieliśmy tylko studenta na dole. 1492 01:05:59,040 --> 01:06:00,470 Nie mieliśmy studenta na górze. 1493 01:06:00,470 --> 01:06:01,902 Ktoś wie dlaczego tak może być? 1494 01:06:01,902 --> 01:06:02,860 Jaka jest różnica? 1495 01:06:02,860 --> 01:06:03,360 Tak. 1496 01:06:03,360 --> 01:06:06,212 PUBLICZNOŚCI: Więc użyć węzła Jest to definicja węzła 1497 01:06:06,212 --> 01:06:08,254 więc jest to rekurencyjny rzecz? 1498 01:06:08,254 --> 01:06:08,920 Głośnik 1: Dobra. 1499 01:06:08,920 --> 01:06:13,230 Tak, musimy nasze węzłów posiada wskaźnik do innych węzłów. 1500 01:06:13,230 --> 01:06:17,640 Więc od kiedy korzystać z tego typu Zanim to faktycznie zdefiniowane, 1501 01:06:17,640 --> 01:06:20,613 musimy umieścić go na górze tak więc wie, co to jest. 1502 01:06:20,613 --> 01:06:22,446 PUBLICZNOŚCI: Więc nadal potrzebne jest na dole? 1503 01:06:22,446 --> 01:06:23,338 1 głośnik: Tak. 1504 01:06:23,338 --> 01:06:24,754 PUBLICZNOŚCI: Więc zawsze na dole. 1505 01:06:24,754 --> 01:06:26,090 Głośnik 1: zawsze na dole. 1506 01:06:26,090 --> 01:06:29,410 Więc wszystkie twoje będzie ma to na dole. 1507 01:06:29,410 --> 01:06:30,720 Jakieś inne pytania? 1508 01:06:30,720 --> 01:06:33,511 W porządku, więc pozwala rzeczywiście mówić o związane list bardzo szybko. 1509 01:06:33,511 --> 01:06:36,510 Więc związane listy are-- ich używamy zamiast tablic w niektórych przypadkach, 1510 01:06:36,510 --> 01:06:40,030 ponieważ wiemy, że tablice są stałej długości, natomiast związane list 1511 01:06:40,030 --> 01:06:42,670 możemy rozwijać się i kurczą się tak, jak chcemy. 1512 01:06:42,670 --> 01:06:45,790 Więc to jest przykład tego, co połączonej listy może wyglądać. 1513 01:06:45,790 --> 01:06:48,590 To, czego potrzebujemy, aby zobaczyć to szef listy. 1514 01:06:48,590 --> 01:06:50,330 Więc gdzie zaczyna się lista. 1515 01:06:50,330 --> 01:06:53,010 A potem węzła, każdy kolejny węzeł, jest 1516 01:06:53,010 --> 01:06:55,880 odpowiedzialny za wiedząc, gdzie następnego węzła jest. 1517 01:06:55,880 --> 01:07:00,950 Tak więc w tym przypadku, węzeł, który przechowuje 1 jest odpowiedzialny za wiedząc, gdzie 3 jest. 1518 01:07:00,950 --> 01:07:04,540 Osoba, która przechowuje 3 jest odpowiedzialny za wiedząc, gdzie 9 jest. 1519 01:07:04,540 --> 01:07:06,230 I 9 ma nikogo innego, aby wskazywać na. 1520 01:07:06,230 --> 01:07:08,750 To koniec listy, tak, to po prostu mówi wartość null. 1521 01:07:08,750 --> 01:07:09,250 OK? 1522 01:07:09,250 --> 01:07:10,530 >> PUBLICZNOŚCI: Jaki jest sens tego? 1523 01:07:10,530 --> 01:07:11,480 >> Głośnik 1: Jaki jest sens tego? 1524 01:07:11,480 --> 01:07:12,105 >> PUBLICZNOŚCI: Tak. 1525 01:07:12,105 --> 01:07:15,390 Głośnik 1: Ponieważ, niech powiedzieć, że mamy jakieś dane. 1526 01:07:15,390 --> 01:07:18,480 I nie wiemy dokładnie, jak wiele danych chcemy wyprzedzeniem. 1527 01:07:18,480 --> 01:07:22,479 Więc z tablicy, powiedzmy, gdzie chcą liczyć ludzi w pierwszym rzędzie. 1528 01:07:22,479 --> 01:07:24,020 Są szanse, że nie będzie się zmieniać. 1529 01:07:24,020 --> 01:07:28,120 Możemy tylko powiedzieć, OK, chcą tablicę wielkości sześciu. 1530 01:07:28,120 --> 01:07:30,120 Ale jeśli chcemy coś że to się zmieni. 1531 01:07:30,120 --> 01:07:32,900 >> Na przykład, powiedzmy, że starałem śledzić studentów 1532 01:07:32,900 --> 01:07:35,330 jak przychodzą do pokoju dla sesji przeglądarki. 1533 01:07:35,330 --> 01:07:38,420 Nie mam pojęcia, jak wielu z was ludzie będą wyświetlane. 1534 01:07:38,420 --> 01:07:43,094 Więc może Chcę strukturę danych że mogę rozszerzać i kurczyć. 1535 01:07:43,094 --> 01:07:45,510 Bo może ktoś będzie odejść, może ktoś przyjdzie. 1536 01:07:45,510 --> 01:07:48,386 I tak, w każdym czasie, Można dodać lub usunąć węzły. 1537 01:07:48,386 --> 01:07:49,771 Cool, wielkie pytanie. 1538 01:07:49,771 --> 01:07:50,270 Tak. 1539 01:07:50,270 --> 01:07:52,311 >> PUBLICZNOŚCI: Jeśli można użyć coś getString 1540 01:07:52,311 --> 01:07:55,750 który utrzymuje co pozwala uzyskać więcej danych, jak jest to potrzebne, dlaczego trzeba to też? 1541 01:07:55,750 --> 01:07:57,625 >> Głośnik 1: Dlaczego miałbym użyjesz listy, gdy połączone 1542 01:07:57,625 --> 01:07:59,440 możesz użyć czegoś takiego getString? 1543 01:07:59,440 --> 01:08:01,640 To jest dobre pytanie. 1544 01:08:01,640 --> 01:08:04,240 Pamiętaj, że Get-- jednego z upadki z getString 1545 01:08:04,240 --> 01:08:06,750 jest to, że nie zrobiliśmy bardzo dobra praca uwolnienia tej pamięci, 1546 01:08:06,750 --> 01:08:09,320 i wprowadziliśmy kilka Pamięć przecieki do programu? 1547 01:08:09,320 --> 01:08:15,037 Można zabrać go statycznie wielkości tablicy i stale rosnąć go. 1548 01:08:15,037 --> 01:08:16,870 Ale trzeba by znaleźć nowe miejsca w pamięci. 1549 01:08:16,870 --> 01:08:18,359 Byłoby to po prostu dużo napowietrznych. 1550 01:08:18,359 --> 01:08:21,050 >> Jedną z miłych rzeczy o powiązane list, w przeciwieństwie do macierzy, to tablice 1551 01:08:21,050 --> 01:08:22,830 znajdują się w tym samym miejscu w pamięci. 1552 01:08:22,830 --> 01:08:25,540 Musi być ciągła fragmenty pamięci. 1553 01:08:25,540 --> 01:08:29,920 Natomiast związane list, 2 i 3 maja całkowicie różnych miejscach. 1554 01:08:29,920 --> 01:08:31,880 Podobnie jak 2 jest tutaj, a 3 jest tutaj. 1555 01:08:31,880 --> 01:08:34,421 I pod warunkiem, że mają wskaźnik do siebie, to w porządku. 1556 01:08:34,421 --> 01:08:35,830 Wiemy, że możemy je znaleźć. 1557 01:08:35,830 --> 01:08:37,084 Pytanie tam? 1558 01:08:37,084 --> 01:08:40,563 >> PUBLICZNOŚCI: GetString jest funkcją w bibliotece CS50, prawda? 1559 01:08:40,563 --> 01:08:42,060 Nie występują w rzeczywistych programów. 1560 01:08:42,060 --> 01:08:42,851 >> Głośnik 1: Prawidłowe. 1561 01:08:42,851 --> 01:08:44,130 Prawda, że ​​to inna rzecz. 1562 01:08:44,130 --> 01:08:47,210 GetString nie istnieją poza kontekście CS50. 1563 01:08:47,210 --> 01:08:47,710 Tak. 1564 01:08:47,710 --> 01:08:54,556 >> PUBLICZNOŚCI: Tak samo fakt, że dwa może być bardzo daleko od siebie, 1565 01:08:54,556 --> 01:08:59,859 Czy to wpływ na efektywność dostępu do elementów na liście? 1566 01:08:59,859 --> 01:09:01,359 Głośnik 1: To jest dobre pytanie. 1567 01:09:01,359 --> 01:09:04,278 Pytanie tylko, czy to wpływ wydajność dostępu 1568 01:09:04,278 --> 01:09:05,819 te różne elementy na liście. 1569 01:09:05,819 --> 01:09:06,930 Aktualnie tak. 1570 01:09:06,930 --> 01:09:09,569 Ponieważ wiemy if-- niech że chcemy, aby uzyskać dostęp 1571 01:09:09,569 --> 01:09:14,520 drugi element tablicy, wiemy, możemy po prostu zrobić wspornik tablicy 1, w prawo. 1572 01:09:14,520 --> 01:09:16,630 To zawsze będzie być takie same położenie. 1573 01:09:16,630 --> 01:09:20,720 Ale jeśli chcemy dostać się do tego 3, nie możemy po prostu powiedzieć, przejdź się, że 3. 1574 01:09:20,720 --> 01:09:24,009 Musimy powiedzieć, OK, zaczynają się początek listy 1575 01:09:24,009 --> 01:09:26,050 a teraz mamy naprawdę przejść przez Dopóki 1576 01:09:26,050 --> 01:09:28,149 znaleźć numer jesteśmy zainteresowani. 1577 01:09:28,149 --> 01:09:30,790 >> Więc w tym przypadku możemy powiedzieć, OK jest to pierwszy numer. 1578 01:09:30,790 --> 01:09:32,207 Tak w zasadzie, to wskaźnik 0. 1579 01:09:32,207 --> 01:09:33,790 Teraz musimy znaleźć drugi numer. 1580 01:09:33,790 --> 01:09:34,740 To wskaźnik 1. 1581 01:09:34,740 --> 01:09:39,180 Tak, że rzeczywiście będzie to-- tylko dostępu, zajmie czas N. 1582 01:09:39,180 --> 01:09:42,027 Fajne, duże stare N. Tak. 1583 01:09:42,027 --> 01:09:43,903 >> PUBLICZNOŚCI: Jakie są poszczególne listy? 1584 01:09:43,903 --> 01:09:45,401 Tablice są każdy, czy co? 1585 01:09:45,401 --> 01:09:46,859 Głośnik 1: To jest dobre pytanie. 1586 01:09:46,859 --> 01:09:48,950 Co każdy z Struktury, że mam wyciągnąć? 1587 01:09:48,950 --> 01:09:51,649 Są węzły. 1588 01:09:51,649 --> 01:09:53,720 Tak więc każdy z nich mało Struktura składa się z dwóch części. 1589 01:09:53,720 --> 01:09:55,264 Posiada liczbę całkowitą, która posiada. 1590 01:09:55,264 --> 01:09:57,180 To rzeczywiste dane że to trzymając. 1591 01:09:57,180 --> 01:09:58,770 To rodzaj przydatnych części. 1592 01:09:58,770 --> 01:10:00,820 I to jest to, co sprawia, że ​​jest powiązana lista, 1593 01:10:00,820 --> 01:10:03,690 ma on wskaźnik do następnego węzła. 1594 01:10:03,690 --> 01:10:05,260 Niesamowite pytanie. 1595 01:10:05,260 --> 01:10:11,320 Dobrze, więc spójrzmy bardzo szybko spojrzeć na kilka przykładów tego, co 1596 01:10:11,320 --> 01:10:12,820 możemy zrobić z połączonych listach. 1597 01:10:12,820 --> 01:10:16,920 >> Tak więc jednym z przykładów jest bardzo szybkie, przypuśćmy, że chcemy zrobić wyszukiwania. 1598 01:10:16,920 --> 01:10:20,240 Jakie wyszukiwania nie może my na powiązanych list? 1599 01:10:20,240 --> 01:10:21,150 >> PUBLICZNOŚCI: Binary. 1600 01:10:21,150 --> 01:10:21,900 >> Głośnik 1: Binary. 1601 01:10:21,900 --> 01:10:23,408 Dlaczego nie możemy używać przeszukiwanie binarne? 1602 01:10:23,408 --> 01:10:25,181 >> PUBLICZNOŚCI: [niesłyszalne]. 1603 01:10:25,181 --> 01:10:28,180 Głośnik 1: Racja, bo z binarny wyszukiwarka, musieliśmy polegać na tym, 1604 01:10:28,180 --> 01:10:31,300 że możemy po prostu skoczyć do tablicy w dowolnym punkcie. 1605 01:10:31,300 --> 01:10:33,420 Możemy tylko powiedzieć, przejdź z elementem środkowym. 1606 01:10:33,420 --> 01:10:35,550 Z tutaj, jak powiedział nieco wcześniej, 1607 01:10:35,550 --> 01:10:37,270 nie możemy po prostu przejść do element środkowy. 1608 01:10:37,270 --> 01:10:38,978 , Aby wybrać dowolny Element, faktycznie 1609 01:10:38,978 --> 01:10:40,780 przejść przez cały naszej liście. 1610 01:10:40,780 --> 01:10:43,910 >> Więc jeśli chcemy zrobić wyszukiwania, tym Najlepsze, co możemy zrobić, to po prostu przeszukiwanie liniowe. 1611 01:10:43,910 --> 01:10:45,910 Zaczynamy na czele, mamy check-- powiedzmy, że jesteśmy 1612 01:10:45,910 --> 01:10:47,790 poszukuje 9-- zaczynamy na czele. 1613 01:10:47,790 --> 01:10:49,200 Mówimy: to jest 9? 1614 01:10:49,200 --> 01:10:49,710 Nie. 1615 01:10:49,710 --> 01:10:50,430 Czy to 9? 1616 01:10:50,430 --> 01:10:50,930 Nie. 1617 01:10:50,930 --> 01:10:51,620 Czy to 9? 1618 01:10:51,620 --> 01:10:53,730 Tak, znaleźliśmy go. 1619 01:10:53,730 --> 01:10:56,350 OK, to wszystko. 1620 01:10:56,350 --> 01:10:57,940 Oto trochę pseudo-kodu. 1621 01:10:57,940 --> 01:11:01,420 Zamierzam zostawić to za Ciebie ludzie masowo na na własną rękę, 1622 01:11:01,420 --> 01:11:04,370 tylko dlatego, że używasz trochę mało czasu. 1623 01:11:04,370 --> 01:11:05,610 >> Porozmawiajmy o włożeniu. 1624 01:11:05,610 --> 01:11:08,644 Widzieliśmy naprawdę fajne demo to na wykładzie, gdzie powiedział: 1625 01:11:08,644 --> 01:11:11,560 OK, mamy tego połączonej listy gdzie wszyscy wskazując na siebie, 1626 01:11:11,560 --> 01:11:13,400 i ktoś wchodzi na scenę. 1627 01:11:13,400 --> 01:11:17,050 Jak wstawić, że Osoba do naszej połączonej listy? 1628 01:11:17,050 --> 01:11:20,150 Cóż, zły sposób zrobić, które to myślę, że to, co widzieliśmy pierwsze, 1629 01:11:20,150 --> 01:11:22,740 jest, gdy osoba przednie automatycznie 1630 01:11:22,740 --> 01:11:25,270 zwrócił się do nowej osoby. 1631 01:11:25,270 --> 01:11:29,057 A potem my niby opuszczony Druga połowa listy, prawda? 1632 01:11:29,057 --> 01:11:31,390 Ponieważ nie wiemy, gdzie to jest w pamięci więcej. 1633 01:11:31,390 --> 01:11:34,750 Więc być bardzo ostrożnym o Kolejność, w której możemy włożyć rzeczy. 1634 01:11:34,750 --> 01:11:37,860 >> Więc powiedzmy, chcemy umieścić 1 na przodzie naszej liście. 1635 01:11:37,860 --> 01:11:42,190 Po pierwsze, mamy 1 punkt w Drugi element-- lub element 1636 01:11:42,190 --> 01:11:44,170 który zawiera 1. 1637 01:11:44,170 --> 01:11:47,210 Tak, możemy to zrobić, po prostu tak, że nie jesteśmy stracić drugą połowę. 1638 01:11:47,210 --> 01:11:51,020 A teraz możemy mieć głowy do 1 punktu. 1639 01:11:51,020 --> 01:11:52,930 Więc jeszcze raz, to jest po prostu jak bardzo wysoki poziom. 1640 01:11:52,930 --> 01:11:55,290 W ten sposób chcemy wstawić węzeł. 1641 01:11:55,290 --> 01:11:57,337 Mamy dużo pseudo-kod here-- przykro, 1642 01:11:57,337 --> 01:11:59,170 Nie wiem, dlaczego tu jestem nazywając ją pseudo-code. 1643 01:11:59,170 --> 01:12:00,350 To rzeczywisty kod. 1644 01:12:00,350 --> 01:12:02,570 Możesz to sprawdzić później. 1645 01:12:02,570 --> 01:12:04,870 >> W porządku, jest bardzo quickly-- więcej pytań 1646 01:12:04,870 --> 01:12:07,120 na powiązanych list zanim przenieść się na kilka innych danych 1647 01:12:07,120 --> 01:12:08,450 struktury w naszych ostatnich 10 minut. 1648 01:12:08,450 --> 01:12:10,340 >> PUBLICZNOŚCI: Czy musimy teraz jak napisać go na próbę? 1649 01:12:10,340 --> 01:12:11,040 >> Głośnik 1: Czy musimy wiedzieć, jak to-- 1650 01:12:11,040 --> 01:12:12,030 >> PUBLICZNOŚCI: Wpisz go na próbę. 1651 01:12:12,030 --> 01:12:14,071 >> Głośnik 1: musimy to-- powinieneś być przygotowany 1652 01:12:14,071 --> 01:12:18,870 pisać, wstawiać, usuwać i szukaj powiązanych list na teście. 1653 01:12:18,870 --> 01:12:21,480 To jest coś, czego mógł się spodziewać, aby to zrobić. 1654 01:12:21,480 --> 01:12:22,750 Wystarczy przejść nad nim. 1655 01:12:22,750 --> 01:12:26,460 Jeśli masz jakieś pytania na temat: Kod, strzelać TF e-mail, 1656 01:12:26,460 --> 01:12:27,750 przyjść do godzin pracy biura. 1657 01:12:27,750 --> 01:12:30,041 Jest jeszcze dużo czasu uczyć się, nie martw się. 1658 01:12:30,041 --> 01:12:32,290 Wszystko w porządku, każdy inny pytania o powiązanych list? 1659 01:12:32,290 --> 01:12:32,986 Tak. 1660 01:12:32,986 --> 01:12:37,360 >> PUBLICZNOŚCI: Więc jeśli nie używać wskaźnik, aby przejść do jednego z prawej strony 1661 01:12:37,360 --> 01:12:41,308 przed użyciem wskaźnika dla jeden na lewej stronie, to 1662 01:12:41,308 --> 01:12:43,211 odpowiednik usuwanie wszystko, prawda? 1663 01:12:43,211 --> 01:12:43,877 1 głośnik: Tak. 1664 01:12:43,877 --> 01:12:44,820 PUBLICZNOŚCI: [niesłyszalne]. 1665 01:12:44,820 --> 01:12:47,570 1 głośnik: Tak, ponieważ nie możemy dostać, to w rzeczywistości jeszcze gorzej. 1666 01:12:47,570 --> 01:12:50,690 Ponieważ nie tylko nie wiemy gdzie to jest, nie możemy go używać, 1667 01:12:50,690 --> 01:12:53,580 ale we've-- nie jesteśmy uwalniając że pamięć już. 1668 01:12:53,580 --> 01:12:58,570 Więc to po prostu kręci i nie być przydatne, ponieważ nie możemy go znaleźć. 1669 01:12:58,570 --> 01:12:59,580 Tak, fajne pytanie. 1670 01:12:59,580 --> 01:13:01,280 >> Dobrze, porozmawiajmy o stosach. 1671 01:13:01,280 --> 01:13:03,230 Widzieliśmy stosy bardzo szybko. 1672 01:13:03,230 --> 01:13:06,280 Są pierwsi w zeszłym spośród struktur danych. 1673 01:13:06,280 --> 01:13:10,664 Więc myślimy o stosów w Annenberg tac, gdzie stos rzeczy na wierzchu. 1674 01:13:10,664 --> 01:13:12,580 A jeśli masz zamiar przychodzą się tacy, jesteś 1675 01:13:12,580 --> 01:13:15,870 zawsze zajmie jeden na góry, która jest najbardziej recently-- 1676 01:13:15,870 --> 01:13:18,840 co jest rzeczą, która najbardziej Niedawno umieścić na szczycie stosu. 1677 01:13:18,840 --> 01:13:22,680 Tak więc można trochę pomyśleć o tego rodzaju wizualne, gdy myślisz o stosach. 1678 01:13:22,680 --> 01:13:26,010 A potem, mamy pojawiło coś ze szczytu stosu. 1679 01:13:26,010 --> 01:13:29,850 >> Jeśli are-- oh, a słowa, które używać, gdy mówimy o tych danych 1680 01:13:29,850 --> 01:13:32,680 struktury jest zazwyczaj, jeśli będziemy umieścić coś na stosie, 1681 01:13:32,680 --> 01:13:34,550 mówimy, jesteśmy przesuwając ją na stosie. 1682 01:13:34,550 --> 01:13:38,450 A jeśli wziąć coś ze stosu, mówimy, jesteśmy popping ze stosu. 1683 01:13:38,450 --> 01:13:41,470 Jeśli wybierasz się do wdrożenia stack-- które na pewno 1684 01:13:41,470 --> 01:13:44,840 polecam spróbować out-- jesteś będzie chciał śledzić, 1685 01:13:44,840 --> 01:13:46,669 powiedzmy, że używasz tablicę. 1686 01:13:46,669 --> 01:13:48,960 Wiem, że w wykładzie rozmawialiśmy o użyciu zarówno tablice 1687 01:13:48,960 --> 01:13:51,120 lub związany list do realizacji stosu. 1688 01:13:51,120 --> 01:13:53,490 Jeśli używasz tablica, musisz keep-- 1689 01:13:53,490 --> 01:13:56,750 usprawiedliwienia me-- musimy śledzić od wielkości i pojemności. 1690 01:13:56,750 --> 01:14:00,820 Więc maksymalnej liczby że nasz stos może pomieścić. 1691 01:14:00,820 --> 01:14:03,240 Pytania na stosach? 1692 01:14:03,240 --> 01:14:05,657 >> PUBLICZNOŚCI: Jaka jest różnica od wielkości i pojemności? 1693 01:14:05,657 --> 01:14:08,573 Głośnik 1: Różnica między wielkość i pojemność, niesamowite pytanie. 1694 01:14:08,573 --> 01:14:10,330 Więc powiedzmy, że jesteśmy za pomocą tablicy, i 1695 01:14:10,330 --> 01:14:13,340 przeznaczyć wystarczająco dużo miejsca dla 10 liczb całkowitych. 1696 01:14:13,340 --> 01:14:15,050 I zaczynamy wypełniać, że się. 1697 01:14:15,050 --> 01:14:17,330 A my pchamy rzeczy, i pop rzeczy off. 1698 01:14:17,330 --> 01:14:21,060 Chcemy, aby śledzić maksymalnie Numer możemy trzymać, to pojemność. 1699 01:14:21,060 --> 01:14:24,790 I chcemy śledzić aktualny numer mamy, to wielkość. 1700 01:14:24,790 --> 01:14:26,530 Dobre pytanie. 1701 01:14:26,530 --> 01:14:28,720 Wszystko inne na stosach? 1702 01:14:28,720 --> 01:14:31,260 Dobrze, porozmawiajmy o zaskoczeniu, kolejek. 1703 01:14:31,260 --> 01:14:37,034 >> W przeciwieństwie do stosów, które są pierwszym w zeszłym na zewnątrz, są to pierwsze weszło, pierwsze wyszło. 1704 01:14:37,034 --> 01:14:38,450 Więc to jest like-- myśleć o linię. 1705 01:14:38,450 --> 01:14:41,530 Pomyśl o kolejce na Apple Przechowywać aby niezależnie produkt. 1706 01:14:41,530 --> 01:14:44,540 I pierwszą osobą w linii powinno być pierwszą osobą, która pomogło. 1707 01:14:44,540 --> 01:14:48,270 Tak więc pierwszą rzeczą, która jest wciśnięty jest to pierwsza rzecz, która się pojawiła. 1708 01:14:48,270 --> 01:14:49,460 Chłodny? 1709 01:14:49,460 --> 01:14:52,890 Bardzo similarly-- Och, słowa, które używamy zamiast push i pop-- 1710 01:14:52,890 --> 01:14:55,060 których używałem, Jestem sorry-- to mówimy, 1711 01:14:55,060 --> 01:14:58,170 jeśli mamy coś do wprowadzenia kolejka, mówimy skolejkowany go. 1712 01:14:58,170 --> 01:15:00,795 Jeśli bierzemy coś z kolejka, mówimy rozkolejkowywana. 1713 01:15:00,795 --> 01:15:01,950 Ono. 1714 01:15:01,950 --> 01:15:05,454 I może być wymawiając te źle, ale masz pomysł. 1715 01:15:05,454 --> 01:15:08,370 I znów, podobnie jak stosy, jeśli mamy do wykonania to jako tablicy, 1716 01:15:08,370 --> 01:15:12,350 musimy śledzić wielkość, pojemność, a głową. 1717 01:15:12,350 --> 01:15:13,570 Co mam na myśli przez głowę? 1718 01:15:13,570 --> 01:15:15,278 Dlaczego musimy zachować utwór głowy? 1719 01:15:15,278 --> 01:15:18,549 1720 01:15:18,549 --> 01:15:21,685 >> PUBLICZNOŚCI: Bo to jest, gdy początek listy jest. 1721 01:15:21,685 --> 01:15:24,810 1 głośnik: Tak, w zasadzie głowa jest gdzie początek naszej kolejce jest. 1722 01:15:24,810 --> 01:15:29,460 Ponieważ wiemy, w przeciwieństwie do stosów, which-- Mam zamiar spróbować zmierzyć się z tym way-- 1723 01:15:29,460 --> 01:15:33,570 Wiemy, że to zawsze będzie kurczą się w ten sposób i rozwijać w ten sposób. 1724 01:15:33,570 --> 01:15:37,840 Kolejki, ludzie przychodzą na koniec i pozostawić od początku, 1725 01:15:37,840 --> 01:15:40,620 więc musimy śledzić gdzie początek jest. 1726 01:15:40,620 --> 01:15:43,540 To, co mam na myśli, musimy śledzić, gdzie szef jest. 1727 01:15:43,540 --> 01:15:45,190 Chłodny? 1728 01:15:45,190 --> 01:15:46,440 W porządku. 1729 01:15:46,440 --> 01:15:49,250 Osiem minut, kilka więcej tematów, możemy to zrobić. 1730 01:15:49,250 --> 01:15:51,240 >> Dobrze, tabeli mieszania. 1731 01:15:51,240 --> 01:15:53,095 Rozmawialiśmy bardzo krótko o tabelach z cebulą. 1732 01:15:53,095 --> 01:15:55,720 Do quizu, wystarczy zrozumieć ich na wysokim poziomie. 1733 01:15:55,720 --> 01:15:58,330 Podstawowym założeniem jest to masz te dane. 1734 01:15:58,330 --> 01:16:02,570 I chcemy, aby uzyskać do niego dostęp w czasie, który jest szybciej niż coś jak powiązane 1735 01:16:02,570 --> 01:16:03,070 lista. 1736 01:16:03,070 --> 01:16:05,290 Dlatego, że powiedział, gdybyśmy byli przeszukując połączonej listy, 1737 01:16:05,290 --> 01:16:06,248 że może potrwać N. 1738 01:16:06,248 --> 01:16:08,810 Nawet dostępu mogą N Czas w połączonej listy. 1739 01:16:08,810 --> 01:16:12,930 Tabele hash daje nam sposób, że możemy szybszy dostęp do rzeczy, i bardziej 1740 01:16:12,930 --> 01:16:16,970 szybko szukać rzeczy, bez konieczności ograniczenia, z tablicy 1741 01:16:16,970 --> 01:16:19,030 gdzie mamy stały rozmiar. 1742 01:16:19,030 --> 01:16:23,950 >> Więc myślimy o strukturze danych, gdzie, gdzie umieścić go w strukturze danych 1743 01:16:23,950 --> 01:16:26,620 jest zależna od tego magiczna funkcja skrótu. 1744 01:16:26,620 --> 01:16:30,630 Więc w tym przypadku, magicznej hash Funkcja jest po prostu biorąc słowo, 1745 01:16:30,630 --> 01:16:34,027 sprawdzanie, co pierwsza litera jest, a a potem po prostu sortowania go alfabetycznie. 1746 01:16:34,027 --> 01:16:36,110 Więc zasadniczo je w różnych wiadrach. 1747 01:16:36,110 --> 01:16:39,510 Kiedy widzimy, banana, mówimy, OK, niech umieścić w wiadrze B. 1748 01:16:39,510 --> 01:16:41,820 Kiedy widzimy, Apple, niech umieścić go w wiadrze A. 1749 01:16:41,820 --> 01:16:44,744 Jeśli widzieliśmy moreli, niech umieścić w wiadrze A. 1750 01:16:44,744 --> 01:16:45,600 OK? 1751 01:16:45,600 --> 01:16:51,090 >> Przypuszczam więc szukaliśmy for-- I nie wiem, co jest kolejnym owocem? 1752 01:16:51,090 --> 01:16:52,920 Załóżmy, że szukałem pomarańczowy. 1753 01:16:52,920 --> 01:16:55,340 Gdzie mam szukać? 1754 01:16:55,340 --> 01:16:56,420 W O wiadra. 1755 01:16:56,420 --> 01:17:01,450 Tak, jest tylko jedno miejsce, że pomarańczowy może być, OK? 1756 01:17:01,450 --> 01:17:05,370 Więc powiedziałem wcześniej, co się dzieje if-- jak powiedziałem wcześniej, 1757 01:17:05,370 --> 01:17:10,030 powiedzmy, że stawiamy moreli in-- ale Naprawdę jest uwzględnienie faktu, że, o nie, 1758 01:17:10,030 --> 01:17:14,990 gdybym umieścić jagody w, to będzie sprzeczne z bananem. 1759 01:17:14,990 --> 01:17:20,160 Gdzie umieścić go, czy jest już coś w naszym stole? 1760 01:17:20,160 --> 01:17:22,760 Cóż, mamy kilka opcji. 1761 01:17:22,760 --> 01:17:26,160 >> Opcja numer jeden jest liniowa sondowania, co w zasadzie oznacza, 1762 01:17:26,160 --> 01:17:28,690 powiedzmy, że chcę spróbować umieścić jagody, i widzę, o nie, 1763 01:17:28,690 --> 01:17:31,170 banany już tam, Ja po prostu powiedzieć, OK, niech 1764 01:17:31,170 --> 01:17:33,810 mi szukać kolejnego dostępnego miejsca. 1765 01:17:33,810 --> 01:17:36,744 Więc idę na dół, mówię, oh, nie ma nic w wiadrze D. 1766 01:17:36,744 --> 01:17:39,410 Nie mogę myśleć o żadnych owoców które zaczynają się na literę D, 1767 01:17:39,410 --> 01:17:41,620 tak, jestem po prostu zamiar umieścić jagody tam. 1768 01:17:41,620 --> 01:17:42,650 Durian. 1769 01:17:42,650 --> 01:17:44,590 OK, więc ponieważ nie nic jeszcze nie, 1770 01:17:44,590 --> 01:17:47,020 Równie dobrze mogę po prostu użyć tego miejsce. 1771 01:17:47,020 --> 01:17:48,805 Co jest wadą, że? 1772 01:17:48,805 --> 01:17:49,300 >> PUBLICZNOŚCI: To nie w porządku. 1773 01:17:49,300 --> 01:17:50,008 >> Głośnik 1: Słucham? 1774 01:17:50,008 --> 01:17:51,280 PUBLICZNOŚCI: To nie w porządku. 1775 01:17:51,280 --> 01:17:53,113 >> Głośnik 1: To out-- Dobrze, możemy skończyć 1776 01:17:53,113 --> 01:17:56,380 z rzeczy, które nie są in-- przechowywane w wiaderkach, w drodze 1777 01:17:56,380 --> 01:17:57,790 że spodziewamy się, że będzie. 1778 01:17:57,790 --> 01:18:00,670 Więc jeśli szukaliśmy na jagody, zanim powiedział: 1779 01:18:00,670 --> 01:18:02,000 oh możemy patrzeć w jednym wiadrze. 1780 01:18:02,000 --> 01:18:03,650 Może to być tylko w jednym segmencie. 1781 01:18:03,650 --> 01:18:07,380 Ale teraz, tak naprawdę, to może być we wszystkich wiader, prawda? 1782 01:18:07,380 --> 01:18:10,400 >> OK, tutaj jest inna opcja, oddzielna chaining-- 1783 01:18:10,400 --> 01:18:16,630 która jest pomysł, że będziemy użyć trochę później w P zestaw 5. 1784 01:18:16,630 --> 01:18:19,340 Zamiast po prostu jedno miejsce w każdym segmencie, 1785 01:18:19,340 --> 01:18:23,610 dlaczego nie mamy każdego segmentu jako wskaźnik do połączonej listy? 1786 01:18:23,610 --> 01:18:28,570 Gdzie możemy powiedzieć, OK, nie ma wiadro za wszystko, co zaczyna się na literę A. 1787 01:18:28,570 --> 01:18:31,990 I tam właśnie będzie związane Lista owoców, które zaczynają się na literę A. 1788 01:18:31,990 --> 01:18:36,240 Więc jeśli mamy nowe owoce, powiedzmy, mamy get-- mamy awokado, mamy jabłko, 1789 01:18:36,240 --> 01:18:39,530 powiedzmy, że mamy moreli, w jaki sposób możemy umieścić na liście? 1790 01:18:39,530 --> 01:18:43,330 Dobrze, że pójdziemy do schowka 0, a my wystarczy włożyć ją w naszym lubił listy, 1791 01:18:43,330 --> 01:18:45,320 proste. 1792 01:18:45,320 --> 01:18:47,160 >> Teraz wciąż powtarzają wiadro. 1793 01:18:47,160 --> 01:18:49,470 Możemy zaimplementować to w wielu aspektach. 1794 01:18:49,470 --> 01:18:52,040 Typowym sposobem, że ta rodzaj obrazu sugeruje, 1795 01:18:52,040 --> 01:18:55,580 to może o tablicę wskaźniki do powiązanych list. 1796 01:18:55,580 --> 01:18:58,174 To jeden ze sposobów możemy wdrożenie tabeli mieszania. 1797 01:18:58,174 --> 01:19:01,090 PUBLICZNOŚCI: Czy trzeba innego Lista ponieważ bananów i jagody są obecnie 1798 01:19:01,090 --> 01:19:01,591 w porządku? 1799 01:19:01,591 --> 01:19:03,298 Głośnik 1: Mógłbyś need-- ah, byś 1800 01:19:03,298 --> 01:19:06,310 potrzebujemy jeszcze liście, ponieważ banan jagodowe są w porządku? 1801 01:19:06,310 --> 01:19:09,880 W tym przypadku nasza funkcja skrótu, które mówi nam, gdzie umieścić rzeczy 1802 01:19:09,880 --> 01:19:11,647 nie dba o drugi list. 1803 01:19:11,647 --> 01:19:14,730 To nie dba o alphabetizing, że dba tylko o pierwszej literze. 1804 01:19:14,730 --> 01:19:15,672 Pytanie? 1805 01:19:15,672 --> 01:19:18,947 >> PUBLICZNOŚCI: Jaka jest definicja, która funkcji, a co to wygląda? 1806 01:19:18,947 --> 01:19:19,780 Głośnik 1: Ach, dobrze. 1807 01:19:19,780 --> 01:19:22,450 OK, więc nie musimy się przejmuj się zbytnio do tego quizu. 1808 01:19:22,450 --> 01:19:23,700 Więc nie umieścić w slajdach. 1809 01:19:23,700 --> 01:19:26,320 Mamy zamiar być wprowadzone do niego dla P zestaw 5. 1810 01:19:26,320 --> 01:19:31,520 Ale w zasadzie, to mówi, biorąc pod uwagę Nowym elementem, gdzie należy umieścić go? 1811 01:19:31,520 --> 01:19:35,450 Albo, powiedzmy, szukam elementem, gdzie to może być? 1812 01:19:35,450 --> 01:19:37,860 Tak, wielkie pytanie. 1813 01:19:37,860 --> 01:19:40,870 >> OK, bardzo szybko, drzew i stara. 1814 01:19:40,870 --> 01:19:44,779 Tak więc drzewo jest po prostu każdy rodzaj zorganizowanej strukturze danych. 1815 01:19:44,779 --> 01:19:47,820 I mamy zamiar zobaczyć wiele zdjęć że będzie to bardzo wyraźnie. 1816 01:19:47,820 --> 01:19:51,180 I trie, które widzieliśmy w klasie, Jest to bardzo szczególny rodzaj drzewa 1817 01:19:51,180 --> 01:19:53,440 które zasadniczo działa jak tabeli mieszania wielopoziomowe. 1818 01:19:53,440 --> 01:19:54,390 To bardzo fajne. 1819 01:19:54,390 --> 01:19:56,030 Jedziemy, aby zobaczyć go w ciągu zaledwie sekundy. 1820 01:19:56,030 --> 01:19:57,821 W porządku, więc niech mówić o drzewach pierwszy. 1821 01:19:57,821 --> 01:20:01,040 Więc to jest naprawdę typowy przykład drzewo, gdzie mamy trochę hierarchię. 1822 01:20:01,040 --> 01:20:03,220 Widzisz, że ktoś jest w na samej górze, prawda? 1823 01:20:03,220 --> 01:20:06,190 I mogę powiedzieć, góry, bo nie wyraźnie zamawiania dlatego, że 1824 01:20:06,190 --> 01:20:08,260 mają te strzałki na dół. 1825 01:20:08,260 --> 01:20:11,740 Tak, że rzeczą na górze Ja nazywam to węzła głównego. 1826 01:20:11,740 --> 01:20:13,080 Więc jeden jest węzeł główny. 1827 01:20:13,080 --> 01:20:17,330 I to, co na dole, które nic nie spadając je, 1828 01:20:17,330 --> 01:20:18,783 Mówię to są węzły liść. 1829 01:20:18,783 --> 01:20:22,730 Tak więc 8,9 5, 6, 7, OK. 1830 01:20:22,730 --> 01:20:27,740 I zazwyczaj mamy terminologia mogę powiedzieć to, 1 jest 3 rodzic. 1831 01:20:27,740 --> 01:20:30,740 Więc jest to rzecz, która przychodzi Poziom nad nim, i wskazuje na to. 1832 01:20:30,740 --> 01:20:32,710 1 i 3, to jest dziecko. 1833 01:20:32,710 --> 01:20:34,505 Jest to rzecz, która 1 punkty. 1834 01:20:34,505 --> 01:20:35,005 Pytanie? 1835 01:20:35,005 --> 01:20:36,414 >> PUBLICZNOŚCI: Czy możesz wrócić do poprzedniego slajdu, proszę? 1836 01:20:36,414 --> 01:20:37,388 >> Głośnik 1: Czy mogę wrócić do poprzedniego slajdu? 1837 01:20:37,388 --> 01:20:37,888 Pewnie. 1838 01:20:37,888 --> 01:20:40,640 1839 01:20:40,640 --> 01:20:41,390 Pytania w tej sprawie? 1840 01:20:41,390 --> 01:20:42,764 Albo po prostu chciał na to patrzeć? 1841 01:20:42,764 --> 01:20:44,650 PUBLICZNOŚCI: Ja po prostu nie dostać przez nią. 1842 01:20:44,650 --> 01:20:47,100 >> Głośnik 1: OK, fajnie, tak. 1843 01:20:47,100 --> 01:20:49,846 To wszystko będzie w Internecie, więc nie martwić się o każde słowo. 1844 01:20:49,846 --> 01:20:51,720 A w interesie czas, mam zamiar iść. 1845 01:20:51,720 --> 01:20:53,270 Czy to w porządku? 1846 01:20:53,270 --> 01:20:53,790 Niesamowite. 1847 01:20:53,790 --> 01:20:55,720 Ok fajnie. 1848 01:20:55,720 --> 01:20:57,790 Więc porozmawiajmy około bardzo konkretne kind-- 1849 01:20:57,790 --> 01:20:59,710 więc mamy te ogólne Struktura drzewa, 1850 01:20:59,710 --> 01:21:02,876 która jest po prostu coś, co pozwala nam do rodzaju rangi rzeczy hierarchicznie. 1851 01:21:02,876 --> 01:21:06,000 1852 01:21:06,000 --> 01:21:11,110 >> Drzewa binarne są rzeczy, gdzie każdy węzeł ma co najwyżej dwoje dzieci. 1853 01:21:11,110 --> 01:21:11,690 OK? 1854 01:21:11,690 --> 01:21:14,560 A ja powiedziałem: OK, tak że wydaje aby pasowały do ​​tego opisu. 1855 01:21:14,560 --> 01:21:16,830 I wspomniany węzeł, a nie binarne drzewo poszukiwań. 1856 01:21:16,830 --> 01:21:19,720 Co znajduje się w wyszukiwanie binarne drzewo? 1857 01:21:19,720 --> 01:21:20,440 To klasyfikowane. 1858 01:21:20,440 --> 01:21:22,890 Więc wiesz, że w wyszukiwanie binarne drzewo, 1859 01:21:22,890 --> 01:21:26,580 wszystko do tree-- wszystko do węzłów lewej stronie jest mniejszy, 1860 01:21:26,580 --> 01:21:28,830 i wszystko, co do węzły prawda jest większy. 1861 01:21:28,830 --> 01:21:30,620 Więc to nie jest przeszukiwanie binarne drzewo. 1862 01:21:30,620 --> 01:21:32,770 To tylko binarne drzewo. 1863 01:21:32,770 --> 01:21:35,910 Mamy więc duże kategorię drzew, nieco mniejsze w kategorii 1864 01:21:35,910 --> 01:21:40,106 drzew binarnych, wyszukiwanie A-- binarnych drzew wyszukiwania. 1865 01:21:40,106 --> 01:21:41,540 Chłodny? 1866 01:21:41,540 --> 01:21:44,410 W porządku. 1867 01:21:44,410 --> 01:21:47,380 >> A teraz, większość zabawy wszystkim, mamy próby. 1868 01:21:47,380 --> 01:21:49,500 Wy zobaczyłem tego obrazu podczas wykładu? 1869 01:21:49,500 --> 01:21:51,790 Tak, powinno to wyglądać bardzo znajomo. 1870 01:21:51,790 --> 01:21:54,252 Przyjrzyjmy się, jak moglibyśmy właściwie wdrożyć to. 1871 01:21:54,252 --> 01:21:56,210 Albo rzeczywiście, zobaczmy, to w ogóle wymyślić? 1872 01:21:56,210 --> 01:21:56,731 Nie. 1873 01:21:56,731 --> 01:21:59,480 Dobrze, że nie trzeba nawet martwić, że niski poziom rzeczy. 1874 01:21:59,480 --> 01:22:02,320 Będziemy mieć mnóstwo czasu zająć to P zestaw 5. 1875 01:22:02,320 --> 01:22:05,780 Ale teraz, po prostu bardzo wysoki poziom, że wiem, że to, na co wygląda. 1876 01:22:05,780 --> 01:22:08,530 Opisaliśmy ją jako swego rodzaju tabeli mieszania wielopoziomowe 1877 01:22:08,530 --> 01:22:12,264 where-- co robi ten sklep? 1878 01:22:12,264 --> 01:22:14,430 Ten przechowuje nazwy Naukowcy że możemy właściwie 1879 01:22:14,430 --> 01:22:20,690 poszukaj po prostu rodzaj następującego po różne tabele mieszania się, wszystko w porządku? 1880 01:22:20,690 --> 01:22:24,730 >> A celem tego jest, w teorii, zapewniają one stałą czasową patrzeć. 1881 01:22:24,730 --> 01:22:29,630 Więc jeśli chcę sprawdzić, że na przykład, kto jest someone-- 1882 01:22:29,630 --> 01:22:33,410 że Mandel jest w tym trie, mogłem bardzo szybko 1883 01:22:33,410 --> 01:22:36,260 w linear-- Przykro mi, w Stała czasowa, dowiedzieć się, 1884 01:22:36,260 --> 01:22:39,010 czy to w trie. 1885 01:22:39,010 --> 01:22:41,500 Ale con, jest przyjrzeć się, jak duże to jest. 1886 01:22:41,500 --> 01:22:44,120 Nie jesteśmy nawet przechowywania, które wiele danych, i to jest ogromny. 1887 01:22:44,120 --> 01:22:47,950 Więc jeden wielki con jest to, że to zużywa duże ilości pamięci. 1888 01:22:47,950 --> 01:22:48,746 Tak. 1889 01:22:48,746 --> 01:22:50,610 >> PUBLICZNOŚCI: Dlaczego to zapewnić Stała czasowa, dokładnie? 1890 01:22:50,610 --> 01:22:51,376 >> Głośnik 1: Jeszcze raz? 1891 01:22:51,376 --> 01:22:53,360 >> PUBLICZNOŚCI: Jaka jest intuicja dlaczego to zapewnia stały czas? 1892 01:22:53,360 --> 01:22:54,610 >> Głośnik 1: Doskonałe pytanie. 1893 01:22:54,610 --> 01:22:56,030 Dlaczego to zapewnić stałą czasu? 1894 01:22:56,030 --> 01:22:59,280 Więc co możemy zrobić jest, powiedzmy, powiedzieć, szukamy Mandel. 1895 01:22:59,280 --> 01:23:02,830 Wiemy, że chcemy zacząć na pierwszym poziomie w M. 1896 01:23:02,830 --> 01:23:06,890 Wiemy, że chcemy iść do E. So to jest jeden krok, dwa kroki, prawda? 1897 01:23:06,890 --> 01:23:10,710 Kierujemy go do N. kierujemy go do D. Kierujemy go do E. kierujemy go do L. 1898 01:23:10,710 --> 01:23:15,100 A potem następną rzeczą, możemy sprawdzić says-- ten trójkąt mówi Tak, to 1899 01:23:15,100 --> 01:23:15,990 w naszej tabeli. 1900 01:23:15,990 --> 01:23:16,880 To jest słowo. 1901 01:23:16,880 --> 01:23:19,900 To ważna pozycja w naszej trie. 1902 01:23:19,900 --> 01:23:22,450 Więc mówisz, OK, które trwało siedem kroków. 1903 01:23:22,450 --> 01:23:27,200 Ale jeśli dodaliśmy jak zillion więcej Naukowcy do tej struktury danych, 1904 01:23:27,200 --> 01:23:29,470 nie mielibyśmy do sprawdzenia zillion więcej rzeczy. 1905 01:23:29,470 --> 01:23:33,580 Mamy tylko kiedykolwiek będzie musiał podjąć siedem kroków, długość danej osoby 1906 01:23:33,580 --> 01:23:35,260 imię. 1907 01:23:35,260 --> 01:23:39,350 >> Tak, lubimy myśleć w czasie pracy, jak, przypuśćmy, 1908 01:23:39,350 --> 01:23:42,340 możemy zwiększyć rozmiar naszego struktury danych, jak długo 1909 01:23:42,340 --> 01:23:44,580 to będzie trwało? 1910 01:23:44,580 --> 01:23:47,372 W tym przypadku, jeśli dodamy kilka więcej naukowców, to nie ma znaczenia. 1911 01:23:47,372 --> 01:23:49,413 To jeszcze potrwa taki sam okres czasu. 1912 01:23:49,413 --> 01:23:50,350 Jest to stała czasowa. 1913 01:23:50,350 --> 01:23:50,850 Tak. 1914 01:23:50,850 --> 01:23:53,557 >> PUBLICZNOŚCI: Jak nie wiesz, do skanowania na inne numery? 1915 01:23:53,557 --> 01:23:54,932 Głośnik 1: Skąd mam wiedzieć, jak to-- 1916 01:23:54,932 --> 01:23:58,236 PUBLICZNOŚCI: Podobnie jak pan wie, idziesz prosto z M-E, a nie M A? 1917 01:23:58,236 --> 01:23:59,069 Głośnik 1: Jasne. 1918 01:23:59,069 --> 01:24:01,620 Ponieważ wiedziałem, że jestem szukam słowa Mandel, 1919 01:24:01,620 --> 01:24:04,195 a ja po prostu wiem, że to M-E. Więc that-- tak, śmiało. 1920 01:24:04,195 --> 01:24:06,528 PUBLICZNOŚCI: Czy nie masz patrzeć na innych listach 1921 01:24:06,528 --> 01:24:07,870 w pozostałej części [niesłyszalne]? 1922 01:24:07,870 --> 01:24:10,020 >> Głośnik 1: Ach, nie mam patrzeć na the-- OK, świetnie. 1923 01:24:10,020 --> 01:24:10,790 To jest dobre pytanie. 1924 01:24:10,790 --> 01:24:12,170 To zależy, jak go zrealizować. 1925 01:24:12,170 --> 01:24:15,350 Jeśli będziemy realizować go jako po prostu jak szeregu tablic 1926 01:24:15,350 --> 01:24:18,100 gdzie wiemy, że E jest zawsze w pozycji 0, 1927 01:24:18,100 --> 01:24:21,270 Nie wiem, co Strona liczba jest. 1928 01:24:21,270 --> 01:24:24,901 Tak, możemy po prostu zrobić stałe czas, nie, nie, nie, nie. 1929 01:24:24,901 --> 01:24:25,400 Chłodny. 1930 01:24:25,400 --> 01:24:27,556 Pytanie tam? 1931 01:24:27,556 --> 01:24:30,927 >> PUBLICZNOŚCI: Czy stała czasowa to samo, co w czasie rzeczywistym? 1932 01:24:30,927 --> 01:24:33,260 Głośnik 1: Czy stała czasowa to samo jest w czasie rzeczywistym? 1933 01:24:33,260 --> 01:24:34,799 Nie jestem pewien, w czasie rzeczywistym jest. 1934 01:24:34,799 --> 01:24:36,965 PUBLICZNOŚCI: Podobnie jak czas, dosłownie rozwija drugi 1935 01:24:36,965 --> 01:24:40,150 przez drugie, w przeciwieństwie do bycia niezależną zmienną. 1936 01:24:40,150 --> 01:24:42,960 >> Głośnik 1: O, tak, to można myśleć o tym w ten sposób. 1937 01:24:42,960 --> 01:24:46,240 Innymi słowy, nie jest to uzależnione rozmiaru struktury danych. 1938 01:24:46,240 --> 01:24:48,310 To jest sposób, aby myśleć o tym. 1939 01:24:48,310 --> 01:24:50,510 Jakieś inne pytania? 1940 01:24:50,510 --> 01:24:53,120 Być może w tym czasie pierwszy Historia, skończyliśmy na czas. 1941 01:24:53,120 --> 01:24:57,080 Jeśli masz jakiekolwiek pytania, nie wahaj swobodnie się nas zapytać, przejdź do sekcji, 1942 01:24:57,080 --> 01:25:00,190 porozmawiać z TFS, biura godziny są 08:00 i 08:30 1943 01:25:00,190 --> 01:25:03,985 do godziny 11:00 w poniedziałek i wtorek, więc jest to trochę inny czas, 1944 01:25:03,985 --> 01:25:05,110 więc upewnij się, pamiętać, że. 1945 01:25:05,110 --> 01:25:06,048 Tak. 1946 01:25:06,048 --> 01:25:08,673 >> PUBLICZNOŚCI: Czy musimy wiedzieć rzeczy, jak argumentów wiersza poleceń, 1947 01:25:08,673 --> 01:25:10,360 ls kreska, kreska cokolwiek? 1948 01:25:10,360 --> 01:25:11,840 >> Głośnik 1: Linia poleceń argumenty i poleceń Linuksa, 1949 01:25:11,840 --> 01:25:13,010 tak, trzeba wiedzieć ci. 1950 01:25:13,010 --> 01:25:18,234 Very-- to jak rodzaj poziomie rzeczy omówiliśmy w rozdziale 0, 1951 01:25:18,234 --> 01:25:19,400 tak daleko, jak nakazuje Linux przejdź. 1952 01:25:19,400 --> 01:25:20,942 >> PUBLICZNOŚCI: Czy godzin w Annenberg? 1953 01:25:20,942 --> 01:25:23,525 Głośnik 1: Godziny urzędowania, nie jestem do końca pewien, gdzie się znajdują. 1954 01:25:23,525 --> 01:25:25,980 Ale można sprawdzić strona internetowa i powie to. 1955 01:25:25,980 --> 01:25:27,499