1 00:00:00,000 --> 00:00:02,670 >> [TEMAT MUZYKA] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> GŁOŚNIK 1: Cześć wszystkim. 4 00:00:13,365 --> 00:00:14,365 Witamy z powrotem do sekcji. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Piękny dzień out--, dlatego, że jestem Oczywiście, są tylko cztery z was tutaj 7 00:00:18,700 --> 00:00:21,180 i nie nasz zwykły pakiet. 8 00:00:21,180 --> 00:00:22,670 Byłem chory w ten weekend. 9 00:00:22,670 --> 00:00:24,294 Więc nie mam Gwiazda dla was. 10 00:00:24,294 --> 00:00:26,400 A może zacznę kaszleć strasznie przez to. 11 00:00:26,400 --> 00:00:27,790 Więc po prostu nosić ze mną. 12 00:00:27,790 --> 00:00:30,624 Będę naprawdę spróbować i przejść przez ten pierwszy, 13 00:00:30,624 --> 00:00:32,290 jednak, zanim mam atak kaszlu. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ale tak łatwo się mnie trochę bit-- to wszystko pytam. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Więc nasza agenda today-- tylko reminder-- quiz jest w przyszłym tygodniu. 18 00:00:44,289 --> 00:00:46,830 Powiedziałem wam to w zeszłym tygodniu, więc nie złapać tropu. 19 00:00:46,830 --> 00:00:47,954 Więc jestem przypominając ponownie. 20 00:00:47,954 --> 00:00:49,180 Przyszłym tygodniu quiz. 21 00:00:49,180 --> 00:00:52,730 W tym celu, w przyszłym tygodniu na Sekcja będzie znacznie więcej 22 00:00:52,730 --> 00:00:55,180 of-- Postaram się i pracować w jakimś przeglądu. 23 00:00:55,180 --> 00:00:58,130 Więc jeśli wam się mi pomóc, wysyłając mnie 24 00:00:58,130 --> 00:01:00,990 rzeczy, że jesteś wygodne się, że się martwisz, 25 00:01:00,990 --> 00:01:03,530 tematy, które chciałbyś dla mi na pokrycie, to byłoby świetnie. 26 00:01:03,530 --> 00:01:05,740 Więc mogę spróbować i ich pracy do naszej sekcji w przyszłym tygodniu 27 00:01:05,740 --> 00:01:11,540 lub wysłać dodatkowy materiał lub prep że nie może dostać się gdzie indziej. 28 00:01:11,540 --> 00:01:12,150 >> Tak! 29 00:01:12,150 --> 00:01:13,520 Więcej ludzi przychodzi! 30 00:01:13,520 --> 00:01:17,320 Myślałem, że zrobiłem źle w ubiegłym tygodniu, że nikt nie chce wrócić? 31 00:01:17,320 --> 00:01:18,065 Boję się. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Tak więc trzech innych rzeczy że mamy zamiar iść na 34 00:01:21,100 --> 00:01:24,850 są przekierowania, plik I / O, a następnie wskaźniki i pamięci dynamicznej. 35 00:01:24,850 --> 00:01:29,160 Jestem pewien, że wszyscy jesteśmy bardzo podekscytowani pointers-- ulubiony temat każdego z nas, 36 00:01:29,160 --> 00:01:31,310 tak proste do zrozumienia. 37 00:01:31,310 --> 00:01:33,130 Jestem pewien, że wy wszyscy mają, prawda? 38 00:01:33,130 --> 00:01:39,510 >> Pierwszy tak pierwsze rzeczy, redirection-- jest to w zasadzie tylko sposobem 39 00:01:39,510 --> 00:01:42,920 kontrolować, w jaki sposób wejście rzeczy w programie, 40 00:01:42,920 --> 00:01:44,606 rzeczy, jak wyjść z programu. 41 00:01:44,606 --> 00:01:46,980 Główne sposoby, że chłopaki zostały interakcje z 42 00:01:46,980 --> 00:01:51,650 jest tylko poprzez standardowe wyjście z ekranu drukowania tutaj. 43 00:01:51,650 --> 00:01:55,940 Ale są sposoby na pipe-- jak widzimy tutaj 44 00:01:55,940 --> 00:01:58,980 jest jednym z naszych words-- rodzaju Rura z informacja 45 00:01:58,980 --> 00:02:02,850 lub że dane w pliku z pliku. 46 00:02:02,850 --> 00:02:05,820 To jest po prostu różne sposoby Getting Things do programu 47 00:02:05,820 --> 00:02:10,681 i się z programem, a nie tylko drukowanie ich na tym ekranie 48 00:02:10,681 --> 00:02:12,430 lub wprowadzania rzeczy z linii poleceń. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Pierwszym z nich jest tak mało większa niż daszek. 51 00:02:18,030 --> 00:02:22,085 Więc output-- to wyjście po prostu drukuje do pliku zamiast ekranu. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Więc jeśli masz coś, wydrukowany "Witaj, świecie!" na ekranie 54 00:02:29,500 --> 00:02:32,400 jeśli umieścić go zamiast do output.text, że 55 00:02:32,400 --> 00:02:35,220 tworzy plik o nazwie output.text. 56 00:02:35,220 --> 00:02:38,550 A kiedy go otworzyć, to będziesz powiedzieć: "Witaj, świecie!" tam. 57 00:02:38,550 --> 00:02:41,410 Może to być bardzo przydatne jeśli masz mnóstwo błędów 58 00:02:41,410 --> 00:02:43,430 rzeczywiście, jak widzimy w tym. 59 00:02:43,430 --> 00:02:46,810 Jeśli nie dwie karetki, to będziesz drukowanie komunikatów o błędach. 60 00:02:46,810 --> 00:02:52,090 >> Tak więc, jeśli masz problem z kompilacja, ma dużo błędów 61 00:02:52,090 --> 00:02:56,770 a ty ugrzęznąć w staraniach przewiń w linii poleceń 62 00:02:56,770 --> 00:02:59,110 przez wszystkich tych, można po prostu wydrukować je do pliku, 63 00:02:59,110 --> 00:03:02,130 otworzyć ten plik, tak aby można przewijać nich łatwiejsze. 64 00:03:02,130 --> 00:03:05,160 I rzeczywiście wykorzystywane, że Wiele kiedy debugowania 65 00:03:05,160 --> 00:03:07,970 moje 181 psets dla uczenia maszynowego. 66 00:03:07,970 --> 00:03:10,000 Więc to może być bardzo przydatne w przyszłości. 67 00:03:10,000 --> 00:03:18,370 Jest to także przydatne, jeśli masz program że być może generuje bibliotekę 68 00:03:18,370 --> 00:03:20,430 lub generowania jakiś zestaw strun, i 69 00:03:20,430 --> 00:03:22,846 muszą być w stanie dostrzec, że to generuje je prawidłowo. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 To jest sposób, aby to zrobić. 72 00:03:25,160 --> 00:03:28,280 >> Więc jeśli je wydrukować do pliku, mogą łatwiej zbadać je, prawda? 73 00:03:28,280 --> 00:03:30,930 Versus próbuje przewijać za pośrednictwem linii poleceń. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 I wtedy jedna rzecz, aby pamiętać, jest to, że z tylko większe 76 00:03:35,820 --> 00:03:40,090 niż daszek, jeśli piszesz do pliku, który już exists-- 77 00:03:40,090 --> 00:03:44,990 tak, jak gdyby zabrakło tego pierwszego Czas, kładziemy go na output.text, 78 00:03:44,990 --> 00:03:49,970 a następnie mieliśmy drugi program że to wydrukowane w programie dwa 79 00:03:49,970 --> 00:03:54,250 i nie większa niż output.text, spowoduje zastąpienie that-- tak 80 00:03:54,250 --> 00:03:56,715 nadpisanie, co było kiedykolwiek w ten plik, aby rozpocząć. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Tak więc, jeśli chcesz dołączyć do pliku, jak widzimy tutaj, 83 00:04:00,750 --> 00:04:04,779 po prostu zrobić dwa większe niż znaki. 84 00:04:04,779 --> 00:04:05,820 I będzie dołączyć do niego. 85 00:04:05,820 --> 00:04:06,750 Nie będzie go zastąpić. 86 00:04:06,750 --> 00:04:09,770 Więc jeśli chcesz uruchomić wielokrotnego Programy i rodzaj utrzymać 87 00:04:09,770 --> 00:04:13,170 tor, co wszystkie z nich są wracając do Ciebie w pliku, 88 00:04:13,170 --> 00:04:14,190 to jest sposób, aby to zrobić. 89 00:04:14,190 --> 00:04:17,231 Jeśli nie obchodzi co jest w pliku i to mogą być zastąpione, 90 00:04:17,231 --> 00:04:19,204 możesz po prostu użyć jednego większa niż. 91 00:04:19,204 --> 00:04:20,600 Czy to ma sens dla każdego? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Odbiorcy: Jak przywitać większa kropka slash niż tekst wyjściowy kropka, jak dwa razy, 94 00:04:31,140 --> 00:04:34,030 będzie to po prostu pokazać się tylko na wyjściu kropka drugi time-- tekst 95 00:04:34,030 --> 00:04:34,810 >> GŁOŚNIK 1: Prawo. 96 00:04:34,810 --> 00:04:40,450 Więc to w zasadzie tylko w całości nadpisanie, co było na początku. 97 00:04:40,450 --> 00:04:44,260 Jeśli ten plik tutaj, już output.text 98 00:04:44,260 --> 00:04:48,230 istnieje, w zasadzie, co nazywasz że dzięki jednej Wielkopolski 99 00:04:48,230 --> 00:04:51,920 nie można po prostu myśleć o tym tak jak to zastąpić plik. 100 00:04:51,920 --> 00:04:54,824 Jak wtedy, gdy jesteś zapisywania Słowo dokument i nie zapisywać, 101 00:04:54,824 --> 00:04:57,365 i zachować tę samą nazwę, a całkowicie nadpisuje it-- 102 00:04:57,365 --> 00:04:58,680 jest to ten sam rodzaj rzeczy. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Ktoś ma jakieś pytania na temat tylko wyprowadzania do pliku? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Niesamowite. 107 00:05:05,550 --> 00:05:11,440 >> Tak oczywiście, jeśli odwrócić strzałka kierunku, to może zrobić wejście. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Kiedy więc chłopaki mieli jak Cezara lub Visioneer 110 00:05:19,960 --> 00:05:23,195 i trzeba było coś wejściowego, miałeś linii poleceń argumentu 111 00:05:23,195 --> 00:05:24,960 Wejście to, że rzeczywiście. 112 00:05:24,960 --> 00:05:27,410 Jest to kolejny sposób, aby to zrobić. 113 00:05:27,410 --> 00:05:30,520 Więc zamiast czekać w wierszu polecenia 114 00:05:30,520 --> 00:05:33,800 jak, kiedy poprosił o swoje Komunikat w Cezara lub Visioneer, 115 00:05:33,800 --> 00:05:36,490 gdybyś miał plik tekstowy że mieliśmy wiadomość, 116 00:05:36,490 --> 00:05:38,280 można po prostu wpisać go do tego. 117 00:05:38,280 --> 00:05:44,930 >> Więc jeśli to było jak kropka slash Cezara 3 mniej niż tekstu wejściowego strzałki, które 118 00:05:44,930 --> 00:05:47,240 jest wiadomość, że byłoby dobrze. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Gdy Cezar rzeczywiście program zapytany o dane od użytkownika, 121 00:05:54,020 --> 00:05:57,360 byłoby już to dlatego, wpisaniu w tym pliku. 122 00:05:57,360 --> 00:05:58,830 To tylko kolejny sposób. 123 00:05:58,830 --> 00:06:02,445 Wystarczy odwrotna output-- tylko wejście do danych. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> I wtedy ostatni jest rura. 126 00:06:06,680 --> 00:06:07,780 Tak Ten jest całkiem fajny. 127 00:06:07,780 --> 00:06:09,890 Dlatego, że pozwala na wziąć wyjście jednego 128 00:06:09,890 --> 00:06:13,695 Program i umieścić go w Wejście do innego programu. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Nie wiem, czy ktoś z was grał z rozszyfrować 131 00:06:18,630 --> 00:06:20,590 że CS50 może mieć wam, ale to będzie 132 00:06:20,590 --> 00:06:27,380 pozwalają trochę próbkę pliku, wpisz go do szyfrowania, 133 00:06:27,380 --> 00:06:30,350 a następnie stamtąd wpisać że w swoim deszyfrowania 134 00:06:30,350 --> 00:06:32,470 upewnić się, okazało się to samo. 135 00:06:32,470 --> 00:06:34,050 Więc jest to coś w rodzaju pętli trójdrożny. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Idź do niego. 138 00:06:39,423 --> 00:06:41,785 >> Publiczność: Jeśli program ma wiele wejść, 139 00:06:41,785 --> 00:06:47,646 czy jest jakiś sposób, żeby go które wejście powiedzieć do korzystania z pliku tekstowego lub wyjście? 140 00:06:47,646 --> 00:06:49,325 >> GŁOŚNIK 1: Posiada wiele wejść. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Cokolwiek złożyć input-- kiedy to z prośbą o wejście że za pierwszym razem, to 143 00:07:00,430 --> 00:07:03,240 zamiar założyć, myślę, że to zamiar rury w całym pliku. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Więc jeśli masz kilka wejść, jesteś będzie rurociągów w wielu plikach. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Więc jeśli pytasz wiadomości trzy razy w kodzie, 148 00:07:12,390 --> 00:07:15,230 masz zamiar być wprowadzenie w trzech różnych plików. 149 00:07:15,230 --> 00:07:15,980 I robi się szalony. 150 00:07:15,980 --> 00:07:18,188 I nie powinno się martw się o to już teraz. 151 00:07:18,188 --> 00:07:19,150 Ale to jest pomysł. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Więc tak, rura jest tylko wyjście jednego Program wykorzystuje wejście do drugiej. 154 00:07:26,822 --> 00:07:27,665 Wszyscy tam dobrze? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Fajne. 157 00:07:29,065 --> 00:07:30,170 158 00:07:30,170 --> 00:07:30,932 OK. 159 00:07:30,932 --> 00:07:32,890 Prawdopodobnie nie będzie miał zrobić zbyt wiele z nim. 160 00:07:32,890 --> 00:07:35,670 Ale trzeba zrozumieć, sposobów można to wykorzystać. 161 00:07:35,670 --> 00:07:38,910 I są pewne sprawy, które możesz go używać. 162 00:07:38,910 --> 00:07:44,590 >> Więc plik I / O- wiem co masz saying-- jesteśmy przyzwyczajeni do czytania z 163 00:07:44,590 --> 00:07:50,500 i pisania do naszej ekranie tam, co jest standardem i standardowe wyjście. 164 00:07:50,500 --> 00:07:54,370 I to jest to, co faceci byli robi od początku klasy tutaj. 165 00:07:54,370 --> 00:07:58,220 Ale można także odczytywać i zapisywać pliki, który jest cały plik I / O- więc plik wejściowy, 166 00:07:58,220 --> 00:07:59,850 Wyjście to wszystko oznacza. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Więc to w zasadzie oznacza, że można przechowywać swoje dane teraz. 169 00:08:04,360 --> 00:08:08,460 >> Po prostu wydrukuj go do ekran, to w zasadzie nie ma, prawda? 170 00:08:08,460 --> 00:08:12,507 Jak najszybciej zrobić "Hello świat "i uruchomić" Witaj świecie " 171 00:08:12,507 --> 00:08:14,090 wypisuje "Hello World" na ekranie. 172 00:08:14,090 --> 00:08:16,370 Ale tak naprawdę nie można zrobić coś z nim tam. 173 00:08:16,370 --> 00:08:18,950 W przypadku przechowywania w tekście Plik, a potem nagle 174 00:08:18,950 --> 00:08:22,789 masz te dane, że masz prawo manipulować lub umieścić go w pliku, 175 00:08:22,789 --> 00:08:24,080 lub umieścić go w programie później. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Jednym z powodów Dlaczego robimy to tylko 178 00:08:29,290 --> 00:08:31,560 jako sposób przechowywania danych w celu późniejszego wykorzystania. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Mam tu kilka kroków po prostu przechodząc przez standardowe 181 00:08:37,279 --> 00:08:39,450 I / O. W pierwszym kroku, można należy utworzyć odwołanie 182 00:08:39,450 --> 00:08:43,480 dostępu do pliku wszystkich czapki Plik gwiazdek. 183 00:08:43,480 --> 00:08:45,740 Tak, że tworzy wskaźnik do pliku. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Więc chcesz go otworzyć. 186 00:08:49,650 --> 00:08:52,940 I mówisz, dosłownie, tylko plik równa fopen. 187 00:08:52,940 --> 00:08:57,400 I to się dzieje, aby powrócić wskaźnika do właśnie otwartego pliku. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Widziałem kilka Ciebie Faceci w godzinach urzędowania. 190 00:09:01,460 --> 00:09:07,400 >> Ale jedną z rzeczy, jest remember-- wskaźniki 191 00:09:07,400 --> 00:09:10,409 może być jakiś adres lub null, prawda? 192 00:09:10,409 --> 00:09:12,700 Jeśli kiedykolwiek ma przypadku, gdy coś może zwrócić null, 193 00:09:12,700 --> 00:09:14,990 co mamy robić zanim jeszcze go używać? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Musimy sprawdzić, czy jest zerowy lub nie, prawda? 196 00:09:19,000 --> 00:09:23,600 Ponieważ niektórzy z was mogą mieć Kwestia, gdzie co obiekt 197 00:09:23,600 --> 00:09:26,110 był zwrócony w wybuchu była zerowa. 198 00:09:26,110 --> 00:09:28,170 Próbowano wykonać niektóre funkcje na nim. 199 00:09:28,170 --> 00:09:29,770 A Twoja strona komputer nic zarzucić. 200 00:09:29,770 --> 00:09:30,725 Prawda? 201 00:09:30,725 --> 00:09:33,640 Założę kilka Ciebie może mieć ten problem. 202 00:09:33,640 --> 00:09:38,890 >> Więc z fopen, fopen albo będzie zwraca wskaźnik do pliku, 203 00:09:38,890 --> 00:09:41,200 lub, jeśli coś pójdzie nie tak, to się zwróci null. 204 00:09:41,200 --> 00:09:45,980 Tak więc zawsze trzeba sprawdzić że nie wrócił pusty 205 00:09:45,980 --> 00:09:47,880 przed przystąpieniem do niczego innego. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 To jest jak standardowy paradygmatu że masz zamiar trzeba tutaj. 208 00:09:51,974 --> 00:09:54,390 Jeśli jest szansa, że ​​kiedykolwiek coś może zwrócić null, 209 00:09:54,390 --> 00:09:56,590 sprawdzić, czy to nie przed kontynuowaniem. 210 00:09:56,590 --> 00:09:58,911 W przeciwnym razie, będziesz aby uzyskać piękne usterek witryn. 211 00:09:58,911 --> 00:10:00,410 A nikt nie lubi zajmować się tym. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Tak jak widzimy tutaj, pierwszy argument jest tylko ścieżka do pliku. 214 00:10:06,410 --> 00:10:09,380 Jeśli plik nie istnieje, to będzie utworzyć ten plik. 215 00:10:09,380 --> 00:10:10,713 I to właśnie będzie puste. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 A potem drugi argument jest tryb, który chcesz. 218 00:10:13,080 --> 00:10:14,610 Czy chcemy czytać z tego pliku? 219 00:10:14,610 --> 00:10:15,560 Czy chcesz napisać od niego? 220 00:10:15,560 --> 00:10:16,476 Chcesz dołączyć? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Tak naprawdę to, co właśnie said-- jeśli plik nie istnieje 223 00:10:20,670 --> 00:10:23,400 i starasz się czytać z to, że rzuci się błąd. 224 00:10:23,400 --> 00:10:26,890 Jeśli podoba czy plik name-- file.text jeszcze nie istnieje 225 00:10:26,890 --> 00:10:29,250 i chcesz napisać do niej, stworzy 226 00:10:29,250 --> 00:10:33,110 pusty plik o nazwie file.text dla Ciebie. 227 00:10:33,110 --> 00:10:36,612 A jeśli chcesz dołączyć, powinieneś zrobić to samo. 228 00:10:36,612 --> 00:10:38,081 Czy to ma sens? 229 00:10:38,081 --> 00:10:40,580 Jeśli starasz się czytać z Plik, który jeszcze nie istnieje, 230 00:10:40,580 --> 00:10:41,590 będzie to wyrzucić błąd. 231 00:10:41,590 --> 00:10:44,340 W przeciwnym razie, będzie utworzyć plik dla ciebie zrobić, co chcesz do niego. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Fajne. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Teraz możemy odczytać z pliku. 236 00:10:48,880 --> 00:10:52,570 I to jest właśnie rodzaj dzieje przez różne funkcje 237 00:10:52,570 --> 00:10:58,980 że mamy do pliku I / O. Ta wola być konieczne w tym tygodniu Pset, 238 00:10:58,980 --> 00:11:00,505 jeśli dobrze pamiętam. 239 00:11:00,505 --> 00:11:02,880 Tak, będzie to absolutnie niezbędne w tym tygodniu Pset. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Więc fgetc zwraca następny znak. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets tylko zwraca wiersz tekstu. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Powróci do niczego Nowa linia, i będzie przerwa. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Więc fread odczytuje pewne liczba bajtów i umieszcza je 248 00:11:18,700 --> 00:11:20,700 do tablicy, która jest coś, co może 249 00:11:20,700 --> 00:11:25,485 chcą zrobić z ponownego size-- Może być użyteczne. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Ile osób przeczytałeś spec pset, przy okazji? 252 00:11:29,290 --> 00:11:30,980 253 00:11:30,980 --> 00:11:32,261 OK. 254 00:11:32,261 --> 00:11:32,760 [Niesłyszalne] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> GŁOŚNIK 1: OK. 257 00:11:36,580 --> 00:11:37,530 Dobrze. 258 00:11:37,530 --> 00:11:41,940 Zdecydowanie przeczytać that-- to zabawa zbior. 259 00:11:41,940 --> 00:11:51,320 Można dostać się do odzyskać usunięty pamięci card-- naprawdę ekscytujące, kiedy to działa. 260 00:11:51,320 --> 00:11:54,100 Ale na pewno, zacznij czytać tego. 261 00:11:54,100 --> 00:11:56,280 Chodź ze mną rozmawiać, jeśli Ciebie pytania o to. 262 00:11:56,280 --> 00:11:59,290 >> OK, tak jak mówiłem, fread odczytuje się określoną liczbę bajtów. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 To niektóre dowolna liczba że masz zamiar ustawić. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 A następnie fseek tylko ruchy w pewnym położeniu. 267 00:12:08,260 --> 00:12:11,150 Więc może to nie obchodzi o następne 10 bajtów. 268 00:12:11,150 --> 00:12:12,880 Chcesz po prostu przejść od razu. 269 00:12:12,880 --> 00:12:14,030 Nie dbam o nich. 270 00:12:14,030 --> 00:12:16,280 Chcesz przeczytać zaczynając od bajtu 11. 271 00:12:16,280 --> 00:12:18,252 fseek pozwala to zrobić. 272 00:12:18,252 --> 00:12:20,710 Więc to pozwala być selektywna o tym, co czytasz. 273 00:12:20,710 --> 00:12:25,880 Ponieważ fgetc, fgets i fread przeczytane z pewnego miejsca w pliku. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Sposób, aby myśleć o to, czy to jest nasz plik, gdy po raz pierwszy go otworzyć, 276 00:12:35,090 --> 00:12:41,140 masz tę pozycję w pliku który zaczyna się na początku. 277 00:12:41,140 --> 00:12:45,040 Kiedykolwiek zadzwonić fgetc, fgetf lub fread, 278 00:12:45,040 --> 00:12:48,875 to będzie rozpocząć od ten znacznik pozycji. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Powiedzmy, że po prostu chcesz przeczytać ten fragment pamięci tutaj. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Nie można po prostu zadzwonić. 283 00:12:57,960 --> 00:13:02,430 Musisz szukać tutaj a następnie odczytać stamtąd 284 00:13:02,430 --> 00:13:06,540 lub czytać, dostaje albo getc, w zależności od tego, co chcesz. 285 00:13:06,540 --> 00:13:09,310 Więc szukać tylko pozwala na pominąć fragmenty pamięci. 286 00:13:09,310 --> 00:13:11,590 A to tylko sposób można pominąć rzeczy 287 00:13:11,590 --> 00:13:14,012 bez czytania ich do bufora. 288 00:13:14,012 --> 00:13:15,470 Czy to ma sens dla każdego? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> Oczywiście, nie Wiele równoległych here-- 291 00:13:24,780 --> 00:13:27,780 nasz przekierowanie wyjścia lub wejścia, już czytać i pisać. 292 00:13:27,780 --> 00:13:31,800 Więc fputc tylko pisze znaków w pliku. 293 00:13:31,800 --> 00:13:33,655 fputs pisze wiersz. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf drukuje sformatowany wyjście. 296 00:13:37,420 --> 00:13:41,190 Więc jeśli masz karty, lub miejsca, lub cokolwiek. 297 00:13:41,190 --> 00:13:44,180 A potem pisze niektóre fwrite Tablica bajtów do pliku. 298 00:13:44,180 --> 00:13:48,860 Tak to jest w ten sam sposób fwrite i fread są analogiczne 299 00:13:48,860 --> 00:13:57,550 opposites-- fgets, fputs i następnie fputc i fgetc-- wiele 300 00:13:57,550 --> 00:14:00,710 crazy, szybkie rzeczy. 301 00:14:00,710 --> 00:14:05,300 >> Wystarczy trochę zachować to handy-- będziesz mieć różne czasy 302 00:14:05,300 --> 00:14:08,680 gdzie może po prostu chcesz jeden znak na raz. 303 00:14:08,680 --> 00:14:09,890 Może chcesz całą linię. 304 00:14:09,890 --> 00:14:14,320 Z słownika pset-- która składa się z dwóch psets, 305 00:14:14,320 --> 00:14:19,690 Wierzę, damy Ci całość Słownik w formacie tekstowym 306 00:14:19,690 --> 00:14:22,252 każde słowo, które ma oddziela się linią. 307 00:14:22,252 --> 00:14:24,210 Więc jeśli chcesz, aby przeczytać w jednym słowie na raz, 308 00:14:24,210 --> 00:14:31,769 co można użyć, jeśli czytasz i wszystkie są rozdzielone na nowych liniach, 309 00:14:31,769 --> 00:14:33,310 i chcesz tylko jedno słowo na raz? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> WIDOWNI: fgets 312 00:14:36,040 --> 00:14:36,748 >> GŁOŚNIK 1: Prawo. 313 00:14:36,748 --> 00:14:39,960 Fgets-- dlatego, że zwraca co jest w jednej linii. 314 00:14:39,960 --> 00:14:42,750 A jeśli każde słowo jest jej własna linia, możemy użyć fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Fajne. 317 00:14:45,010 --> 00:14:47,290 Czy to ma sens, wszyscy? 318 00:14:47,290 --> 00:14:48,020 Cool? 319 00:14:48,020 --> 00:14:50,020 Tak, mamy zamiar dostać się do zabawy część z wskaźnikami 320 00:14:50,020 --> 00:14:51,728 bardzo szybko, w którym się zrobić trochę matematyki. 321 00:14:51,728 --> 00:14:52,776 I to będzie wielki. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Ostatni step-- zamknij plik. 324 00:14:57,740 --> 00:15:01,090 Z tak wielu rzeczy tutaj, jeden z naszych modeli 325 00:15:01,090 --> 00:15:03,550 to czy może wrócić null, sprawdź, null. 326 00:15:03,550 --> 00:15:06,160 Jeśli otworzyć coś, lepiej go zamknąć. 327 00:15:06,160 --> 00:15:10,419 OK, więc nie skończysz dopóki jesteś zrobić chyba, że ​​je zamknął. 328 00:15:10,419 --> 00:15:12,585 Coś jak to nie jest na dopóki gruba dama śpiewa. 329 00:15:12,585 --> 00:15:14,130 To tak, jakby zamknięcie pliku. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Jak mówi, po prostu powtórzyć, zawsze 332 00:15:19,190 --> 00:15:21,750 otworzyć plik, zanim będziesz odczytu lub zapisu do niego. 333 00:15:21,750 --> 00:15:24,450 I zawsze zamknąć go, jeśli już je otworzył. 334 00:15:24,450 --> 00:15:25,460 Wszystko w porządku? 335 00:15:25,460 --> 00:15:25,960 Fajne. 336 00:15:25,960 --> 00:15:26,835 >> Więc oto przykład. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Więc tiny-- Nie wiem, czy ty ludzie widzą, że bardzo dobrze. 339 00:15:34,330 --> 00:15:36,805 Gdybyśmy tylko mogli zwiększyć Jasność jakoś. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Pozwól, że faktycznie to jeśli mogę. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, chłopaki naprawdę nie może zobaczyć, że w ogóle można? 344 00:15:51,470 --> 00:15:52,905 OK, mamy zamiar to zrobić, a następnie. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Niesłyszalne] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Zakładam, że jest to o wiele lepiej, aby zobaczyć. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Czy ktoś może zobaczyć, gdzie mój Mysz poszła jest pytanie? 351 00:17:19,455 --> 00:17:22,837 Ach, to is-- co walczy! 352 00:17:22,837 --> 00:17:48,910 353 00:17:48,910 --> 00:17:49,520 >> OK. 354 00:17:49,520 --> 00:17:53,845 Zasadniczo, faceci powinni mieć rodzaj od pomysłu co to robi. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 To nie jest idealne. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Ale wolałbym wyjaśnić niż spędzić więcej czasu próbując go sformatować poprawnie. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Zasadniczo, jak widać tutaj, zaczynamy z otwartego pliku. 361 00:18:07,280 --> 00:18:09,620 I mamy pewne plik bazy danych, które są 362 00:18:09,620 --> 00:18:12,300 otwarcie, że mówi, że to nasi studenci. 363 00:18:12,300 --> 00:18:14,020 I mamy zamiar napisać do niego. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Więc oczywiście zwróci null. 366 00:18:17,720 --> 00:18:19,650 Musimy więc sprawdzić, null. 367 00:18:19,650 --> 00:18:22,930 A potem, jeśli to nie jest null, przechodzimy. 368 00:18:22,930 --> 00:18:25,660 I jak widać, jesteśmy krążący tutaj. 369 00:18:25,660 --> 00:18:26,960 Są studenci. 370 00:18:26,960 --> 00:18:30,520 Studenci to skrót zdefiniowany jako trzy. 371 00:18:30,520 --> 00:18:34,060 I to, co robimy jest jesteśmy drukowanie do pliku, tak? 372 00:18:34,060 --> 00:18:36,975 Więc co my drukowania do naszego pliku? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Uczestniczyć: wyniki że są w tablicy? 375 00:18:48,906 --> 00:18:49,680 >> 1 głośnik: Tak. 376 00:18:49,680 --> 00:18:50,980 Wynik, które są w array-- dokładnie. 377 00:18:50,980 --> 00:18:53,050 Więc otwieramy ten plik bazy danych, które 378 00:18:53,050 --> 00:18:56,040 Zakładam, że jest jakiś bazy danych klas. 379 00:18:56,040 --> 00:19:01,100 A my po prostu drukowanie wyniki każdego ucznia do tego pliku. 380 00:19:01,100 --> 00:19:02,140 Cool? 381 00:19:02,140 --> 00:19:02,640 Dobra. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Niesamowite. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Wróćmy to-- 386 00:19:06,950 --> 00:19:08,646 >> Publiczność: mam szybkie pytanie. 387 00:19:08,646 --> 00:19:11,570 Printf nie jest w pętli for? 388 00:19:11,570 --> 00:19:12,870 To tylko w razie pętli? 389 00:19:12,870 --> 00:19:14,370 GŁOŚNIK 1: Nie, to w pętli for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Nie widzę mojej myszy bardzo dobrze się tutaj. 392 00:19:18,810 --> 00:19:21,359 Więc jestem stara się format, który poprawnie. 393 00:19:21,359 --> 00:19:22,525 Wspornik powinien zniknąć. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Należy tu w dół. 396 00:19:25,130 --> 00:19:26,605 To jest to, co masz w pętli for. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Nie. 399 00:20:11,180 --> 00:20:12,160 Teraz to całkiem. 400 00:20:12,160 --> 00:20:16,720 Więc tak jak powinno być: z wyjątkiem dla tego ostatniego przedziału, że odwołany. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Czy to ma sens dla każdego? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Mamy zamiar przenieść na do następnej rzeczy then-- 405 00:20:23,750 --> 00:20:26,180 które, rzeczywiście, masz zamiar potrzebować, aby zobaczyć kod. 406 00:20:26,180 --> 00:20:28,370 Więc jestem po prostu będzie Kopiowanie, że w ciągu chwili. 407 00:20:28,370 --> 00:20:31,500 408 00:20:31,500 --> 00:20:32,000 OK. 409 00:20:32,000 --> 00:20:35,110 Więc mam zamiar pokazać wam ten kod. 410 00:20:35,110 --> 00:20:38,240 I chcę, aby spróbować i rysunek co to ma robić. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Tak więc biorąc pod uwagę that-- zająć minutę lub tak. 413 00:20:52,480 --> 00:20:54,440 Spróbuj dowiedzieć się, co się tutaj dzieje. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Jakieś pomysły? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Wiemy, że mamy co najmniej dwa argumenty w linii poleceń, tak? 418 00:22:12,470 --> 00:22:16,270 I przyjąć, z których jedna ma być że [niesłyszalne] naszego programu jest 419 00:22:16,270 --> 00:22:17,530 a potem coś innego. 420 00:22:17,530 --> 00:22:19,980 Bo jeśli [niesłyszalne] jest mniej niż dwóch, możemy krzyczeć na nich. 421 00:22:19,980 --> 00:22:21,140 Prawda? 422 00:22:21,140 --> 00:22:25,300 I od użytkowania, wygląda na to, to będzie jakiś plik. 423 00:22:25,300 --> 00:22:26,260 Wszyscy zgadzają się, że? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Więc teraz, co to pętla robi? 426 00:22:31,570 --> 00:22:32,570 Co to przeżywa? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Grupa docelowa: Wszystkie pliki. 429 00:22:36,449 --> 00:22:37,240 GŁOŚNIK 1: Dokładnie. 430 00:22:37,240 --> 00:22:39,650 To się dzieje przez cały pliki, które mamy tam wejście. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Więc dla każdego pliku, to otwierając jakiś ciąg tam. 433 00:22:46,040 --> 00:22:47,560 To otwarcie się do tego pliku. 434 00:22:47,560 --> 00:22:48,060 Prawda? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 I czyta z niej. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Oczywiście, sprawdzając, czy jest pusty. 439 00:22:55,540 --> 00:22:57,220 I to jest drukowane. 440 00:22:57,220 --> 00:23:01,460 Jeśli jest pusty, to tylko mówi nam, że to nie jest plik, który nie istnieje. 441 00:23:01,460 --> 00:23:04,290 Bo pamiętam, z czytaj nasz plik musi istnieć. 442 00:23:04,290 --> 00:23:04,810 Prawda? 443 00:23:04,810 --> 00:23:06,870 Z zapisu i dołączyć, można uciec z nim. 444 00:23:06,870 --> 00:23:08,970 Ale z odczytu, nasz plik musi istnieć. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> A jeśli istnieje, Co my tu robimy? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Po prostu zacząć tutaj. 449 00:23:15,780 --> 00:23:18,815 Co to jest do-- to pierwszy znak. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Co to robi? 452 00:23:21,790 --> 00:23:24,100 Dostaje jeden znak, prawda? 453 00:23:24,100 --> 00:23:25,400 Więc co to robi? 454 00:23:25,400 --> 00:23:26,775 Robi się pierwszy znak. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Ktoś wie EOF? 457 00:23:30,200 --> 00:23:31,170 >> Publiczność: Koniec pliku? 458 00:23:31,170 --> 00:23:32,680 >> GŁOŚNIK 1: Koniec file-- dokładnie. 459 00:23:32,680 --> 00:23:35,310 Więc to będzie przejść przez cały plik, tak? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 I wtedy to się aktualizować przez coraz każdy kolejny znak. 462 00:23:40,780 --> 00:23:41,565 Prawda? 463 00:23:41,565 --> 00:23:43,636 A co on robi? 464 00:23:43,636 --> 00:23:44,760 Publiczność: Putting że in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> GŁOŚNIK 1: druki putchar do wygaszacza ekranu. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Niesłyszalne] charakter. 469 00:23:51,950 --> 00:23:54,300 I wtedy, gdy [niesłyszalne] będzie zamknąć plik. 470 00:23:54,300 --> 00:23:57,370 >> Publiczność: Nie potrzebujesz [? jeszcze? ?] 471 00:23:57,370 --> 00:23:59,005 >> GŁOŚNIK 1: Niekoniecznie. 472 00:23:59,005 --> 00:24:01,480 Mam na myśli, to jest rodzaj domniemanych w tym. 473 00:24:01,480 --> 00:24:06,780 Ponieważ ten wraca, chociaż, jak długo jak nie złapać tego, jesteś w porządku. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Mam na myśli to chyba dobry ćwiczyć się zrobić więcej. 476 00:24:10,250 --> 00:24:15,755 Ale nie zawsze jest inaczej konieczne zwłaszcza 477 00:24:15,755 --> 00:24:17,610 jeśli masz coś jak powrót, który 478 00:24:17,610 --> 00:24:20,640 Oznacza to, że w tym przypadku, gdy chwyta to twój program będzie do końca 479 00:24:20,640 --> 00:24:21,850 i nigdy nie dostać się do tego. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 To bardziej dla przypadku, gdy jesteś niekoniecznie powrocie coś. 482 00:24:29,190 --> 00:24:31,370 Bo jeśli to nie było powrót niczego, 483 00:24:31,370 --> 00:24:34,430 oznaczałoby to, że gdyby to było prawdą, Reszta to będzie nadal działać. 484 00:24:34,430 --> 00:24:36,138 I w tym przypadku, chciałby fałszywe. 485 00:24:36,138 --> 00:24:38,240 Jeśli nie jest to powrót, i Zakończenie programu, 486 00:24:38,240 --> 00:24:41,960 jeszcze wszystko nie jest konieczne czas, w zależności od kontekstu. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jakub, nie masz pytanie? 489 00:24:44,375 --> 00:24:46,100 Publiczność: Tak. 490 00:24:46,100 --> 00:24:49,300 Więc nie fgetc się następny znak? 491 00:24:49,300 --> 00:24:50,734 Jak bohater zwiększyć? 492 00:24:50,734 --> 00:24:51,400 1 głośnik: Tak. 493 00:24:51,400 --> 00:24:52,774 Więc fgetc dostaje następny znak. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Możesz myśleć o tym, jak C ++, w pewnym sensie. 496 00:24:56,866 --> 00:24:58,350 >> Publiczność: Tak, co było EOF? 497 00:24:58,350 --> 00:25:00,877 >> GŁOŚNIK 1: EOF jest koniec pliku. 498 00:25:00,877 --> 00:25:03,960 To jest po prostu znacznik, który pozwala wiedzieć że jesteś na końcu pliku. 499 00:25:03,960 --> 00:25:06,742 Więc to będzie drukować do standardu zewnątrz. 500 00:25:06,742 --> 00:25:08,950 I wtedy to się zamknij plików, kiedy to zrobić. 501 00:25:08,950 --> 00:25:10,700 A potem idziemy do następny plik, prawda? 502 00:25:10,700 --> 00:25:12,660 Więc ogólnie rzecz biorąc, to co ten program zrobić? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Niesłyszalne] 505 00:25:16,090 --> 00:25:16,900 >> 1 głośnik: Tak. 506 00:25:16,900 --> 00:25:18,770 To po prostu wypisuje wszystko tam. 507 00:25:18,770 --> 00:25:23,270 Więc jeśli wy kiedykolwiek Cat a następnie nazwa jakiegoś file-- 508 00:25:23,270 --> 00:25:26,240 Nie wiem, czy ktoś z was ma kiedykolwiek zrobił, że na terminalu. 509 00:25:26,240 --> 00:25:29,630 Ale jeśli kiedykolwiek użyć Komenda CAT-- C-T-- 510 00:25:29,630 --> 00:25:31,880 Plik, a następnie co masz there-- go 511 00:25:31,880 --> 00:25:37,260 drukuje go do terminalu, który może być bardzo przydatne dla niektórych rzeczy. 512 00:25:37,260 --> 00:25:38,746 Używam go dużo. 513 00:25:38,746 --> 00:25:40,120 Czy to ma sens dla każdego? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Cool? 516 00:25:42,100 --> 00:25:46,530 >> OK, więc zadanie now-- albo samodzielnie lub z ludźmi wokół you-- 517 00:25:46,530 --> 00:25:54,930 jest po prostu napisać prosty program , że będzie po prostu napisać "Witaj, świecie!" 518 00:25:54,930 --> 00:25:56,255 do pliku. 519 00:25:56,255 --> 00:26:00,215 >> [Niesłyszalne] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Niesłyszalne] 522 00:26:57,040 --> 00:26:59,248 >> GŁOŚNIK 1: Ja na to nie Źle robię, że w zeszłym tygodniu? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Nie sądziłem, że to było tak źle. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Cieszę się, że jesteśmy tutaj. 527 00:27:03,520 --> 00:27:04,655 To naprawdę sprawia, że ​​jestem szczęśliwy. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Jestem dziewczyną z prostych przyjemności. 530 00:27:10,160 --> 00:27:11,688 Ja po prostu lubię, gdy moja sekcja uczęszcza. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Więc ja tylko się zaczęło dla wy tak, że możemy zakodować razem. 533 00:27:18,270 --> 00:27:22,290 Nie lubię nikogo na wprowadzenie miejsce, jeśli nie chcesz być. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Grupa docelowa: Do quizu, zrobić musimy napisać program? 536 00:27:30,086 --> 00:27:33,260 >> GŁOŚNIK 1: Możesz zostać poproszony o pisać proste programy ręcznie. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Tak. 539 00:27:36,590 --> 00:27:38,510 >> Publiczność: quiz jest w przyszłym tygodniu, tak? 540 00:27:38,510 --> 00:27:40,108 >> GŁOŚNIK 1: quiz jest w najbliższą środę. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Oznacza to, że jest piękny [? CSE?] klasyfikacji partii po tym, który 543 00:27:43,730 --> 00:27:50,390 oznacza otrzymasz swoje wyniki z powrotem, że night-- w jakim czasie? 544 00:27:50,390 --> 00:27:50,890 Kto wie? 545 00:27:50,890 --> 00:27:51,973 Ale będzie to, że noc. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Dobrze. 548 00:28:02,855 --> 00:28:04,250 Jak chcemy rozpocząć ten? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Dam ci hint-- zaczyna z tego. 551 00:28:09,630 --> 00:28:11,455 >> PUBLICZNOŚCI: Musisz otworzyć plik. 552 00:28:11,455 --> 00:28:12,250 >> 1 głośnik: Tak. 553 00:28:12,250 --> 00:28:14,060 Więc co chcesz nazwać? 554 00:28:14,060 --> 00:28:16,150 Czy chcesz po prostu nazwać to "plik"? 555 00:28:16,150 --> 00:28:17,480 Zróbmy to łatwe. 556 00:28:17,480 --> 00:28:26,752 Więc fopen-- co nasze Test wyjścia będzie? 557 00:28:26,752 --> 00:28:36,130 Nazwijmy to "Hello". 558 00:28:36,130 --> 00:28:37,810 A jaki jest nasz tryb? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Co mamy robić do tego pliku? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Publiczność: Czytaj. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Pisanie. 565 00:28:44,900 --> 00:28:46,191 GŁOŚNIK 1: Piszemy do niego. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Piękny. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, więc mamy ten plik teraz. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Co musimy zrobić? 572 00:28:56,212 --> 00:28:57,420 PUBLICZNOŚCI: Sprawdź, czy jest to wartość null. 573 00:28:57,420 --> 00:28:59,820 GŁOŚNIK 1: Sprawdź, czy jest to null-- dokładnie. 574 00:28:59,820 --> 00:29:01,980 To, co chciałbym usłyszeć. 575 00:29:01,980 --> 00:29:05,930 To powinno być automatyczne, zwłaszcza praktycznie od tego momentu. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Jeśli zaczniesz segfaulting, prawdopodobnie nie sprawdzić wartość null gdzieś. 578 00:29:10,950 --> 00:29:12,480 Dziewięć razy na dziesięć, to będzie twój błąd. 579 00:29:12,480 --> 00:29:15,400 Więc jeśli można po prostu dostać w zwyczaj, zawsze należy sprawdzić, czy jest pusty, 580 00:29:15,400 --> 00:29:18,150 Twoje życie będzie ładne i easy-- lub łatwiejsze. 581 00:29:18,150 --> 00:29:19,480 >> Więc sprawdź, czy jest pusty. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Więc jeśli to nie jest null, która jest to, co równa się huk 584 00:29:24,820 --> 00:29:26,784 means-- nie null-- to ważne. 585 00:29:26,784 --> 00:29:27,700 Co chcemy zrobić? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Chcemy tylko, aby wydrukować do tego pliku, prawda? 588 00:29:31,570 --> 00:29:32,923 Więc co będziemy używać? 589 00:29:32,923 --> 00:29:34,092 >> Publiczność: fprintf 590 00:29:34,092 --> 00:29:36,800 >> GŁOŚNIK 1: Fprintf-- piękne. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 I fprintf tam gdzie zajmuje dwie arguments-- to będzie i co chcemy wydrukować. 593 00:29:44,000 --> 00:29:45,820 Więc co jest pierwszy? 594 00:29:45,820 --> 00:29:46,570 Gdzie to będzie? 595 00:29:46,570 --> 00:29:47,490 >> Publiczność: Plik. 596 00:29:47,490 --> 00:29:48,785 >> GŁOŚNIK 1: To będzie plik. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 I co chcemy wydrukować? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Witaj, świecie!" 601 00:29:58,065 --> 00:29:58,565 Dobrze. 602 00:29:58,565 --> 00:30:03,670 Mamy ostatnią thing-- tu kolejny wielki paradygmat. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Publiczność: Zamknij. 605 00:30:05,145 --> 00:30:05,853 GŁOŚNIK 1: Zamknij. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Proszę bardzo. 608 00:30:10,540 --> 00:30:13,384 >> Publiczność: Czy to się dzieje jeśli plik jest pusty? 609 00:30:13,384 --> 00:30:15,050 GŁOŚNIK 1: Nie, to jest, jeśli nie jest pusty. 610 00:30:15,050 --> 00:30:16,881 Publiczność: Och, czy to not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Dla fopen a następnie dwa argumenty, które go w środku, 613 00:30:25,410 --> 00:30:27,655 co to pierwszy argument oznacza ponownie? 614 00:30:27,655 --> 00:30:30,392 >> GŁOŚNIK 1: argument jest tak jak w nazwie pliku 615 00:30:30,392 --> 00:30:31,350 które chcesz się udać. 616 00:30:31,350 --> 00:30:36,020 Więc po działa to byś jakiś plik o nazwie "cześć" 617 00:30:36,020 --> 00:30:38,320 że miał "Hello, world" w nim. 618 00:30:38,320 --> 00:30:38,820 To wszystko. 619 00:30:38,820 --> 00:30:39,500 Tylko nazwa. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Publiczność: A ponieważ jest to pisanie, Plik nie musi już istnieć. 622 00:30:48,650 --> 00:30:49,675 Czy to, co pan powiedział? 623 00:30:49,675 --> 00:30:50,410 >> GŁOŚNIK 1: Prawo. 624 00:30:50,410 --> 00:30:50,910 Dokładnie. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 Jeśli "Hello" w postaci pliku jeszcze nie istnieje, to 627 00:30:55,839 --> 00:30:58,380 zamierza utworzyć plik o nazwie Hello "i napisać do niego dla Ciebie. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Publiczność: Kiedy mówisz program napisał do pliku, 630 00:31:03,610 --> 00:31:08,075 dlaczego piszesz "Plik", a nie Nazwa pliku i fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> GŁOŚNIK 1: Ponieważ w tym przypadku mamy że duża FILE-- wszystko caps-- gwiazdy, 632 00:31:13,600 --> 00:31:14,260 pliku. 633 00:31:14,260 --> 00:31:17,370 Więc jest to wskaźnik do pliku że mówisz. 634 00:31:17,370 --> 00:31:19,930 To jest sposób, w jaki po prostu się do niego. 635 00:31:19,930 --> 00:31:24,850 Tak więc w tym przypadku można myśleć o file-- AHA, 636 00:31:24,850 --> 00:31:31,271 możemy użyć this-- plik tutaj odnosi się do otwarcia "Hello" 637 00:31:31,271 --> 00:31:32,145 i pozwolić, aby to napisać. 638 00:31:32,145 --> 00:31:34,728 >> Publiczność: Czy możemy umieścić "Hello" zamiast [? po prostu?] plik f? 639 00:31:34,728 --> 00:31:40,160 GŁOŚNIK 1: Nie, ponieważ "Hello" musi być otwarty i zapisu. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 File tutaj jest jak oznaczenie, które mówi, OK, mamy 642 00:31:45,980 --> 00:31:49,190 mają ten file-- hello-- że patrzymy. 643 00:31:49,190 --> 00:31:50,680 Został on otwarty. 644 00:31:50,680 --> 00:31:52,140 I mamy zamiar napisać do niego. 645 00:31:52,140 --> 00:31:55,130 Jeśli po prostu użyć "Hello", która jest zawarta w nim. 646 00:31:55,130 --> 00:31:56,846 Więc to będzie freak out. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 To znaczy, może nazwali go. 649 00:32:00,300 --> 00:32:03,960 Mogłeś zrobić plik, gwiazda, "Hello", odpowiada, że. 650 00:32:03,960 --> 00:32:07,840 Ale chodzi o to, że ty Potrzebuję gwiazdy plik wskaźnik w porządku 651 00:32:07,840 --> 00:32:09,281 aby móc korzystać z tych funkcji. 652 00:32:09,281 --> 00:32:11,280 Publiczność: Czy możesz zrobić plik, gwiazda, plik, "Hello" 653 00:32:11,280 --> 00:32:13,113 lub masz do wprowadzenia złożyć gwiazdę, plik przez niego? 654 00:32:13,113 --> 00:32:16,330 GŁOŚNIK 1: Mogłabyś nie pliku, gwiazda, "Hello". 655 00:32:16,330 --> 00:32:19,790 Możesz to zmienić, aby bez względu na nazwę chcesz. 656 00:32:19,790 --> 00:32:22,114 To całkowicie arbitralne co to imię. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Możesz nazwać to wszystko. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nazwij go latające spaghetti, jeśli chcesz. 661 00:32:28,020 --> 00:32:29,690 >> Publiczność: Co to jest "w" w cudzysłowie dla? 662 00:32:29,690 --> 00:32:31,540 >> GŁOŚNIK 1: "w" jest tylko tryb. 663 00:32:31,540 --> 00:32:33,170 Więc piszemy do tego pliku. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Każdy dobry? 666 00:32:35,320 --> 00:32:36,227 Jasne? 667 00:32:36,227 --> 00:32:36,981 Tak. 668 00:32:36,981 --> 00:32:40,365 >> Publiczność: Tak, kiedy to pisze złożyć, gdzie możemy następnie znaleźć ten plik? 669 00:32:40,365 --> 00:32:43,820 >> GŁOŚNIK 1: To będzie w sam katalog, że jesteś obecnie. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Jeśli jesteś w Pset trzy i uruchomieniu tego, w swoim Pset 672 00:32:48,880 --> 00:32:52,600 trzy folderu będzie to plik o nazwie "Hello". 673 00:32:52,600 --> 00:32:53,160 Cool? 674 00:32:53,160 --> 00:32:53,757 Każdy dobry? 675 00:32:53,757 --> 00:32:55,840 Czuję, że jesteś wszystkim coraz to, co jest wspaniałe. 676 00:32:55,840 --> 00:32:57,290 677 00:32:57,290 --> 00:32:57,790 OK. 678 00:32:57,790 --> 00:33:05,960 Więc z powrotem do mojego show-- slajdów Uwielbiam, gdy wszystko działa. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Czy chłopaki podekscytowany? 680 00:33:08,674 --> 00:33:09,465 Wskaźniki są świetne. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Biorą trochę owinąć wokół twojej głowie. 683 00:33:13,580 --> 00:33:15,288 To jest mój drugi rok wskazówki dydaktyczne. 684 00:33:15,288 --> 00:33:16,850 I myślę, że w końcu dostał. 685 00:33:16,850 --> 00:33:18,650 Więc jeśli walczyć, to OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Jak powiedziałem wcześniej, rysunek zdjęcia Pomaga wiele z rzeczy w CS, 688 00:33:24,070 --> 00:33:27,400 tak samo jak ja, że ​​ludzie mają tendencję myśleć o, jesteśmy przy komputerze. 689 00:33:27,400 --> 00:33:28,399 Powinniśmy tylko kod. 690 00:33:28,399 --> 00:33:30,190 Rysunek zdjęcia No-- będzie naprawdę pomóc. 691 00:33:30,190 --> 00:33:32,773 I naprawdę zachęcam do dopasować się do swojej strony Kindergärtner 692 00:33:32,773 --> 00:33:35,010 i wydobyć kredki lub markery i remis. 693 00:33:35,010 --> 00:33:36,110 Bo to pomoże. 694 00:33:36,110 --> 00:33:39,380 A jeśli zobaczysz mnie w godzinach pracy, to będzie zabierania stosy papieru 695 00:33:39,380 --> 00:33:41,580 z pióra rysunek rzeczy. 696 00:33:41,580 --> 00:33:44,370 >> Tak, zwłaszcza z pointers-- rysować. 697 00:33:44,370 --> 00:33:47,970 I jestem pewien, że jesteśmy rzeczywiście będzie być rysunek kilka zdjęć tu. 698 00:33:47,970 --> 00:33:51,270 >> Więc wy wszyscy nam się zobaczyć Binky, to fajna rzecz claymation. 699 00:33:51,270 --> 00:33:54,720 I myślę, że to jest naprawdę zabawne, kiedy wybucha na kilka kawałków. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 To jakiś komiczny dla klasy. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [niesłyszalne] to wielka umiejętność aby móc kontrolować pamięci. 704 00:34:05,900 --> 00:34:10,090 I to jest jedna z rzeczy, które naprawdę sprawia, że ​​tak potężny język. 705 00:34:10,090 --> 00:34:13,469 Ale z wielką mocą przychodzi wielka odpowiedzialność. 706 00:34:13,469 --> 00:34:16,230 I szalone rzeczy mogą się zdarzyć jeśli nie jesteś ostrożny. 707 00:34:16,230 --> 00:34:18,560 Więc jeśli używasz wskaźniki, chcesz zrobić 708 00:34:18,560 --> 00:34:21,440 upewnij się, że naprawdę zrozumieć dokładnie to, co robisz. 709 00:34:21,440 --> 00:34:25,530 Mam nadzieję, że w przyszłym trochę czas pomoże Ci naprawdę zrozumieć 710 00:34:25,530 --> 00:34:27,850 wskazówki, jak z nich korzystać, i jak nimi manipulować. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Więc memory-- Jestem pewien, mamy widziałem ten schemat. 713 00:34:33,460 --> 00:34:38,540 Więc jest to tylko prosty schemat jak rzeczy mogą być przechowywane w pamięci. 714 00:34:38,540 --> 00:34:43,145 Więc w zasadzie mają one ogromne tablice bloków jeden bajt 715 00:34:43,145 --> 00:34:46,000 jest to, co mamy here-- niewielkie przyrost o jeden za każdym razem. 716 00:34:46,000 --> 00:34:51,810 To jest w hex [niesłyszalne] więc osiem-bitowe bloki. 717 00:34:51,810 --> 00:34:55,510 I każdy blok jest związane z jakimś adresem szesnastkowym. 718 00:34:55,510 --> 00:34:58,750 Więc jeśli kiedykolwiek zobaczyć 0x, że właśnie notating 719 00:34:58,750 --> 00:35:00,670 że jest to adres szesnastkowy. 720 00:35:00,670 --> 00:35:03,970 Można założyć, oznacza to, jakiś adres w pamięci. 721 00:35:03,970 --> 00:35:06,935 Mówimy o adresów pamięci gdy widzisz szesnastkowy. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Mamy ints są zmienne, pływaki są zmienne, które przechowują. 724 00:35:14,630 --> 00:35:16,260 Więc ints sklepu int. 725 00:35:16,260 --> 00:35:17,430 Pływa sklep pływa. 726 00:35:17,430 --> 00:35:20,260 Więc mamy także wskaźniki że adresy sklep pamięci. 727 00:35:20,260 --> 00:35:21,660 To rodzaj mapowania. 728 00:35:21,660 --> 00:35:24,240 Wskaźniki są wyłącznie dla adresów pamięci. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Więc to jest jak twój typ tam. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Twoje urządzenie jest 32-bitowy, co oznacza, że adres pamięci jest cztery bajty. 733 00:35:34,470 --> 00:35:37,830 Tak więc każda wskazówka, że ​​masz również będzie cztery bajty. 734 00:35:37,830 --> 00:35:43,200 Albo jeśli to cztery bajty, Pamięć jest cztery bajty. 735 00:35:43,200 --> 00:35:44,790 Wskaźniki pamięci sklepu. 736 00:35:44,790 --> 00:35:46,430 W związku z tym, że są cztery bajty. 737 00:35:46,430 --> 00:35:48,460 Cool-- tylko chcę zwrócić uwagę, że. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Powinieneś dostać ten komiks teraz. 740 00:35:52,220 --> 00:35:55,040 Nie wiem ilu z was xkcd fanów, ale kocham XKCD. 741 00:35:55,040 --> 00:35:55,780 To wspaniałe. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Dobrze. 744 00:35:57,790 --> 00:36:01,640 Więc tworzenie pointers-- jak powiedziałem, to jest prawie tak jak nic innego. 745 00:36:01,640 --> 00:36:02,930 Masz typ. 746 00:36:02,930 --> 00:36:04,050 Masz imię. 747 00:36:04,050 --> 00:36:04,810 Prawda? 748 00:36:04,810 --> 00:36:10,410 To, co mamy tam. [? Hex?] Gwiazda oznacza, że ​​jest to wskaźnik, 749 00:36:10,410 --> 00:36:12,250 i co chcesz to nazwać. 750 00:36:12,250 --> 00:36:15,770 Więc typ reprezentuje co można zapisać. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 Wszystko w porządku? 753 00:36:17,990 --> 00:36:24,350 W ten sam sposób, że jeśli robimy ints, wiemy, że jesteśmy przechowywania int tam. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Ze wskaźnikiem, to posiada adres pamięci. 756 00:36:30,280 --> 00:36:34,240 Ale co to znaczy jest that-- oto gdzie rysunek ma się przydać. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Tak więc w tym przypadku mamy niektóre value-- powiedzmy cztery. 759 00:36:45,980 --> 00:36:49,306 Cztery jest pod adresem jednego. 760 00:36:49,306 --> 00:36:49,805 OK? 761 00:36:49,805 --> 00:36:51,550 762 00:36:51,550 --> 00:36:56,170 >> Ta pierwsza oznacza tutaj że jest to wskaźnik 2x. 763 00:36:56,170 --> 00:36:56,740 Prawda? 764 00:36:56,740 --> 00:36:57,628 To jakiś wskaźnik x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 x może być coś, cokolwiek. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Cokolwiek x is-- powiedzieć x jest cztery. 769 00:37:05,130 --> 00:37:07,280 To będzie przechowywać Adres tu pamięć. 770 00:37:07,280 --> 00:37:12,260 Więc int, gwiazda, x-- to niektóre inne gniazdo w memory-- 771 00:37:12,260 --> 00:37:13,590 kto wie co to jest. 772 00:37:13,590 --> 00:37:15,430 Ale to będzie przechowywać adres tutaj. 773 00:37:15,430 --> 00:37:27,040 Więc byłoby to like-- w tym przypadku, niezależnie, 774 00:37:27,040 --> 00:37:32,630 przechowywano w 0x1-- co jest przechowywane na adres, że nasz wskaźnik posiada, 775 00:37:32,630 --> 00:37:35,280 musi się dopasować co mamy wyznaczony. 776 00:37:35,280 --> 00:37:40,330 Tak na 0x1, w tym przypadku, jest to x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 To może być tylko int, gdy używamy tego. 779 00:37:49,340 --> 00:37:52,950 >> Podobnie, jeśli mamy inny 1r, niezależnie 780 00:37:52,950 --> 00:37:59,130 Adres jest zapisywany z y ma być char-- samo z z. 781 00:37:59,130 --> 00:38:05,840 W ten sam sposób, gdy ci spróbować zrobić intx wynosi 0,4, 782 00:38:05,840 --> 00:38:09,275 to będzie krzyczeć na siebie i być jak nie, powiedział, że chciał int. 783 00:38:09,275 --> 00:38:10,525 To ma być int. 784 00:38:10,525 --> 00:38:11,900 Przestań próbować zrobić to pływak. 785 00:38:11,900 --> 00:38:14,150 >> Więc wszystko jest, co chcą być. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Niech wszystko będzie się. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Tak jest po prostu wielka rzecz niezależnie od typu wskaźnika 790 00:38:23,450 --> 00:38:26,101 jest to, że to tylko co można tam przechowywać. 791 00:38:26,101 --> 00:38:26,600 OK? 792 00:38:26,600 --> 00:38:27,910 793 00:38:27,910 --> 00:38:31,160 Z praktyką, jak w przypadku w zeszłym tygodniu, wszystko 794 00:38:31,160 --> 00:38:32,817 Wydaje się, naprawdę rodzaju abstrakcyjne. 795 00:38:32,817 --> 00:38:34,150 Mamy zamiar zrobić trochę praktyki. 796 00:38:34,150 --> 00:38:36,760 Powinna ona więcej sensu. 797 00:38:36,760 --> 00:38:44,580 >> Więc katalogowanie i dereferencing-- to bardzo ważne, aby te proste. 798 00:38:44,580 --> 00:38:46,630 I jeszcze, aby odświeżyć od czasu do czasu. 799 00:38:46,630 --> 00:38:48,450 A ja jestem jak czekać, który z nich chcę? 800 00:38:48,450 --> 00:38:56,080 Więc ampersand rzeczywiście dać ty odniesienia lub adres. 801 00:38:56,080 --> 00:39:00,100 Dlatego zwraca adres w Pamięć, która zmienna jest przechowywana. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Więc to będzie rzeczywiście powrócić do Ciebie szesnastkowy, podczas wyłuskania go 804 00:39:07,020 --> 00:39:10,641 faktycznie zamiar dać Dane, które są tam zapisywane. 805 00:39:10,641 --> 00:39:11,140 OK? 806 00:39:11,140 --> 00:39:12,680 807 00:39:12,680 --> 00:39:16,060 Więc mamy zamiar spojrzeć na przykład bardzo szybko, czy rzeczywiście się obok. 808 00:39:16,060 --> 00:39:18,050 809 00:39:18,050 --> 00:39:19,150 >> OK. 810 00:39:19,150 --> 00:39:21,790 Więc musimy myśleć naprawdę dokładnie o tym. 811 00:39:21,790 --> 00:39:23,860 Mamy tu więc pewną liczbę całkowitą x. 812 00:39:23,860 --> 00:39:26,485 Mam zamiar spróbować wyciągnąć ten się najlepiej jak potrafię. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Więc będziemy mieć to gniazda x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 I to przechowywania pięciu. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Jego adres to 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Cool? 821 00:39:43,160 --> 00:39:44,100 Wszystko dobrze. 822 00:39:44,100 --> 00:39:45,470 >> Więc teraz mamy ten wskaźnik. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 To było tutaj. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 I daje nam ampersand adres coś. 827 00:39:57,560 --> 00:40:00,780 Tak więc, w tym przypadku, jest to adres x. 828 00:40:00,780 --> 00:40:01,875 Co to jest adres x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- i ten wskaźnik jest na 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Cool? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Tak więc można myśleć o tym wskaźnik, 04, tylko wskazuje tutaj. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 I nazywa się wskaźniki bo jak się bardziej do tego, 837 00:40:25,740 --> 00:40:28,450 masz zamiar zobaczyć, wskazując na rzeczy. 838 00:40:28,450 --> 00:40:31,470 I jeden, wskazując na inny blok Blok będzie dużo więcej sensu. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Więc tutaj są dwa. 841 00:40:33,890 --> 00:40:38,230 A potem mamy kilka kopia, która jest what-- 0x0C. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 I to będzie dereference naszego wskaźnika. 844 00:40:43,420 --> 00:40:46,790 >> Tak więc to, co mówi jest OK, tutaj jest nasz wskaźnik. 845 00:40:46,790 --> 00:40:53,090 Jest przechowuje wartość 0x04, a co to mówi się przejść do tego adresu 846 00:40:53,090 --> 00:40:54,300 i powiedz mi, co w niej jest. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Więc to skutecznie co to strzałka robi. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Możesz myśleć o tym jak twoja gwiazda. 851 00:41:01,280 --> 00:41:05,410 Więc OK, gdy robimy gwiazdę, oznacza to postępować. 852 00:41:05,410 --> 00:41:06,810 Idź na ten adres. 853 00:41:06,810 --> 00:41:11,430 I to w zasadzie tylko po strzałka do tego ten fragment pamięci. 854 00:41:11,430 --> 00:41:15,380 I daje nam to, co w niej jest, co jest 5. 855 00:41:15,380 --> 00:41:18,840 To dlatego nasza kopia jest równe 5. 856 00:41:18,840 --> 00:41:20,120 Czy to ma sens? 857 00:41:20,120 --> 00:41:22,769 Czy ktoś mnie potrzebuje, aby przejść przez że ponownie lub wolniej? 858 00:41:22,769 --> 00:41:24,560 Chcesz, żebym przez to jeszcze raz? 859 00:41:24,560 --> 00:41:25,060 OK. 860 00:41:25,060 --> 00:41:27,549 861 00:41:27,549 --> 00:41:28,840 Mamy zamiar przerysować go ponownie. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Kiedy zaczynamy, wszyscy zgadzają się, mamy jakiś fragment pamięci, że jest zmienna 864 00:41:37,205 --> 00:41:40,890 x, że równy 5. 865 00:41:40,890 --> 00:41:42,910 Nie kontrolujemy, gdzie to jest w pamięci. 866 00:41:42,910 --> 00:41:45,520 Więc to miejsce jest po prostu arbitralnie przypisane. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Jest dobry? 869 00:41:48,731 --> 00:41:49,230 OK. 870 00:41:49,230 --> 00:41:50,420 871 00:41:50,420 --> 00:41:53,330 Następnie zainicjować wskaźnik do int. 872 00:41:53,330 --> 00:41:56,900 Dlatego nie jest to dozwolone, aby wskazywał x bo mamy int w tutaj. 873 00:41:56,900 --> 00:42:00,840 Mamy kolejny kawałek pamięci, ponieważ wskaźnik ten 874 00:42:00,840 --> 00:42:03,485 jest zmienna, tak jak wszystko inne. 875 00:42:03,485 --> 00:42:06,615 To arbitralnie przypisano wolną przestrzeń w pamięci. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 A co przechowuje to adres x. 878 00:42:10,830 --> 00:42:13,200 Ampersand oznacza adres x. 879 00:42:13,200 --> 00:42:14,575 Więc jaki jest adres x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Publiczność: To zero-- 882 00:42:20,614 --> 00:42:21,280 GŁOŚNIK 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Więc then-- ostatni. 885 00:42:25,940 --> 00:42:30,650 Znów mamy trochę copy-- tylko kolejna zmienna. 886 00:42:30,650 --> 00:42:32,520 Warto więc przypisać jakąś arbitralną miejsce. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 A my dereference naszego wskaźnika. 889 00:42:38,080 --> 00:42:42,490 Gwiazda oznacza iść do Adres zapisany w moim wskaźnika. 890 00:42:42,490 --> 00:42:44,480 Powiedz mi, co tam jest. 891 00:42:44,480 --> 00:42:47,290 Więc adres przechowywany w naszym wskaźnikiem jest 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Więc idziemy na ten adres. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 To wskazuje na ten adres. 896 00:42:54,590 --> 00:42:57,481 Co znajduje się wewnątrz tego bloku pamięci? 897 00:42:57,481 --> 00:42:57,980 To pięć. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Więc to, co przypisujemy naszą kopię. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Każdy dobry? 902 00:43:04,860 --> 00:43:05,360 Fajne. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Again-- zdjęcia. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Więc śledzenia wartości here-- Jestem pozwolimy myślicie o tym. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Możemy wyciągnąć kolejne zdjęcie. 909 00:43:27,750 --> 00:43:31,260 Ale chcę, aby spróbować i rozum przez to na własną rękę przez minutę. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Ponieważ nie da nam adres przykładem, 912 00:44:04,149 --> 00:44:06,940 Jestem po prostu zrobić ampersand x-- które powinny napędzać go do domu. 913 00:44:06,940 --> 00:44:07,950 Ampersand oznacza adres. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Tak więc w pierwszym, wszyscy przejść z pierwszej linii. 916 00:44:12,360 --> 00:44:15,690 Niektóre x zestaw na five-- niektóre losowo gniazdo w pamięci. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Int wskaźnik wynosi gwiazda na adres x, prawda? 919 00:44:23,200 --> 00:44:28,180 Int wskaźnik tworzy gwiazda ten blok, nazywa to wskaźnik, 920 00:44:28,180 --> 00:44:30,650 i przypisuje go na adres x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Jestem okropny w znaków handlowego. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Teraz to, co robimy, to mówimy, OK, dereference naszego wskaźnika. 925 00:44:40,550 --> 00:44:42,760 Więc idziemy OK, co jest w naszej wskaźnika? 926 00:44:42,760 --> 00:44:44,820 To ampersand x. 927 00:44:44,820 --> 00:44:49,400 Idź do ampersand x i ich przekazania. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Więc teraz, ampersand x będzie 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Więc w zasadzie, gdy jesteś wyłuskania, idziesz OK. 932 00:45:05,174 --> 00:45:07,090 Masz zamiar być rysunek zdjęcia takie jak ten. 933 00:45:07,090 --> 00:45:09,423 Masz zamiar być rysunek strzałki ponad gdzie jest. 934 00:45:09,423 --> 00:45:16,030 Więc idź do tego gniazda pamięci i albo daj mi tę wartość z powrotem, lub zmienić go. 935 00:45:16,030 --> 00:45:21,620 W tym przypadku, ze względu na to, że jesteśmy wartość, jesteśmy przypisanie go być 35. 936 00:45:21,620 --> 00:45:24,700 Podczas gdy w ubiegłym jeden, jeśli zauważysz, że 937 00:45:24,700 --> 00:45:27,680 co to było przypisanie tutaj do czegoś innego. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Więc mają ten wspaniały stół. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 To nie jest takie złe. 942 00:45:36,890 --> 00:45:37,970 Chłopaki nad nim pracować. 943 00:45:37,970 --> 00:45:39,640 Mam zamiar wyciągnąć go na pokład. 944 00:45:39,640 --> 00:45:41,306 Mamy zamiar wypełnić go razem, OK? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Tak zdobędą papieru, chwyć partner rozpocząć pracę. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Mam zamiar dostać większy kawałek kredy. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Bo to będzie dużo. 951 00:45:58,150 --> 00:45:59,410 952 00:45:59,410 --> 00:45:59,910 OK. 953 00:45:59,910 --> 00:48:08,567 954 00:48:08,567 --> 00:48:09,150 PROFESOR: OK. 955 00:48:09,150 --> 00:48:11,599 956 00:48:11,599 --> 00:48:12,890 Zacznijmy od pierwszego rzędu. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Zaczniemy tam, potem chłopaki może może pracować przez kilka innych. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 równa razy B C więc to, co jest? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 To nie jest podchwytliwe pytanie, obiecuję. 963 00:48:23,260 --> 00:48:24,440 >> STUDENT: 4 razy 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESOR: 4 razy 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Więc co b? 967 00:48:26,730 --> 00:48:27,921 968 00:48:27,921 --> 00:48:28,420 STUDENT: 4. 969 00:48:28,420 --> 00:48:30,204 970 00:48:30,204 --> 00:48:31,043 >> PROFESOR: I c? 971 00:48:31,043 --> 00:48:31,542 STUDENT: 5. 972 00:48:31,542 --> 00:48:32,083 PROFESOR: 5. 973 00:48:32,083 --> 00:48:35,960 I wtedy jest to po prostu będzie a, należy handlowe i ampersand b, 974 00:48:35,960 --> 00:48:38,575 Znak & c, prawda? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Nie jest źle. 977 00:48:40,596 --> 00:48:42,081 Jest to dość proste. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Więc następnego. 980 00:48:44,300 --> 00:48:48,725 Odpowiada to razy c, w przypadku ktoś nie znał tego. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Czy wszyscy znają z czasów równa? 983 00:48:53,300 --> 00:49:00,105 OK, to jest wszystkie means-- skrótem równa się razy c. 984 00:49:00,105 --> 00:49:04,840 Możesz też zrobić to z podziału, z dodatkiem, z odejmowaniem. 985 00:49:04,840 --> 00:49:12,130 Możesz zrobić sobie równych, lub równa c plus Oznacza równa się c plus, minus równe 986 00:49:12,130 --> 00:49:15,190 c będzie równa się minus c. 987 00:49:15,190 --> 00:49:16,690 To jest po prostu cukier syntaktyczny. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Tak więc, w tym przypadku jest równa a razy c da nam to, co? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Ponownie, nie podchwytliwe pytanie. 992 00:49:28,186 --> 00:49:28,965 >> STUDENT: 100. 993 00:49:28,965 --> 00:49:29,300 >> PROFESOR: 100. 994 00:49:29,300 --> 00:49:30,383 Czy coś jeszcze zmienić? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Nie. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Może w końcu się lepiej w moich znaków handlowego. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, przepraszam, jak nie masz 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Więc jest równa razy c, więc razy c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: Och, używasz dla previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESOR: Tak. 1004 00:49:49,135 --> 00:49:51,450 Więc to są nasze ostatnie wartości. 1005 00:49:51,450 --> 00:49:53,990 Są to, co powinno być stosując jako ruszamy w dół, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Tak, jest tylko b zmiana rzecz, prawda? 1008 00:50:01,520 --> 00:50:02,910 Warto więc wypełnić wszystko. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Co jest b będzie? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Być lub nie być. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Więc co to robi? 1015 00:50:20,240 --> 00:50:21,605 Co to jest gwiazda pa robi? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Kod do lokalizacji rocznie. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> Student: Nie, nie całkiem. 1020 00:50:27,480 --> 00:50:29,470 Więc to jest odniesienie d. 1021 00:50:29,470 --> 00:50:31,580 >> UCZEŃ: Tak b jest ręką wartość pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESOR: Tak, tak, to pa adres, prawda? 1023 00:50:37,340 --> 00:50:42,430 Więc to mówi iść do których jest przechowywane i dać mu tę wartość. 1024 00:50:42,430 --> 00:50:43,884 Więc co to b? 1025 00:50:43,884 --> 00:50:44,425 STUDENT: 100. 1026 00:50:44,425 --> 00:50:46,534 PROFESOR: 100. 1027 00:50:46,534 --> 00:50:47,450 Doskonały. 1028 00:50:47,450 --> 00:50:49,879 OK, więc komputer jest co się zmienia. 1029 00:50:49,879 --> 00:50:51,170 Wszystko inne pozostaje takie samo. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Co to jest pc będzie? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Proste zadanie. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 Szt wynosi rocznie, a to, co jest pa? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: Ampersand. 1037 00:51:07,049 --> 00:51:07,840 PROFESOR: Idealny. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Teraz stajemy się interesujący. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, niech złamać ten jeden w dół. 1042 00:51:15,230 --> 00:51:21,110 Po pierwsze, co to razy B C, bo to łatwa część tego jednego, prawda? 1043 00:51:21,110 --> 00:51:22,360 Czasy B c is-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESOR: Tak, tak, Co to jest jeden sposób, 1046 00:51:28,880 --> 00:51:33,705 Jeśli jest to gwiazda pb, co się zmienia? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> Student: Co znajduje się w the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESOR: Co znajduje się w b? 1050 00:51:38,200 --> 00:51:41,340 Student: Co znajduje się w przestrzeni że pb wskazuje. 1051 00:51:41,340 --> 00:51:43,406 PROFESOR: A pb wskazuje to-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESOR: B. Więc tylko zmiana jest to b, prawo. 1054 00:51:46,740 --> 00:51:50,800 Tak b razy c, 500. 1055 00:51:50,800 --> 00:51:52,367 Więc to, co zmienia się teraz. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Fajne. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Piękny. 1060 00:52:00,840 --> 00:52:01,905 Chłopaki robią wielkie. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Dobrze, łamiąc tym jedną w dół. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C zmienia, prawda? 1065 00:52:09,630 --> 00:52:11,530 Tak więc możemy wypełnić wszystko. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Zobaczmy. 1068 00:52:13,205 --> 00:52:19,125 1069 00:52:19,125 --> 00:52:19,625 OK. 1070 00:52:19,625 --> 00:52:21,420 1071 00:52:21,420 --> 00:52:24,740 Wiemy, że C będzie iloczyn dwóch liczb, prawda? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Co dwa numery, choć? 1074 00:52:27,980 --> 00:52:28,970 >> STUDENT: c? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESOR: Tak jest Prawo do pierwszego. 1076 00:52:31,930 --> 00:52:34,385 Więc my d odwołanie P, prawda? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P a punkty do, więc wiemy, że to ma być 100 razy, co? 1079 00:52:42,870 --> 00:52:46,232 Razy, co robi punkt pc do? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Wskazuje. 1082 00:52:48,740 --> 00:52:55,038 Więc 100 razy 100 jest 10000. 1083 00:52:55,038 --> 00:52:56,170 Czy to ma sens? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Fajne. 1086 00:52:58,200 --> 00:53:00,500 Odcinek do domu, chłopaki, ostatni wiersz. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Co się zmienia tutaj? 1089 00:53:02,160 --> 00:53:05,640 1090 00:53:05,640 --> 00:53:06,935 >> STUDENT: A. 1091 00:53:06,935 --> 00:53:09,435 PROFESOR: A Perfect, tak wszystko może pozostać taka sama. 1092 00:53:09,435 --> 00:53:16,210 1093 00:53:16,210 --> 00:53:16,710 OK. 1094 00:53:16,710 --> 00:53:17,970 A co to jest? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Więc jest to czasy, co? 1097 00:53:26,060 --> 00:53:27,120 Jest to gwiazda pb. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Tak gwiazda pb oznacza tutaj PB, PB punkty do b. 1100 00:53:34,490 --> 00:53:35,370 >> STUDENT: 500. 1101 00:53:35,370 --> 00:53:36,230 >> PROFESOR: 500. 1102 00:53:36,230 --> 00:53:39,236 Mamy więc 500 razy 100. 1103 00:53:39,236 --> 00:53:41,758 To 50.000. 1104 00:53:41,758 --> 00:53:43,216 Uff! 1105 00:53:43,216 --> 00:53:45,646 Spójrz na to. 1106 00:53:45,646 --> 00:53:47,982 >> STUDENT: Dlaczego mamy & c dla last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESOR: Niestety. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESOR: Moje złe. 1110 00:53:51,600 --> 00:53:52,890 Dużo piśmie. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Każdy dobry? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nie jest tak źle, prawda? 1115 00:53:56,660 --> 00:53:58,490 Po prostu ma trochę podczas pracy przez. 1116 00:53:58,490 --> 00:54:01,080 Jeśli rozbicie go, Rozumiesz, co do każdej części 1117 00:54:01,080 --> 00:54:03,197 odnosi to-- jako ze wszystkiego jest to, 1118 00:54:03,197 --> 00:54:05,780 yes-- rozbicie go trochę Problemy i rekombinacji, 1119 00:54:05,780 --> 00:54:07,345 i można zrobić jakieś niesamowite rzeczy. 1120 00:54:07,345 --> 00:54:08,970 Są to odpowiedzi, ale zrobiliśmy to. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Wskaźnik arytmetyka. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ach. 1125 00:54:14,460 --> 00:54:15,510 Moje ręce są kredowy. 1126 00:54:15,510 --> 00:54:17,970 Tak więc dodanie lub odjęcie int dostosowuje wskaźnik 1127 00:54:17,970 --> 00:54:21,890 rozmiarem do rodzaju wskaźnika. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Pamiętasz, jak każdy rodzaj ma inny rozmiar? 1130 00:54:28,390 --> 00:54:34,890 Tak jak podwójne lub long long znaczy osiem i cztery, ale jest int char jest jeden. 1131 00:54:34,890 --> 00:54:38,360 >> Więc co chcesz zrobić is-- jedną rzecz, aby pamiętać, 1132 00:54:38,360 --> 00:54:44,080 to po prostu, ile faktycznie zmienia wartość wskaźnika 1133 00:54:44,080 --> 00:54:46,550 będzie zależeć typ wskaźnika jest. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Wszyscy dobrze się z tym? 1136 00:54:51,820 --> 00:54:52,760 Czy mogę usunąć go? 1137 00:54:52,760 --> 00:54:53,440 Jesteśmy dobrzy? 1138 00:54:53,440 --> 00:54:53,940 Niesamowite. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Więc jeśli mamy jakiś wskaźnik that-- to ma być: jestem 1141 00:55:07,501 --> 00:55:08,834 zamiar zrobić to int wskaźnik. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Przechowuje to. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Jeśli było powiedzieć, wskaźnik plus jeden, co to będzie zrobić 1146 00:55:20,170 --> 00:55:23,420 jest to będzie zaktualizować to przez rozmiar int 1147 00:55:23,420 --> 00:55:25,950 bo to typ wskaźnika jest. 1148 00:55:25,950 --> 00:55:28,260 >> Z C, wszystko jest bardzo surowe i regulowany. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Int wskaźnik będzie aktualizować przez Ilość miejsca int zajmie. 1151 00:55:35,260 --> 00:55:36,260 Int jest cztery bajty. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Więc co by to przekształcić? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Jesteś po prostu dodanie czterech na to. 1156 00:55:44,390 --> 00:55:50,040 Teraz wskaźnik będzie być: OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Więc jeśli to był znak i zrobiliśmy wskaźnik plus jeden, co by to było teraz? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 Jeśli started-- udając my started-- teraz to 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Załóżmy teraz, że to był char wskaźnik, i dodaliśmy jeden. 1163 00:56:10,850 --> 00:56:11,850 Co trzeba zmienić? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Ile bajtów jest znak? 1166 00:56:16,030 --> 00:56:16,680 >> Publiczność: Jeden. 1167 00:56:16,680 --> 00:56:17,304 >> GŁOŚNIK 1: Jeden. 1168 00:56:17,304 --> 00:56:18,309 Publiczność: Tak 0x09. 1169 00:56:18,309 --> 00:56:19,600 GŁOŚNIK 1: Więc to będzie dziewięć. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Więc po prostu coś pamiętać. 1172 00:56:23,820 --> 00:56:28,340 Tuż po dodaniu jednego, to nie jest dodanie jednego, chyba, że ​​to znak. 1173 00:56:28,340 --> 00:56:34,190 To dodanie ile bajtów typu, że jest, 1174 00:56:34,190 --> 00:56:36,960 dlatego mają równanie to tutaj. 1175 00:56:36,960 --> 00:56:40,190 Więc jest to int razy większy od rodzaju wskaźnika. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Mamy więc tutaj przykład. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y został przypisany do tej wartości, 0x4, kiedy zrobiliśmy y oraz równa się jeden. 1180 00:56:54,430 --> 00:56:56,830 Co znajduje się w nim, co jest w X, nie zmienia się. 1181 00:56:56,830 --> 00:56:58,610 Co oznacza zmiana jest co w r. 1182 00:56:58,610 --> 00:57:04,980 Adres zapisany w r aktualizowane przez cztery ponieważ istnieją cztery bajty w int 1183 00:57:04,980 --> 00:57:06,097 i jest to int wskaźnik. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Dobrze. 1186 00:57:07,790 --> 00:57:09,123 Więc teraz mamy kolejny ćwiczenia. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Więc pytanie, co będzie drukować. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Jakieś pomysły? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Grupa docelowa: liczba znaki w szczęśliwym kotem? 1193 00:57:43,699 --> 00:57:44,490 GŁOŚNIK 1: Dokładnie. 1194 00:57:44,490 --> 00:57:45,531 Tak jak z łańcucha. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Czy wszyscy się tego? 1197 00:57:48,260 --> 00:57:49,509 Czy chcemy, aby przejść przez to? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Tak, OK. 1200 00:57:52,010 --> 00:57:57,385 Więc co mamy here-- I tak o wiele więcej. 1201 00:57:57,385 --> 00:57:59,340 Nie mam do [Niesłyszalne] śmiesznie. 1202 00:57:59,340 --> 00:58:01,690 >> Tak więc mamy tu szczęśliwy ciąg kota. 1203 00:58:01,690 --> 00:58:02,950 Piękny. 1204 00:58:02,950 --> 00:58:05,080 Mamy pewne, że licznik mamy śledzenie. 1205 00:58:05,080 --> 00:58:11,430 Więc mamy trochę wskaźnik char * że po prostu jest równy STR. 1206 00:58:11,430 --> 00:58:14,320 Co to robi jest to przypisując jakiś wskaźnik 1207 00:58:14,320 --> 00:58:16,380 na początku swojego łańcucha. 1208 00:58:16,380 --> 00:58:19,840 Bo jestem pewien, jak to wspomniano w wykładzie 1209 00:58:19,840 --> 00:58:22,290 Daliśmy wam tego typ danych zwany ciąg. 1210 00:58:22,290 --> 00:58:29,070 >> Ale tak naprawdę to tylko łańcuchy Tablica of-- jak char *. 1211 00:58:29,070 --> 00:58:32,330 Jest to wskaźnik na kilka znaków że są ciągłe w pamięci. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Więc to po prostu ustawia go równa dowolny ciąg jest 1214 00:58:36,280 --> 00:58:38,980 zidentyfikowane przez gdzie jego pierwszy znak jest. 1215 00:58:38,980 --> 00:58:42,710 Więc to jest jakiś punkt po prostu ustawienie równa początku łańcucha. 1216 00:58:42,710 --> 00:58:44,130 Wszyscy tam dobrze? 1217 00:58:44,130 --> 00:58:44,960 Fajne. 1218 00:58:44,960 --> 00:58:49,840 >> Więc to jest nasz wyłuskania wskaźnika. 1219 00:58:49,840 --> 00:58:53,760 Więc to rzeczywiście będzie nam tu jakąś wartość, 1220 00:58:53,760 --> 00:58:55,610 w naszym ciąg, że mówisz. 1221 00:58:55,610 --> 00:58:58,342 A my mówimy, o ile to nie jest wartość null terminator. 1222 00:58:58,342 --> 00:59:00,550 Więc nie poddawać się, aż dojdziesz na końcu łańcucha. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Zaktualizuj wskaźnik o jeden. 1225 00:59:04,190 --> 00:59:09,250 Tak r, to w rzeczywistości jedna aktualizacji za każdym razem, bo to jest znak, 1226 00:59:09,250 --> 00:59:09,820 char *. 1227 00:59:09,820 --> 00:59:10,930 1228 00:59:10,930 --> 00:59:12,340 >> Więc to będzie przejść. 1229 00:59:12,340 --> 00:59:13,290 To będzie zaktualizować. 1230 00:59:13,290 --> 00:59:16,705 Tak więc po raz pierwszy to działa, to będzie tutaj, w godz. 1231 00:59:16,705 --> 00:59:17,590 To będzie zaktualizować. 1232 00:59:17,590 --> 00:59:18,185 >> To będzie. 1233 00:59:18,185 --> 00:59:21,310 To będzie p, y, i tak dalej, i tak dalej. 1234 00:59:21,310 --> 00:59:22,300 Będziemy aktualizować licznik. 1235 00:59:22,300 --> 00:59:26,160 Gdy dojdzie do końca to, tylko drukuje, jak daleko to zdobyć. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Tak. 1238 00:59:28,050 --> 00:59:31,475 >> Publiczność: Tak to się liczy Przestrzeń jako jeden, prawda? 1239 00:59:31,475 --> 00:59:31,974 OK. 1240 00:59:31,974 --> 00:59:34,294 1241 00:59:34,294 --> 00:59:35,222 >> GŁOŚNIK 1: Pomyśl tak. 1242 00:59:35,222 --> 00:59:36,830 Czy to question-- 1243 00:59:36,830 --> 00:59:37,746 >> PUBLICZNOŚCI: [niesłyszalne]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> GŁOŚNIK 1: Nie martw się. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Ten to zrobić. 1248 00:59:42,736 --> 00:59:47,710 W porządku, więc jedna rzecz, zrozumieć, że z tablicy, 1249 00:59:47,710 --> 00:59:51,736 można również traktować go jako wskaźnik, bo tablice są po prostu 1250 00:59:51,736 --> 00:59:52,860 ciągłe miejsca pamięci. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Więc można traktować w ten sam sposób. 1253 00:59:56,380 --> 00:59:59,000 Można nimi manipulować ze wskaźnikami, też. 1254 00:59:59,000 --> 01:00:04,770 Więc zamiast robić, w tym przypadku, analogicznie rzecz 1255 01:00:04,770 --> 01:00:07,490 będzie tablicą 0 jest równa 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Ale w ten sam sposób, Ciąg jest określony 1258 01:00:15,210 --> 01:00:18,740 czasu rozpoczęcia gdzie jego pierwszy znak to, 1259 01:00:18,740 --> 01:00:22,270 Tablica ustala gdzie jego pierwszym elementem jest. 1260 01:00:22,270 --> 01:00:25,120 Ponieważ wiemy, że jesteśmy gwarantuje, że te 1261 01:00:25,120 --> 01:00:27,985 będą ciągłe bloki pamięci. 1262 01:00:27,985 --> 01:00:29,360 To, co pozwala nam to zrobić. 1263 01:00:29,360 --> 01:00:31,193 Wiemy, że są ciągłe bloki pamięci. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Więc w tym przypadku, przez dereferencji tylko tablica, która mówi nam, 1266 01:00:36,500 --> 01:00:40,800 OK, przejdź do początku macierzy, która jest tutaj. 1267 01:00:40,800 --> 01:00:42,640 Tak można określić to równa jeden. 1268 01:00:42,640 --> 01:00:48,610 I w tym przypadku, bez względu na tablicy Typ jest, gdy go zaktualizować po drugim, 1269 01:00:48,610 --> 01:00:50,830 to tak jak aktualizację do następnego indeksu. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Możesz to zrobić, bo Ciebie wiedzieć, co jest w twojej tablicy. 1272 01:00:56,360 --> 01:00:59,770 Więc wie, ile aktualizować wskaźnik przez, 1273 01:00:59,770 --> 01:01:02,925 co do adresu, aby go tak aktualizować że jesteś w następnej szczelinie. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Więc jest to tylko inny sposób pisania Tablica 0 jest równa 1, 1276 01:01:09,400 --> 01:01:15,114 Tablica 1 równa się 2, tablicę Uchwyt 2 równa się trzy. 1277 01:01:15,114 --> 01:01:16,780 To jest po prostu inny sposób myślenia o nim. 1278 01:01:16,780 --> 01:01:19,600 Ponieważ są one ciągłe bloki w pamięci, 1279 01:01:19,600 --> 01:01:21,830 można zwrócić się do nich albo przez tablicy notation-- 1280 01:01:21,830 --> 01:01:24,390 który osobiście ale może znajdziesz easier-- 1281 01:01:24,390 --> 01:01:27,347 trzeba go manipulować ściśle adresów pamięci. 1282 01:01:27,347 --> 01:01:28,930 I to jest sposób, by to zrobić. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Niby więcej jak fajne rzeczy można zrobić 1285 01:01:32,630 --> 01:01:35,213 w porównaniu Może nie jesteś czegoś rzeczywiście zamierza wdrożyć. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Używam go w 61. 1288 01:01:38,630 --> 01:01:41,710 Wy chyba nie trzeba martwić się o nim zbyt wiele. 1289 01:01:41,710 --> 01:01:43,693 Ale jeśli jesteś zainteresowany, wziąć 61 w przyszłym roku. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Jesteśmy w domu facetów rozciągania. 1292 01:01:46,560 --> 01:01:47,510 Wiem, że to długo. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dynamiczne pamięci Allocation-- więc wiemy, że jeden 1295 01:01:58,880 --> 01:02:01,790 rzeczy, gdy rozmawialiśmy w czasie nasz pierwszy odcinek razem, 1296 01:02:01,790 --> 01:02:04,560 patrzyliśmy na swap Funkcja, gdzie to było 1297 01:02:04,560 --> 01:02:08,010 poza zakres naszej głównej funkcji. 1298 01:02:08,010 --> 01:02:14,370 I mijaliśmy tych wartości które były skutecznie kopiuje. 1299 01:02:14,370 --> 01:02:20,570 >> I po raz zakończeniu wymiany wykonania, to tylko w lewo stos. 1300 01:02:20,570 --> 01:02:22,830 Pamiętaj, mamy stos ramy dla wymiany. 1301 01:02:22,830 --> 01:02:26,070 Pozostawia i tych Wartości zostawić z nim. 1302 01:02:26,070 --> 01:02:27,050 I już ich nie było. 1303 01:02:27,050 --> 01:02:28,615 Nie mogliśmy nic zrobić z nimi i było nam smutno 1304 01:02:28,615 --> 01:02:29,989 ponieważ nie możemy zamienić nasze wartości. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Ale z C, jak już wspomniałem, ci dużo władzy nad pamięcią. 1307 01:02:36,560 --> 01:02:43,310 Więc co można zrobić, to można przeznaczyć na stercie rzeczy tutaj 1308 01:02:43,310 --> 01:02:46,830 że pozostanie tam do powiedz im inaczej. 1309 01:02:46,830 --> 01:02:48,280 >> Są jak dobre dzieci. 1310 01:02:48,280 --> 01:02:49,150 Przebywają tam. 1311 01:02:49,150 --> 01:02:50,270 Nie pozostawiają. 1312 01:02:50,270 --> 01:02:52,750 Będą tam do momentu, gdy jak, OK, możesz odejść. 1313 01:02:52,750 --> 01:02:55,920 >> Natomiast rzeczy na stosie, who-- są jak niegrzeczne dzieci. 1314 01:02:55,920 --> 01:02:59,160 Oni po prostu uciec, kiedy chcesz tam być, a następnie ich nie ma. 1315 01:02:59,160 --> 01:03:00,160 Nie można ich odzyskać. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Więc kupa is-- będziemy mówić o malloc i wolne, które 1318 01:03:07,187 --> 01:03:08,895 Jestem pewien, że chłopaki słyszałem o w wykładzie. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 I to w zasadzie sposób mieć bardzo trwałe dane. 1321 01:03:14,210 --> 01:03:18,920 Dzięki czemu można zachować dane wokół tak długo, jak chcesz. 1322 01:03:18,920 --> 01:03:19,546 Mhm. 1323 01:03:19,546 --> 01:03:21,475 >> Publiczność: Czy możesz określić sterty i stosu? 1324 01:03:21,475 --> 01:03:24,030 Czy są jak miejsca, aby umieścić rzeczy? 1325 01:03:24,030 --> 01:03:26,630 >> GŁOŚNIK 1: Więc oni są zasadzie just-- są 1326 01:03:26,630 --> 01:03:29,530 Sposób, w jaki odnoszą się tylko do pamięci. 1327 01:03:29,530 --> 01:03:37,300 Więc kupa miejsca, gdzie jest po prostu Pamięć jest przydzielana dynamicznie, 1328 01:03:37,300 --> 01:03:40,960 podczas gdy stos odnosi więcej ramek stosu 1329 01:03:40,960 --> 01:03:45,950 że są bardziej centralnym funkcje, które rzeczywiście działają. 1330 01:03:45,950 --> 01:03:47,200 Tak naprawdę nie mają kontroli. 1331 01:03:47,200 --> 01:03:50,690 >> Duża różnica, masz kontrolę na stercie, jeśli chcesz. 1332 01:03:50,690 --> 01:03:52,710 Masz mniejszą kontrolę nad stosu. 1333 01:03:52,710 --> 01:03:55,030 Stos zależy Funkcje, które są uruchomione, 1334 01:03:55,030 --> 01:03:58,320 i kolejność, w jakiej są one uruchomić i jak są zwracane rzeczy. 1335 01:03:58,320 --> 01:04:01,290 Natomiast z hałdy, jak zobaczymy, można powiedzieć, 1336 01:04:01,290 --> 01:04:06,639 OK, chcę, aby ta wartość wokół, aż ci powiem inaczej. 1337 01:04:06,639 --> 01:04:08,180 Nie masz uprawnień, aby się go pozbyć. 1338 01:04:08,180 --> 01:04:09,300 Nie wolno go zastąpić. 1339 01:04:09,300 --> 01:04:11,675 Masz zamiar utrzymać ją wokół tak długo, jak ci powiem. 1340 01:04:11,675 --> 01:04:15,780 Masz być szefem w kupie, natomiast stack-- Może jeśli 1341 01:04:15,780 --> 01:04:18,080 jak finagle drogę możesz być szefem. 1342 01:04:18,080 --> 01:04:19,340 Ale nie do końca. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 I to jest tak naprawdę pamięci. 1345 01:04:22,070 --> 01:04:24,260 To jest po prostu różne sposoby odnoszenia się do pamięci. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Fajne. 1348 01:04:26,400 --> 01:04:28,630 Więc z tym, jak kontrolować pamięć. 1349 01:04:28,630 --> 01:04:32,070 To, co z malloc masz zamiar dostać się do wykorzystania. 1350 01:04:32,070 --> 01:04:37,100 Więc jest to tylko krótki alokacji pamięci. 1351 01:04:37,100 --> 01:04:38,459 To wszystko to jest. 1352 01:04:38,459 --> 01:04:41,250 Istnieje kilka innych fajnych Funkcje, które mają Alloc na końcu, 1353 01:04:41,250 --> 01:04:42,750 i stoją do różnych rzeczy. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Więc kiedy trzeba, że ​​potrzebuje pamięci aby przetrwać bieżącą funkcję tak 1356 01:04:49,050 --> 01:04:51,010 że gdy prąd Funkcja ucieka, 1357 01:04:51,010 --> 01:04:55,774 nadal masz dane, które dostałem od niego chcesz użyć malloc. 1358 01:04:55,774 --> 01:04:57,190 Że będzie go zainicjować na stercie. 1359 01:04:57,190 --> 01:05:00,140 I tak jak powiedziałem i zachować mówiąc, będziesz go trzymać tam 1360 01:05:00,140 --> 01:05:03,050 dopóki nie powiedzieć to inaczej, co jest ważne tutaj. 1361 01:05:03,050 --> 01:05:08,450 >> Więc jedna rzecz zauważyć, i to zazwyczaj bardzo ważne, 1362 01:05:08,450 --> 01:05:13,620 jest to, że sizeof jest bardzo przydatna w użyciu 1363 01:05:13,620 --> 01:05:16,440 gdyż w zależności od rodzaju maszyny używasz, 1364 01:05:16,440 --> 01:05:22,470 może mieć różne ilości z pamięci, że to trwa. 1365 01:05:22,470 --> 01:05:26,870 Więc zawsze użyć rozmiaru tak że nie jesteś zależny od maszyny, 1366 01:05:26,870 --> 01:05:30,300 tak, że kod będzie uruchomić w każdym urządzeniu. 1367 01:05:30,300 --> 01:05:32,360 >> A to tylko część pisać dobry kod. 1368 01:05:32,360 --> 01:05:34,610 Jeśli to działa na jednym komputerze, jednak żaden z innymi 1369 01:05:34,610 --> 01:05:36,440 jak przydatny był program? 1370 01:05:36,440 --> 01:05:38,420 Więc zawsze chcesz upewnij się, i użyć sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Publiczność: Tak jest, że jak rozmiar 10 cali [niesłyszalne]? 1372 01:05:41,306 --> 01:05:43,698 >> GŁOŚNIK 1: Jest to wielkość 10 int. 1373 01:05:43,698 --> 01:05:44,197 tak. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Wielkość wskazówki tak wróci ile ma jeden int podjęcia. 1376 01:05:48,830 --> 01:05:51,530 Lub wielkość char, jak wiele ma jeden char zabiorą. 1377 01:05:51,530 --> 01:05:54,150 A potem, jak wiele bloków tego chcesz? 1378 01:05:54,150 --> 01:05:57,590 >> Tak więc w tym przypadku chcemy coś że możemy przechowywać 10 ints do. 1379 01:05:57,590 --> 01:06:00,240 I to będzie działać niezależnie maszyny, która jest cool. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Tak jak wiele bajtów będzie że faktycznie daje? 1382 01:06:04,846 --> 01:06:06,190 Szybkie matematyki. 1383 01:06:06,190 --> 01:06:06,787 >> Grupa docelowa: 40. 1384 01:06:06,787 --> 01:06:07,370 GŁOŚNIK 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Dokładnie. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Tak więc kolejna wielka rzecz. 1388 01:06:12,030 --> 01:06:14,840 Wskaźnik lub malloc może zwróci null. 1389 01:06:14,840 --> 01:06:17,910 >> Więc jeszcze raz, zawsze sprawdź sprawdzić, czy wrócił pusty 1390 01:06:17,910 --> 01:06:19,620 przed próbą i nic z nim zrobić. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Jeśli spróbujesz i nieprawidłowego Teraz ten wskaźnik, 1393 01:06:27,350 --> 01:06:29,720 to po prostu będzie się wysypać bo poszedł i spróbował 1394 01:06:29,720 --> 01:06:31,730 dotykać wartość null, gdy nie powinien mieć. 1395 01:06:31,730 --> 01:06:34,000 Więc zawsze sprawdzić, null. 1396 01:06:34,000 --> 01:06:36,075 Ponownie, wszystko może zrobić. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> Może to zwróci null. 1399 01:06:39,720 --> 01:06:42,740 To będzie powrót null, jeśli jesteś albo z miejsca, albo z jakiegokolwiek powodu 1400 01:06:42,740 --> 01:06:44,350 pobiegł do jakiegoś błędu pamięci. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Czasami po prostu zwraca null. 1403 01:06:47,510 --> 01:06:48,990 Więc po prostu trzeba sprawdzić to. 1404 01:06:48,990 --> 01:06:51,050 To wszystko, co mówi ten slajd. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 A potem to, co mamy tutaj jest wezwaniem do uwolnienia. 1407 01:06:55,240 --> 01:07:00,550 Tak więc w ten sam sposób, że jeśli otworzyć plik należy zamknąć plik, 1408 01:07:00,550 --> 01:07:04,340 Jeśli pamięci malloc, ty trzeba zwolnić tej pamięci. 1409 01:07:04,340 --> 01:07:06,530 I chłopaki dostaną zrobić naprawdę fajne rzeczy. 1410 01:07:06,530 --> 01:07:09,624 >> I nie można uruchomić programu, aby zobacz jeśli kiedykolwiek wyciek pamięci. 1411 01:07:09,624 --> 01:07:11,040 Ale ty nie chcesz do wycieku pamięci. 1412 01:07:11,040 --> 01:07:11,820 Jest naprawdę źle. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Zaledwie bałagan rzeczy. 1415 01:07:15,020 --> 01:07:20,939 >> To źle zrobić tak jak programowanie mądry efektywności projektowania. 1416 01:07:20,939 --> 01:07:22,980 Ale to też tylko rodzaj z szkodliwe dla komputera. 1417 01:07:22,980 --> 01:07:26,780 Więc po prostu darmowe rzeczy kiedy je malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Wy zobaczyć symetrie tutaj. 1420 01:07:30,210 --> 01:07:31,180 Super proste. 1421 01:07:31,180 --> 01:07:33,010 Tylko wolne, a następnie bez względu na wskaźnik, 1422 01:07:33,010 --> 01:07:34,843 bez względu na nazwę wskaźnik jest, i to 1423 01:07:34,843 --> 01:07:36,710 zatroszczy się o uwolnienie go dla Ciebie. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Fajne. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Następnie mamy to. 1428 01:07:42,530 --> 01:07:44,770 Więc jesteśmy po prostu będzie przejść przez ten program. 1429 01:07:44,770 --> 01:07:46,560 A potem chłopaki są wykonywane. 1430 01:07:46,560 --> 01:07:50,240 >> Więc [niesłyszalne] tylko główne. 1431 01:07:50,240 --> 01:07:51,690 Więc mamy trochę int * wskaźnik. 1432 01:07:51,690 --> 01:07:53,648 Mamy więc wskaźnik że będzie trzymać ints. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 A ile ints to będzie trzymać? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Tylko jeden. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Rozmiar wew. 1439 01:08:01,100 --> 01:08:03,900 >> Mamy sprawdzić, czy wskaźnik ma wartość null, ponieważ to 1440 01:08:03,900 --> 01:08:06,130 to chcemy powiedzieć nie rób nic. 1441 01:08:06,130 --> 01:08:07,065 To źle. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Więc wydrukować jakiś błąd z pamięci, najczęściej powrót 1, 1444 01:08:12,130 --> 01:08:14,260 jak faceci są przyzwyczajeni. 1445 01:08:14,260 --> 01:08:17,390 >> A potem mamy tutaj, że dereference naszego wskaźnika. 1446 01:08:17,390 --> 01:08:22,840 To oznacza, że ​​będziemy przechowywać coś w miejscu nam dany. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointer lub malloc, zwraca adres, gdzie to ustawić to na bok 1449 01:08:30,830 --> 01:08:31,750 Pamięć dla Ciebie. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Więc to w zasadzie dając like-- jeśli Ciebie 1452 01:08:34,800 --> 01:08:38,149 myśleć o kilka domy w sąsiedztwie 1453 01:08:38,149 --> 01:08:40,640 które chcesz umieścić meble w, malloc 1454 01:08:40,640 --> 01:08:43,850 jest jak OK, masz iść do domu trzy. 1455 01:08:43,850 --> 01:08:45,800 I to daje ci adres domu trzy. 1456 01:08:45,800 --> 01:08:48,775 >> Tak to teraz, to wskaźnik przechowuje adres, 1457 01:08:48,775 --> 01:08:50,149 przechowuje adres domu. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * środki PTR, OK, jestem w moim domu. 1460 01:08:54,640 --> 01:08:55,326 Fajne. 1461 01:08:55,326 --> 01:08:56,580 Muszę zdobyć całkowitą. 1462 01:08:56,580 --> 01:08:59,229 >> Więc prosisz kogoś dać meble teraz. 1463 01:08:59,229 --> 01:09:00,430 Więc trochę int. 1464 01:09:00,430 --> 01:09:05,100 I umieszcza go w swoim wskaźnikiem gdzie to wskazuje. 1465 01:09:05,100 --> 01:09:08,670 >> A potem to tylko odbitki się, wprowadzony gdziekolwiek. 1466 01:09:08,670 --> 01:09:11,060 I znowu odniesienia. 1467 01:09:11,060 --> 01:09:15,649 Tak to jest, jak to poszedł do zajęcia i zobaczył, co tam było. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Cool? 1470 01:09:17,630 --> 01:09:20,174 >> I wtedy oczywiście możemy uwolnić nasze wskaźnik. 1471 01:09:20,174 --> 01:09:21,590 Nie zapomnij, aby uwolnić kursor. 1472 01:09:21,590 --> 01:09:22,933 Nie zapomnij sprawdzić, null. 1473 01:09:22,933 --> 01:09:24,349 Nie zapomnij, aby uwolnić kursor. 1474 01:09:24,349 --> 01:09:27,270 Masz dwie rzeczy, które pamiętam z to, albo że należy pamiętać. 1475 01:09:27,270 --> 01:09:27,770 Tak. 1476 01:09:27,770 --> 01:09:31,590 PUBLICZNOŚCI: [niesłyszalne] rzeczy tak, char * s. 1477 01:09:31,590 --> 01:09:33,760 Jak to nigdy nie uwolnimy te? 1478 01:09:33,760 --> 01:09:34,529 >> GŁOŚNIK 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Publiczność: Czy tacy jak struny? 1480 01:09:36,450 --> 01:09:39,160 Mówiłeś, że łańcuchy są jak char * s, prawda? 1481 01:09:39,160 --> 01:09:41,200 Więc dlaczego nie możemy uwolnić sznurki? 1482 01:09:41,200 --> 01:09:43,204 >> GŁOŚNIK 1: tylko Ty się wolne jeśli mallocing. 1483 01:09:43,204 --> 01:09:44,620 Publiczność: Och, jeśli mallocing. 1484 01:09:44,620 --> 01:09:47,399 1 głośnik: Tak malloc i wolne są dwie rzeczy, 1485 01:09:47,399 --> 01:09:49,000 że należy zawsze mieć ze sobą. 1486 01:09:49,000 --> 01:09:51,630 f otwarty, f blisko dwie rzeczy należy mieć ze sobą. 1487 01:09:51,630 --> 01:09:54,471 W obu tych przypadkach należy sprawdzić, null. 1488 01:09:54,471 --> 01:09:54,971 Tak. 1489 01:09:54,971 --> 01:09:57,130 >> Publiczność: Tak jest po prostu wolny pozwalając coś innego 1490 01:09:57,130 --> 01:09:59,690 być przechowywane tam po program ten stosowany jest? 1491 01:09:59,690 --> 01:10:01,946 >> GŁOŚNIK 1: To jest po prostu mówiąc, OK, skończę z tym. 1492 01:10:01,946 --> 01:10:03,320 Nie musisz trzymać go wokół. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 W przeciwnym razie komputer będzie Podobnie jak spróbować i trzymać go tam. 1495 01:10:08,190 --> 01:10:10,910 A potem can't-- działa do problemów z pamięcią. 1496 01:10:10,910 --> 01:10:13,660 Zawsze chcesz zwolnić, bo mówi komputer, OK, jestem 1497 01:10:13,660 --> 01:10:15,190 zrobić z tego miejsca pamięci. 1498 01:10:15,190 --> 01:10:17,190 Możesz mieć go z powrotem dla mnie do wykorzystania później. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Cool? 1501 01:10:20,500 --> 01:10:21,320 Tak. 1502 01:10:21,320 --> 01:10:26,950 >> Publiczność: Tak użyliśmy tylko% d bo dwukrotnie wraca, 1503 01:10:26,950 --> 01:10:28,330 lub dlaczego is-- [niesłyszalne]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Publiczność: Czy można używać% i? 1506 01:10:31,620 --> 01:10:32,760 >> GŁOŚNIK 1: Możesz użyć% I. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Jakieś ostatnie pytania minut? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Śmiało. 1511 01:10:38,985 --> 01:10:40,610 Publiczność: Mam tylko szybkie pytanie. 1512 01:10:40,610 --> 01:10:50,200 Więc zmienna ptr, that's-- jak, z int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 że po prostu mówi, że to wskazując miejsce w memory-- 1514 01:10:54,142 --> 01:10:55,600 GŁOŚNIK 1: Chcesz [niesłyszalne]? 1515 01:10:55,600 --> 01:10:58,050 Publiczność: czyli regulują to Wielkość of-- nie, to OK. 1516 01:10:58,050 --> 01:11:01,292 Ale to tylko wskazuje na miejsce w pamięci, że jest tak jak czterech bajtów. 1517 01:11:01,292 --> 01:11:02,000 GŁOŚNIK 1: Prawo. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Więc malloc rozmiar z int mówi, OK, mam zamiar iść uciekł, 1520 01:11:07,070 --> 01:11:08,780 znaleźć czterech bajtów pamięci dla Ciebie. 1521 01:11:08,780 --> 01:11:10,700 Gdy okaże się, że cztery bajtów pamięci, to 1522 01:11:10,700 --> 01:11:14,030 daje kopię adres gdzie zaczyna, 1523 01:11:14,030 --> 01:11:16,160 i to, co zapisane w wskaźnika lub ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Dobra. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Chłopaki wyglądają mniej zdezorientowany niż większość ludzie, kiedy mówię o wskazówki, 1528 01:11:21,700 --> 01:11:23,670 więc czuję się teraz całkiem dobrze. 1529 01:11:23,670 --> 01:11:24,520 >> Dobrze. 1530 01:11:24,520 --> 01:11:27,960 Jak zawsze, chłopaki powinni mieć wszyscy zdobyć Twoje wyniki pset2 teraz. 1531 01:11:27,960 --> 01:11:32,769 Wiem, że był jakiś słaby rzeczy, gdzie jest napisane, nie obowiązuje formuła 1532 01:11:32,769 --> 01:11:33,310 czy coś. 1533 01:11:33,310 --> 01:11:36,166 Jeśli otrzymujesz, że wszystkie Twoje oceny są ważne po mojej stronie. 1534 01:11:36,166 --> 01:11:38,040 Więc mogę wysłać screeny swoich klasach. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Daj mi znać, jak również, jeśli jesteś brakuje jakichkolwiek ocen, czy coś 1537 01:11:41,760 --> 01:11:43,060 nie wydaje się mieć sens. 1538 01:11:43,060 --> 01:11:43,720 Chodź do mnie. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Byłem bardzo dumny z Ciebie faceci już tak trzymać. 1541 01:11:48,830 --> 01:11:50,640 I dobrze resztę tygodnia. 1542 01:11:50,640 --> 01:11:53,440 Jestem pewien, że widzę niektóre z was w godzinach urzędowania. 1543 01:11:53,440 --> 01:11:55,414