1 00:00:00,000 --> 00:00:02,670 >> [Tema Muzica] 2 00:00:02,670 --> 00:00:11,834 3 00:00:11,834 --> 00:00:13,365 >> SPEAKER 1: Bună, toată lumea. 4 00:00:13,365 --> 00:00:14,365 Bine ați revenit la pct. 5 00:00:14,365 --> 00:00:15,700 6 00:00:15,700 --> 00:00:18,700 Zi frumoasă out-- motiv pentru care, eu sunt Sigur, există doar patru dintre voi aici 7 00:00:18,700 --> 00:00:21,180 și nu pachet noastră obișnuită. 8 00:00:21,180 --> 00:00:22,670 Am fost bolnav în acest weekend. 9 00:00:22,670 --> 00:00:24,294 Deci, eu nu am accelerare pentru voi. 10 00:00:24,294 --> 00:00:26,400 Și am putea începe tuse teribil de-a lungul asta. 11 00:00:26,400 --> 00:00:27,790 Deci, doar să poarte cu mine. 12 00:00:27,790 --> 00:00:30,624 Am de gând să încerc într-adevăr și trece prin aceasta în primul rând, 13 00:00:30,624 --> 00:00:32,290 deși, înainte de a avea un atac de tuse. 14 00:00:32,290 --> 00:00:33,410 15 00:00:33,410 --> 00:00:37,390 Ci doar să fie ușor pe mine o mic bit-- asta e tot ce cer. 16 00:00:37,390 --> 00:00:39,370 17 00:00:39,370 --> 00:00:44,289 >> Deci, agenda noastră pentru today-- doar o reminder-- testul este săptămâna viitoare. 18 00:00:44,289 --> 00:00:46,830 Ți-am spus acest lucru săptămâna trecută așa că nu v-ar prinde cu garda jos. 19 00:00:46,830 --> 00:00:47,954 Așa că eu sunt amintindu-vă din nou. 20 00:00:47,954 --> 00:00:49,180 De săptămâna viitoare testul dumneavoastră. 21 00:00:49,180 --> 00:00:52,730 În acest scop, săptămâna viitoare secțiune va fi mult mai 22 00:00:52,730 --> 00:00:55,180 de-- Voi încerca și să lucreze într-un comentariu. 23 00:00:55,180 --> 00:00:58,130 Deci, dacă voi putea ajută-mă de mine trimiterea 24 00:00:58,130 --> 00:01:00,990 lucruri pe care esti confortabil cu, că ești îngrijorat, 25 00:01:00,990 --> 00:01:03,530 subiecte pe care doriți pentru mă pentru a acoperi, ar fi grozav. 26 00:01:03,530 --> 00:01:05,740 Așa că am putea încerca și să le lucreze în secțiunea noastră de săptămâna viitoare 27 00:01:05,740 --> 00:01:11,540 sau va trimite un material în plus prep care ar putea să nu ajunge în altă parte. 28 00:01:11,540 --> 00:01:12,150 >> Da! 29 00:01:12,150 --> 00:01:13,520 Mai multe persoane vin! 30 00:01:13,520 --> 00:01:17,320 M-am gândit, am făcut asta prost trecut săptămână, că nimeni nu vrea să se întoarcă? 31 00:01:17,320 --> 00:01:18,065 Mi-e frică. 32 00:01:18,065 --> 00:01:18,892 33 00:01:18,892 --> 00:01:21,100 Deci, celelalte trei lucruri că vom trece peste 34 00:01:21,100 --> 00:01:24,850 sunt redirecționare, dosar I / O, și apoi indicii și memorie dinamică. 35 00:01:24,850 --> 00:01:29,160 Sunt sigur că ești super incantat despre pointers-- subiect favorit tuturor, 36 00:01:29,160 --> 00:01:31,310 atât de simplu de înțeles. 37 00:01:31,310 --> 00:01:33,130 Sunt sigur că voi toți înțeles, nu? 38 00:01:33,130 --> 00:01:39,510 >> Deci, primul lucruri în primul rând, redirection-- aceasta este de fapt doar un mod 39 00:01:39,510 --> 00:01:42,920 pentru a controla modul în care de intrare lucruri în programul dumneavoastră, 40 00:01:42,920 --> 00:01:44,606 cum te lucrurile de ieșire din program. 41 00:01:44,606 --> 00:01:46,980 Principalele modalități că voi au fost interactiunea cu el 42 00:01:46,980 --> 00:01:51,650 este doar prin faptul standard de cu ecran de imprimare aici. 43 00:01:51,650 --> 00:01:55,940 Dar există modalități de a pipe-- așa cum vedem aici 44 00:01:55,940 --> 00:01:58,980 este unul dintre natură nostru words-- de țeavă care informații 45 00:01:58,980 --> 00:02:02,850 sau că datele într-un fișier dintr-un fișier. 46 00:02:02,850 --> 00:02:05,820 E doar moduri diferite de asistent lucruri în programul dumneavoastră 47 00:02:05,820 --> 00:02:10,681 și în afară de programul tău, în loc de doar le imprimați la acest ecran 48 00:02:10,681 --> 00:02:12,430 sau introducerea lucruri de la linia de comandă. 49 00:02:12,430 --> 00:02:13,760 50 00:02:13,760 --> 00:02:18,030 >> Deci, în primul rând unul este mic mai mare decât caret. 51 00:02:18,030 --> 00:02:22,085 Deci, output-- se imprimă doar de ieșire într-un fișier în loc de ecran. 52 00:02:22,085 --> 00:02:23,620 53 00:02:23,620 --> 00:02:29,500 Deci, dacă ați avut ceva care imprimat "Bună ziua, lume!" la ecran, 54 00:02:29,500 --> 00:02:32,400 dacă l-ai pus în schimb la output.text, că 55 00:02:32,400 --> 00:02:35,220 creează acest fișier numit output.text. 56 00:02:35,220 --> 00:02:38,550 Și atunci când o deschideți, va spune "Bună ziua, lume!" acolo. 57 00:02:38,550 --> 00:02:41,410 Acest lucru poate fi foarte util dacă aveți o tona de erori 58 00:02:41,410 --> 00:02:43,430 de fapt, așa cum vom vedea în asta. 59 00:02:43,430 --> 00:02:46,810 Dacă veți face doi caret, va imprima mesaje de eroare. 60 00:02:46,810 --> 00:02:52,090 >> Deci, dacă aveți o problemă cu compilarea, ea are o multime de erori 61 00:02:52,090 --> 00:02:56,770 si vei primi împotmolit în încercarea pentru a derula în linia de comandă 62 00:02:56,770 --> 00:02:59,110 prin toate acestea, puteți doar le imprimați într-un fișier, 63 00:02:59,110 --> 00:03:02,130 deschide acest fișier, astfel încât să poate parcurge mai ușor. 64 00:03:02,130 --> 00:03:05,160 De fapt, am folosit ca un lot atunci când am fost depanare 65 00:03:05,160 --> 00:03:07,970 mele de 181 de psets pentru masina de învățare. 66 00:03:07,970 --> 00:03:10,000 Astfel că poate fi foarte util mai târziu. 67 00:03:10,000 --> 00:03:18,370 Este de asemenea util dacă aveți un program de că poate este generatoare de o bibliotecă 68 00:03:18,370 --> 00:03:20,430 sau generează un anumit set de siruri de caractere, și tu 69 00:03:20,430 --> 00:03:22,846 trebuie să poată vedea că e le generatoare în mod corespunzător. 70 00:03:22,846 --> 00:03:23,860 71 00:03:23,860 --> 00:03:25,160 Acesta este modul de a face acest lucru. 72 00:03:25,160 --> 00:03:28,280 >> Deci, dacă le imprimați la un fișier, să le poată examina mai ușor, nu? 73 00:03:28,280 --> 00:03:30,930 Față de încercarea de a defila prin linia de comandă. 74 00:03:30,930 --> 00:03:32,740 75 00:03:32,740 --> 00:03:35,820 Și apoi un lucru de reținut este că, cu cât este mai mare doar 76 00:03:35,820 --> 00:03:40,090 decât caret, dacă sunteți scris pentru un fișier care deja exists-- 77 00:03:40,090 --> 00:03:44,990 așa cum ar fi dacă am alergat aceasta prima timp, l-am pus la output.text, 78 00:03:44,990 --> 00:03:49,970 iar apoi am avut un al doilea program că imprimat acest lucru ca program de doi 79 00:03:49,970 --> 00:03:54,250 și a făcut un mai mare decât la output.text, se va suprascrie that-- astfel 80 00:03:54,250 --> 00:03:56,715 suprascrie ceea ce a fost vreodată în acest fișier pentru a începe cu. 81 00:03:56,715 --> 00:03:57,720 82 00:03:57,720 --> 00:04:00,750 >> Deci, dacă doriți să adăugați la un fișier, așa cum vedem aici, 83 00:04:00,750 --> 00:04:04,779 faci doar două mai mare decât semne. 84 00:04:04,779 --> 00:04:05,820 Și se va adăuga la ea. 85 00:04:05,820 --> 00:04:06,750 Ea nu se va suprascrie. 86 00:04:06,750 --> 00:04:09,770 Deci, dacă aveți nevoie pentru a rula multiple programe și un fel de a menține 87 00:04:09,770 --> 00:04:13,170 evidența a ceea ce toate acestea sunt revenind la tine într-un fișier, 88 00:04:13,170 --> 00:04:14,190 asta e un mod de a face acest lucru. 89 00:04:14,190 --> 00:04:17,231 În cazul în care nu-mi pasă ce e în dosarul tău și este permis să fie suprascrise, 90 00:04:17,231 --> 00:04:19,204 puteți folosi doar un singur mare decât. 91 00:04:19,204 --> 00:04:20,600 Asta face sens pentru toată lumea? 92 00:04:20,600 --> 00:04:23,205 93 00:04:23,205 --> 00:04:31,140 >> Audiența: Ca punct slash salut mai mare decât textul ieșire punct, cum ar fi de două ori, 94 00:04:31,140 --> 00:04:34,030 acesta va arăta doar pe ieșire dot textului un al doilea time-- 95 00:04:34,030 --> 00:04:34,810 >> SPEAKER 1: Corect. 96 00:04:34,810 --> 00:04:40,450 Deci, aceasta ar fi de fapt doar complet suprascrie ceea ce a fost acolo de la început. 97 00:04:40,450 --> 00:04:44,260 Dacă acest fișier Aici, output.text deja 98 00:04:44,260 --> 00:04:48,230 există, în principiu, orice te sun care din nou cu un singur mare 99 00:04:48,230 --> 00:04:51,920 decât vă puteți gândi doar de ea cum ca ea înlocuiește fișierul. 100 00:04:51,920 --> 00:04:54,824 Ca și atunci când sunteți de economisire o Word documente și tu nu salvați ca, 101 00:04:54,824 --> 00:04:57,365 și vă păstrați același nume, și se suprascrie complet it-- 102 00:04:57,365 --> 00:04:58,680 aceasta este acelasi tip de lucru. 103 00:04:58,680 --> 00:05:00,380 104 00:05:00,380 --> 00:05:03,550 Oricine are întrebări cu privire la doar scoate într-un fișier? 105 00:05:03,550 --> 00:05:05,051 106 00:05:05,051 --> 00:05:05,550 Minunat. 107 00:05:05,550 --> 00:05:11,440 >> Deci, în mod evident, dacă inversa săgeată de direcție, se poate face intrare. 108 00:05:11,440 --> 00:05:13,090 109 00:05:13,090 --> 00:05:19,960 Așa că, atunci când voi avea ca Caesar sau Visioneer 110 00:05:19,960 --> 00:05:23,195 și a trebuit să intrare ceva, ai avut un argument în linia de comandă 111 00:05:23,195 --> 00:05:24,960 că de fapt aceasta intrare. 112 00:05:24,960 --> 00:05:27,410 Acesta este un alt mod de a face acest lucru. 113 00:05:27,410 --> 00:05:30,520 Deci, în loc de așteptare pentru o linie de comandă, 114 00:05:30,520 --> 00:05:33,800 ca atunci când ai cerut pentru dumneavoastră mesaj în Cezar sau Visioneer, 115 00:05:33,800 --> 00:05:36,490 dacă ați avut un fișier text care a avut mesajul dvs., 116 00:05:36,490 --> 00:05:38,280 ai putea pur și simplu să scrieți în asta. 117 00:05:38,280 --> 00:05:44,930 >> Deci, dacă acest lucru ar fi ca punct slash Caesar 3 mai puțin de sageata introducere a textului, care 118 00:05:44,930 --> 00:05:47,240 este mesajul dumneavoastră, că ar fi foarte bine. 119 00:05:47,240 --> 00:05:51,310 120 00:05:51,310 --> 00:05:54,020 Când programul Caesar de fapt a cerut pentru intrare de la utilizator, 121 00:05:54,020 --> 00:05:57,360 aceasta ar avea deja că care le-ați scris în acest dosar. 122 00:05:57,360 --> 00:05:58,830 Asta e doar un alt mod. 123 00:05:58,830 --> 00:06:02,445 Doar un revers al output-- doar de intrare pentru date. 124 00:06:02,445 --> 00:06:04,570 125 00:06:04,570 --> 00:06:06,680 >> Și atunci ultima este țeavă. 126 00:06:06,680 --> 00:06:07,780 Deci, asta e destul de cool. 127 00:06:07,780 --> 00:06:09,890 Pentru că vă permite să ia ieșirea una 128 00:06:09,890 --> 00:06:13,695 Programul și pune-l ca de intrare la un alt program. 129 00:06:13,695 --> 00:06:15,250 130 00:06:15,250 --> 00:06:18,630 Nu știu dacă vreunul dintre voi a jucat cu descifra 131 00:06:18,630 --> 00:06:20,590 care ar putea avea CS50 ai dat, dar ar 132 00:06:20,590 --> 00:06:27,380 vă permit să luați o probă fișier, introduceți-l în criptare ta, 133 00:06:27,380 --> 00:06:30,350 și apoi de acolo de tip că în decriptarea ta 134 00:06:30,350 --> 00:06:32,470 pentru a vă asigura că s-au dovedit la fel. 135 00:06:32,470 --> 00:06:34,050 Deci e un fel de trei-un fel de buclă. 136 00:06:34,050 --> 00:06:38,400 137 00:06:38,400 --> 00:06:39,423 Du-te pentru ea. 138 00:06:39,423 --> 00:06:41,785 >> Audiența: Dacă un program are mai multe intrări, 139 00:06:41,785 --> 00:06:47,646 există o modalitate de a spune ceea ce de intrare pentru a utiliza fișierul text sau de ieșire pentru? 140 00:06:47,646 --> 00:06:49,325 >> SPEAKER 1: Ea are mai multe intrări. 141 00:06:49,325 --> 00:06:52,190 142 00:06:52,190 --> 00:07:00,430 Oricare ar fi fișier input-- când este faptul de intrare care prima dată, e 143 00:07:00,430 --> 00:07:03,240 de gând să-și asume, cred, e O să țeavă în întregul dosar. 144 00:07:03,240 --> 00:07:03,979 145 00:07:03,979 --> 00:07:07,145 Deci, dacă aveți mai multe intrări, ești va fi de conducte în mai multe fișiere. 146 00:07:07,145 --> 00:07:08,190 147 00:07:08,190 --> 00:07:12,390 Deci, dacă ceri mesaje de trei ori în codul dvs., 148 00:07:12,390 --> 00:07:15,230 ai de gând să fi punerea în trei dosare diferite. 149 00:07:15,230 --> 00:07:15,980 Și devine nebun. 150 00:07:15,980 --> 00:07:18,188 Și nu ar trebui să aibă la vă faceți griji despre asta acum. 151 00:07:18,188 --> 00:07:19,150 Dar asta e ideea. 152 00:07:19,150 --> 00:07:20,680 153 00:07:20,680 --> 00:07:26,822 >> Deci da, țeavă de ieșire este doar unul Programul folosește de intrare în cealaltă. 154 00:07:26,822 --> 00:07:27,665 Toată lumea bine acolo? 155 00:07:27,665 --> 00:07:28,565 156 00:07:28,565 --> 00:07:29,065 Rece. 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 Tu, probabil, nu va avea de a face prea mult cu ea. 160 00:07:32,890 --> 00:07:35,670 Dar ar trebui să înțeleagă moduri în care puteți folosi acest. 161 00:07:35,670 --> 00:07:38,910 Și există unele cazuri care ați putea dori să-l folosească. 162 00:07:38,910 --> 00:07:44,590 >> Deci, fișier I / O- știu de ce ești saying-- suntem obișnuiți să citesc de la 163 00:07:44,590 --> 00:07:50,500 și scris ecran noastră acolo, care este standard și standard de afară. 164 00:07:50,500 --> 00:07:54,370 Și asta e ceea ce voi ați fost face încă de la începutul clasei aici. 165 00:07:54,370 --> 00:07:58,220 Dar puteți, de asemenea, citi și scrie fișiere, care este tot fișier I / O- atat de fișier de intrare, 166 00:07:58,220 --> 00:07:59,850 de ieșire este tot ce reprezintă. 167 00:07:59,850 --> 00:08:00,930 168 00:08:00,930 --> 00:08:04,360 Deci, acest lucru înseamnă în esență că puteți stoca datele dumneavoastră acum. 169 00:08:04,360 --> 00:08:08,460 >> Când doar imprima la ecran, este practic plecat, nu? 170 00:08:08,460 --> 00:08:12,507 De îndată ce ați face "Hello lume "și a alerga" Hello World " 171 00:08:12,507 --> 00:08:14,090 se imprimă "Hello World" pe ecran. 172 00:08:14,090 --> 00:08:16,370 Dar nu poți face într-adevăr nimic cu ea de acolo. 173 00:08:16,370 --> 00:08:18,950 Dacă stocați într-un text fișier, apoi dintr-o dată 174 00:08:18,950 --> 00:08:22,789 aveți aceste date pe care îl permis pentru a manipula sau pune-l într-un fișier, 175 00:08:22,789 --> 00:08:24,080 sau pune-l într-un program mai târziu. 176 00:08:24,080 --> 00:08:26,370 177 00:08:26,370 --> 00:08:29,290 Unul dintre motivele de ce am face acest lucru este doar 178 00:08:29,290 --> 00:08:31,560 ca o modalitate de a stoca date pentru o utilizare ulterioară. 179 00:08:31,560 --> 00:08:34,790 180 00:08:34,790 --> 00:08:37,279 >> Eu am o pereche de pași aici doar de mers pe jos prin standardul 181 00:08:37,279 --> 00:08:39,450 I / O. În prima etapă, voi nevoie pentru a crea o referință 182 00:08:39,450 --> 00:08:43,480 la dosar cu toate capace Fișier stele. 183 00:08:43,480 --> 00:08:45,740 Deci, care creează un pointer la un fișier. 184 00:08:45,740 --> 00:08:48,080 185 00:08:48,080 --> 00:08:49,650 Deci, atunci vrei să-l deschidă. 186 00:08:49,650 --> 00:08:52,940 Și tu spui, literalmente, doar fișier este egal cu fopen. 187 00:08:52,940 --> 00:08:57,400 Și acest lucru se întâmplă pentru a reveni un pointer la fișierul pe care tocmai ați deschis. 188 00:08:57,400 --> 00:08:59,610 189 00:08:59,610 --> 00:09:01,460 Am văzut o pereche de tine Cei de la ore de birou. 190 00:09:01,460 --> 00:09:07,400 >> Dar unul dintre lucrurile Este indicii amintește- 191 00:09:07,400 --> 00:09:10,409 pot fi unii adresa sau nul, nu? 192 00:09:10,409 --> 00:09:12,700 Dacă avem vreodată un caz în care ceva se poate intoarce null, 193 00:09:12,700 --> 00:09:14,990 ce avem de făcut înainte de a le folosi vreodată? 194 00:09:14,990 --> 00:09:16,220 195 00:09:16,220 --> 00:09:19,000 Avem nevoie pentru a verifica dacă e nula sau nu, corect? 196 00:09:19,000 --> 00:09:23,600 Pentru că unii dintre voi ar fi putut avea problema în cazul în care orice obiect 197 00:09:23,600 --> 00:09:26,110 era întors în Breakout a fost nul. 198 00:09:26,110 --> 00:09:28,170 Ați încercat să efectuați o anumită funcție pe ea. 199 00:09:28,170 --> 00:09:29,770 Și site-ul computer defect. 200 00:09:29,770 --> 00:09:30,725 Dreapta? 201 00:09:30,725 --> 00:09:33,640 Pun pariu că o pereche de tine ar fi putut avea această problemă. 202 00:09:33,640 --> 00:09:38,890 >> Deci, cu fopen, fopen fie va returnează un pointer la dosar, 203 00:09:38,890 --> 00:09:41,200 sau în cazul în care ceva nu merge bine, se va intoarce null. 204 00:09:41,200 --> 00:09:45,980 Deci, ai mereu nevoie pentru a verifica că aceasta nu a revenit nul 205 00:09:45,980 --> 00:09:47,880 înainte de a încerca să faci nimic altceva. 206 00:09:47,880 --> 00:09:49,110 207 00:09:49,110 --> 00:09:51,974 Aceasta este ca o paradigmă standard de care ai de gând să nevoie aici. 208 00:09:51,974 --> 00:09:54,390 Dacă există vreodată o șansă care ceva ar putea reveni nul, 209 00:09:54,390 --> 00:09:56,590 verificați pentru a vă asigura că nu înainte de a continua. 210 00:09:56,590 --> 00:09:58,911 În caz contrar, te duci pentru a obține defecte site-ul minunat. 211 00:09:58,911 --> 00:10:00,410 Și nu-i place să se ocupe cu cele. 212 00:10:00,410 --> 00:10:03,180 213 00:10:03,180 --> 00:10:06,410 >> Deci, după cum vedem aici, primul argument este doar calea către fișierul. 214 00:10:06,410 --> 00:10:09,380 În cazul în care fișierul nu există, se va crea acest fișier. 215 00:10:09,380 --> 00:10:10,713 Și este doar de gând să fie gol. 216 00:10:10,713 --> 00:10:10,789 217 00:10:10,789 --> 00:10:13,080 Și apoi al doilea argument este modul pe care doriți. 218 00:10:13,080 --> 00:10:14,610 Nu vrem să citească din acest fișier? 219 00:10:14,610 --> 00:10:15,560 Vrei să scrie de la ea? 220 00:10:15,560 --> 00:10:16,476 Vrei să adăugați? 221 00:10:16,476 --> 00:10:17,600 222 00:10:17,600 --> 00:10:20,670 Deci, de fapt, ceea ce tocmai am said-- dacă fișierul nu există 223 00:10:20,670 --> 00:10:23,400 și sunteți încercarea de a citi de la ea, o să arunce o eroare. 224 00:10:23,400 --> 00:10:26,890 Dacă fișierul name-- place dacă file.text nu există încă 225 00:10:26,890 --> 00:10:29,250 si doriti sa scrie pentru ea, va crea 226 00:10:29,250 --> 00:10:33,110 un fișier gol numit file.text pentru tine. 227 00:10:33,110 --> 00:10:36,612 Și dacă vreți să adăugați, tu ar trebui să facă același lucru. 228 00:10:36,612 --> 00:10:38,081 Asta face sens? 229 00:10:38,081 --> 00:10:40,580 Dacă sunteți încercarea de a citi de la un fișier care nu există încă, 230 00:10:40,580 --> 00:10:41,590 aceasta va arunca o eroare. 231 00:10:41,590 --> 00:10:44,340 În caz contrar, se va crea fișierul pentru ai face ceea ce vrei să-l. 232 00:10:44,340 --> 00:10:45,970 233 00:10:45,970 --> 00:10:46,470 Rece. 234 00:10:46,470 --> 00:10:47,510 235 00:10:47,510 --> 00:10:48,880 Acum putem citi din fișierul. 236 00:10:48,880 --> 00:10:52,570 Și acesta este doar un fel de a merge prin diferitele funcții 237 00:10:52,570 --> 00:10:58,980 pe care o avem pentru dosar I / O. Această voință să fie necesară în PSET această săptămână, 238 00:10:58,980 --> 00:11:00,505 dacă îmi amintesc corect. 239 00:11:00,505 --> 00:11:02,880 Da, absolut va fi necesar în PSET această săptămână. 240 00:11:02,880 --> 00:11:04,260 241 00:11:04,260 --> 00:11:07,010 Deci, fgetc returnează următorul caracter. 242 00:11:07,010 --> 00:11:08,350 243 00:11:08,350 --> 00:11:10,300 fgets returnează doar o linie de text. 244 00:11:10,300 --> 00:11:11,790 245 00:11:11,790 --> 00:11:14,610 Acesta va reveni nimic până la o nouă linie, si se va rupe. 246 00:11:14,610 --> 00:11:15,950 247 00:11:15,950 --> 00:11:18,700 Deci, fread citește o anumită Numărul de bytes și locuri le 248 00:11:18,700 --> 00:11:20,700 într-o matrice, care este ceva ce s-ar putea 249 00:11:20,700 --> 00:11:25,485 vrei sa faci cu re-size-- ar putea fi util. 250 00:11:25,485 --> 00:11:26,550 251 00:11:26,550 --> 00:11:29,290 >> Câți oameni au citit spec PSET, apropo? 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 [Inaudibil] 255 00:11:32,760 --> 00:11:35,380 256 00:11:35,380 --> 00:11:36,580 >> SPEAKER 1: OK. 257 00:11:36,580 --> 00:11:37,530 Bine. 258 00:11:37,530 --> 00:11:41,940 Categoric citit that-- este un PSET distractiv. 259 00:11:41,940 --> 00:11:51,320 Ai pentru a recupera o memorie șters card-- cu adevarat interesant atunci când aceasta funcționează. 260 00:11:51,320 --> 00:11:54,100 Dar cu siguranta, începe citirea asta. 261 00:11:54,100 --> 00:11:56,280 Vino să vorbești cu mine, dacă Aveti intrebari despre ea. 262 00:11:56,280 --> 00:11:59,290 >> OK, așa cum spuneam, fread citeste un anumit număr de bytes. 263 00:11:59,290 --> 00:12:01,340 264 00:12:01,340 --> 00:12:03,590 Asta e un numar arbitrar care ai de gând să se stabilească. 265 00:12:03,590 --> 00:12:05,990 266 00:12:05,990 --> 00:12:08,260 Și apoi fseek doar se mută într-o anumită poziție. 267 00:12:08,260 --> 00:12:11,150 Deci, poate că nu-mi pasă despre următorii 10 octeți. 268 00:12:11,150 --> 00:12:12,880 Vrei doar să treceți. 269 00:12:12,880 --> 00:12:14,030 Tu nu le pasă de cei. 270 00:12:14,030 --> 00:12:16,280 Vrei să citiți începând de la 11 octet. 271 00:12:16,280 --> 00:12:18,252 fseek vă permite să faceți asta. 272 00:12:18,252 --> 00:12:20,710 Deci, vă permite să fie selectiv despre ceea ce citesc. 273 00:12:20,710 --> 00:12:25,880 Pentru că fgetc, fgets, și fread citit dintr-un loc anume în fișierul. 274 00:12:25,880 --> 00:12:27,260 275 00:12:27,260 --> 00:12:35,090 >> Un mod de a gândi despre acest lucru este în cazul în care acest lucru este dosarul nostru, atunci când îl deschideți în primul rând, 276 00:12:35,090 --> 00:12:41,140 aveți această poziție în fișier care începe de la început. 277 00:12:41,140 --> 00:12:45,040 Ori de câte ori te sun fgetc, fgetf, sau fread, 278 00:12:45,040 --> 00:12:48,875 este de gând să înceapă de la acest marker poziție. 279 00:12:48,875 --> 00:12:51,340 280 00:12:51,340 --> 00:12:55,245 Să spunem că vrei doar să citească această bucată de memorie pe aici. 281 00:12:55,245 --> 00:12:56,300 282 00:12:56,300 --> 00:12:57,960 Nu poți suna. 283 00:12:57,960 --> 00:13:02,430 Trebuie să caute aici și apoi citit de acolo 284 00:13:02,430 --> 00:13:06,540 sau cititi, devine, sau getc, în funcție de ceea ce doriți. 285 00:13:06,540 --> 00:13:09,310 Deci, caută doar vă permite să skip porțiuni de memorie. 286 00:13:09,310 --> 00:13:11,590 Și asta e singura Astfel, puteți sări peste lucruri 287 00:13:11,590 --> 00:13:14,012 fără să le citească în tampon ta. 288 00:13:14,012 --> 00:13:15,470 Asta face sens pentru toată lumea? 289 00:13:15,470 --> 00:13:21,110 290 00:13:21,110 --> 00:13:24,780 >> În mod evident, există o mulțime de here-- paralel 291 00:13:24,780 --> 00:13:27,780 redirecționare noastră ieșire, sau intrare, ai citit și ești scrie. 292 00:13:27,780 --> 00:13:31,800 Deci, fputc doar scrie un caracter în fișierul. 293 00:13:31,800 --> 00:13:33,655 fputs scrie o linie. 294 00:13:33,655 --> 00:13:35,030 295 00:13:35,030 --> 00:13:37,420 Fprintf imprimă o ieșire formatat. 296 00:13:37,420 --> 00:13:41,190 Deci, dacă aveți file, sau spațiu, sau fleacuri. 297 00:13:41,190 --> 00:13:44,180 Și apoi fwrite scrie ceva matrice de octeți într-un fișier. 298 00:13:44,180 --> 00:13:48,860 Deci, aceasta este la fel fwrite și fread sunt analoage 299 00:13:48,860 --> 00:13:57,550 fgets opposites--, fputs, și apoi o mulțime fputc și fgetc-- 300 00:13:57,550 --> 00:14:00,710 , lucrurile rapide de nebun. 301 00:14:00,710 --> 00:14:05,300 >> Doar un fel de a menține această handy-- veți avea momente diferite 302 00:14:05,300 --> 00:14:08,680 în cazul în care poate vrei doar un caracter la un moment dat. 303 00:14:08,680 --> 00:14:09,890 Poate vrei o linie întreagă. 304 00:14:09,890 --> 00:14:14,320 Cu pset-- dumneavoastră în dicționarul care este în două psets, 305 00:14:14,320 --> 00:14:19,690 Eu cred că, vă oferim un întreg Dicționar într-un format de text 306 00:14:19,690 --> 00:14:22,252 care are fiecare cuvânt separate printr-o linie. 307 00:14:22,252 --> 00:14:24,210 Deci, dacă ai vrut să citească într-un cuvânt la un moment dat, 308 00:14:24,210 --> 00:14:31,769 ceea ce ar putea să vă folosiți dacă sunteți de lectură și toate acestea sunt separate pe linii noi, 309 00:14:31,769 --> 00:14:33,310 si doriti doar un singur cuvânt la un moment dat? 310 00:14:33,310 --> 00:14:35,320 311 00:14:35,320 --> 00:14:36,040 >> Audiența: fgets 312 00:14:36,040 --> 00:14:36,748 >> SPEAKER 1: Corect. 313 00:14:36,748 --> 00:14:39,960 Fgets-- pentru că se întoarce tot ce este pe o singură linie. 314 00:14:39,960 --> 00:14:42,750 Și dacă fiecare cuvânt este sa linie proprie, putem folosi fgets. 315 00:14:42,750 --> 00:14:44,511 316 00:14:44,511 --> 00:14:45,010 Rece. 317 00:14:45,010 --> 00:14:47,290 Asta face sens, toată lumea? 318 00:14:47,290 --> 00:14:48,020 Rece? 319 00:14:48,020 --> 00:14:50,020 Da, vom ajunge la partea distractivă cu indicii 320 00:14:50,020 --> 00:14:51,728 foarte curând, în cazul în care ajunge pentru a face unele matematica. 321 00:14:51,728 --> 00:14:52,776 Și va fi grozav. 322 00:14:52,776 --> 00:14:55,690 323 00:14:55,690 --> 00:14:57,740 >> Ultima step-- închide dosarul. 324 00:14:57,740 --> 00:15:01,090 Cu atât de multe lucruri aici, una dintre paradigmele noastre 325 00:15:01,090 --> 00:15:03,550 este dacă se poate întoarce nul, verificați pentru nul. 326 00:15:03,550 --> 00:15:06,160 Dacă deschideți ceva, ar fi bine să-l închidă. 327 00:15:06,160 --> 00:15:10,419 OK, deci tu nu ai terminat până ce ești făcut dacă nu le-ați închis. 328 00:15:10,419 --> 00:15:12,585 Un fel de nu sa terminat până la doamna grăsime cântă. 329 00:15:12,585 --> 00:15:14,130 Asta e ca și cum închiderea fișierului. 330 00:15:14,130 --> 00:15:16,860 331 00:15:16,860 --> 00:15:19,190 Așa cum se spune aici, doar să reiterez, mereu 332 00:15:19,190 --> 00:15:21,750 deschide fișierul înainte de a te citește sau scrie-l. 333 00:15:21,750 --> 00:15:24,450 Și întotdeauna se închide dacă le-ați deschis. 334 00:15:24,450 --> 00:15:25,460 În regulă? 335 00:15:25,460 --> 00:15:25,960 Rece. 336 00:15:25,960 --> 00:15:26,835 >> Deci, aici este un exemplu. 337 00:15:26,835 --> 00:15:29,250 338 00:15:29,250 --> 00:15:34,330 Deci, tiny-- Nu știu dacă baieti poate observa că foarte bine. 339 00:15:34,330 --> 00:15:36,805 Dacă am putea crește luminozitatea într-un fel. 340 00:15:36,805 --> 00:15:40,430 341 00:15:40,430 --> 00:15:45,030 Lasă-mă să fac acest lucru de fapt, dacă pot. 342 00:15:45,030 --> 00:15:48,020 343 00:15:48,020 --> 00:15:51,470 OK, voi nu poate într-adevăr poate vedea că, la toate, puteți? 344 00:15:51,470 --> 00:15:52,905 OK, vom face asta, atunci. 345 00:15:52,905 --> 00:16:35,094 346 00:16:35,094 --> 00:16:35,594 [Inaudibil] 347 00:16:35,594 --> 00:16:56,670 348 00:16:56,670 --> 00:16:58,605 >> Presupun că acest lucru este mult mai bine pentru a vedea. 349 00:16:58,605 --> 00:17:17,330 350 00:17:17,330 --> 00:17:19,455 Poate cineva sa-mi vezi unde mouse-ul a mers este problema? 351 00:17:19,455 --> 00:17:22,837 Ah, acolo este-- ce luptă! 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 Practic, voi ar trebui să aibă natură de o idee a ceea ce aceasta face. 355 00:17:53,845 --> 00:17:56,740 356 00:17:56,740 --> 00:17:57,600 Nu e perfect. 357 00:17:57,600 --> 00:17:58,851 358 00:17:58,851 --> 00:18:02,425 Dar aș mai degrabă explica decât cheltui mai mult timp încercând să-l formatați în mod corespunzător. 359 00:18:02,425 --> 00:18:03,610 360 00:18:03,610 --> 00:18:07,280 Practic, după cum vedeți aici, vom începe cu fișier deschis. 361 00:18:07,280 --> 00:18:09,620 Și avem niște fișier de bază de date care suntem 362 00:18:09,620 --> 00:18:12,300 deschidere care spune că e studenții noștri. 363 00:18:12,300 --> 00:18:14,020 Și vom scrie la ea. 364 00:18:14,020 --> 00:18:15,060 365 00:18:15,060 --> 00:18:17,720 Deci, desigur, intoarce null. 366 00:18:17,720 --> 00:18:19,650 Așa că trebuie să verificați nul. 367 00:18:19,650 --> 00:18:22,930 Și apoi, dacă nu e nul, vom trece prin. 368 00:18:22,930 --> 00:18:25,660 Și, după cum vedeți, suntem looping pe aici. 369 00:18:25,660 --> 00:18:26,960 Există studenți. 370 00:18:26,960 --> 00:18:30,520 Elevii se hash definit ca trei. 371 00:18:30,520 --> 00:18:34,060 Și ceea ce facem noi este că sunt imprimarea la dosar, nu? 372 00:18:34,060 --> 00:18:36,975 Deci, ce ne imprimarea la dosarul nostru? 373 00:18:36,975 --> 00:18:47,040 374 00:18:47,040 --> 00:18:48,906 >> Audiența: Scorurile care sunt în matrice? 375 00:18:48,906 --> 00:18:49,680 >> SPEAKER 1: Da. 376 00:18:49,680 --> 00:18:50,980 Scorurile care se află în array-- exact. 377 00:18:50,980 --> 00:18:53,050 Deci, vom deschide această fișier bază de date, care 378 00:18:53,050 --> 00:18:56,040 Presupun că este un fel de baze de date note. 379 00:18:56,040 --> 00:19:01,100 Și noi suntem doar imprimând înscris de fiecare elev în acest dosar. 380 00:19:01,100 --> 00:19:02,140 Rece? 381 00:19:02,140 --> 00:19:02,640 Bun. 382 00:19:02,640 --> 00:19:03,811 383 00:19:03,811 --> 00:19:04,310 Minunat. 384 00:19:04,310 --> 00:19:05,100 OK. 385 00:19:05,100 --> 00:19:06,950 Să ne întoarcem sa-- 386 00:19:06,950 --> 00:19:08,646 >> Audiența: Am o întrebare rapidă. 387 00:19:08,646 --> 00:19:11,570 Este printf nu în bucla for? 388 00:19:11,570 --> 00:19:12,870 Asta e doar în cazul în care bucla? 389 00:19:12,870 --> 00:19:14,370 SPEAKER 1: Nu, e în bucla for. 390 00:19:14,370 --> 00:19:16,150 391 00:19:16,150 --> 00:19:18,810 Eu nu pot vedea mouse-ul meu foarte bine aici. 392 00:19:18,810 --> 00:19:21,359 Așa că eu sunt luptă pentru a format în mod corespunzător. 393 00:19:21,359 --> 00:19:22,525 Acest suport trebuie să fie plecat. 394 00:19:22,525 --> 00:19:23,610 395 00:19:23,610 --> 00:19:25,130 Ar trebui să fie aici. 396 00:19:25,130 --> 00:19:26,605 Aceasta este ceea ce se află într-voastră de buclă. 397 00:19:26,605 --> 00:20:10,680 398 00:20:10,680 --> 00:20:11,180 Acolo. 399 00:20:11,180 --> 00:20:12,160 Acum e destul de. 400 00:20:12,160 --> 00:20:16,720 Deci, asta e modul în care ar trebui să be-- cu excepția pentru că ultima categorie de care am respins. 401 00:20:16,720 --> 00:20:17,220 OK. 402 00:20:17,220 --> 00:20:19,491 Asta face sens pentru toată lumea? 403 00:20:19,491 --> 00:20:19,990 OK. 404 00:20:19,990 --> 00:20:23,750 Ne vom deplasa pe la urmatorul lucru then-- 405 00:20:23,750 --> 00:20:26,180 care, de fapt, ai de gând nevoie pentru a vedea cod. 406 00:20:26,180 --> 00:20:28,370 Deci, eu sunt doar de gând să copiați că peste chiar acum. 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 Așa că am de gând să-ți arăt voi acest cod. 410 00:20:35,110 --> 00:20:38,240 Și vreau să încercați și figura ceea ce se presupune a face. 411 00:20:38,240 --> 00:20:49,740 412 00:20:49,740 --> 00:20:52,480 >> Deci, având în vedere that-- ia un minut sau cam asa ceva. 413 00:20:52,480 --> 00:20:54,440 Încercați și dau seama ce se întâmplă aici. 414 00:20:54,440 --> 00:21:58,840 415 00:21:58,840 --> 00:21:59,570 >> Orice idei? 416 00:21:59,570 --> 00:22:08,180 417 00:22:08,180 --> 00:22:12,470 >> Știm că avem cel puțin două argumente în linia de comandă, nu? 418 00:22:12,470 --> 00:22:16,270 Presupun dintre care unul va fi care [inaudibil] a programului nostru este 419 00:22:16,270 --> 00:22:17,530 și apoi altceva. 420 00:22:17,530 --> 00:22:19,980 Pentru că dacă [inaudibil] este mai puțin mult de două, ne-am tipa la ei. 421 00:22:19,980 --> 00:22:21,140 Dreapta? 422 00:22:21,140 --> 00:22:25,300 Și de la utilizarea, se pare ca aceasta va fi un fel de fișier. 423 00:22:25,300 --> 00:22:26,260 Suntem cu toții de acord cu asta? 424 00:22:26,260 --> 00:22:29,110 425 00:22:29,110 --> 00:22:31,570 Deci, acum, ce e bucla faci? 426 00:22:31,570 --> 00:22:32,570 Ce mai faci prin intermediul? 427 00:22:32,570 --> 00:22:35,000 428 00:22:35,000 --> 00:22:36,449 >> Audiența: Toate fișierele. 429 00:22:36,449 --> 00:22:37,240 SPEAKER 1: Exact. 430 00:22:37,240 --> 00:22:39,650 Se trece prin toate fișierele pe care le-am intrare acolo. 431 00:22:39,650 --> 00:22:40,720 432 00:22:40,720 --> 00:22:46,040 Deci, pentru fiecare dosar, e deschiderea unele șir acolo. 433 00:22:46,040 --> 00:22:47,560 Se deschide acel fișier. 434 00:22:47,560 --> 00:22:48,060 Dreapta? 435 00:22:48,060 --> 00:22:49,140 436 00:22:49,140 --> 00:22:52,380 Și se citește de la ea. 437 00:22:52,380 --> 00:22:53,420 438 00:22:53,420 --> 00:22:55,540 Desigur, verifica daca este nul. 439 00:22:55,540 --> 00:22:57,220 Și apoi e de imprimare. 440 00:22:57,220 --> 00:23:01,460 Dacă e nul, e doar spunându-ne că nu este un fișier care există. 441 00:23:01,460 --> 00:23:04,290 Pentru că minte, cu citiți fișierul nostru trebuie să existe. 442 00:23:04,290 --> 00:23:04,810 Dreapta? 443 00:23:04,810 --> 00:23:06,870 Cu scriere și adăugați, puteți obține departe cu ea. 444 00:23:06,870 --> 00:23:08,970 Dar cu citit, fișierul nostru trebuie să existe. 445 00:23:08,970 --> 00:23:10,430 446 00:23:10,430 --> 00:23:13,330 >> Și apoi, dacă aceasta există, ce facem aici? 447 00:23:13,330 --> 00:23:14,810 448 00:23:14,810 --> 00:23:15,780 Să începem de aici. 449 00:23:15,780 --> 00:23:18,815 Ce-i asta do-- acest prim caracter. 450 00:23:18,815 --> 00:23:20,960 451 00:23:20,960 --> 00:23:21,790 Ce face el? 452 00:23:21,790 --> 00:23:24,100 El devine un personaj, nu? 453 00:23:24,100 --> 00:23:25,400 Deci, ce este aceasta face? 454 00:23:25,400 --> 00:23:26,775 Este din ce in primul caracter. 455 00:23:26,775 --> 00:23:28,860 456 00:23:28,860 --> 00:23:30,200 Oricine știe EOF? 457 00:23:30,200 --> 00:23:31,170 >> Audiența: Sfârșitul de fișier? 458 00:23:31,170 --> 00:23:32,680 >> SPEAKER 1: Sfârșitul file-- exact. 459 00:23:32,680 --> 00:23:35,310 Asa ca va trece prin întregul dosar, nu? 460 00:23:35,310 --> 00:23:36,710 461 00:23:36,710 --> 00:23:40,780 Și apoi o să actualizați de asistent fiecare personaj ulterior. 462 00:23:40,780 --> 00:23:41,565 Dreapta? 463 00:23:41,565 --> 00:23:43,636 Și ce o face? 464 00:23:43,636 --> 00:23:44,760 Audiența: Punerea care in-- 465 00:23:44,760 --> 00:23:46,741 466 00:23:46,741 --> 00:23:49,170 >> SPEAKER 1: printuri putchar pentru screensaver. 467 00:23:49,170 --> 00:23:50,867 468 00:23:50,867 --> 00:23:51,950 [Inaudibil] caracterul. 469 00:23:51,950 --> 00:23:54,300 Și apoi când [inaudibil] aceasta va închide dosarul. 470 00:23:54,300 --> 00:23:57,370 >> Audiența: Nu ai nevoie de un [? altceva? ?] 471 00:23:57,370 --> 00:23:59,005 >> SPEAKER 1: Nu neapărat. 472 00:23:59,005 --> 00:24:01,480 Adică, e un fel de implicat în acest sens. 473 00:24:01,480 --> 00:24:06,780 Deoarece acest întoarce, deși, atâta timp ca acest lucru nu prinde acest lucru, ești bine. 474 00:24:06,780 --> 00:24:07,940 475 00:24:07,940 --> 00:24:10,250 Vreau să spun că e probabil bine practica de a face o altfel. 476 00:24:10,250 --> 00:24:15,755 Dar un altceva nu este întotdeauna este necesar în special 477 00:24:15,755 --> 00:24:17,610 dacă aveți ceva ca o întoarcere, care 478 00:24:17,610 --> 00:24:20,640 înseamnă că, în acest caz, în cazul în care capturile ea, programul se va termina 479 00:24:20,640 --> 00:24:21,850 și niciodată nu va ajunge la asta. 480 00:24:21,850 --> 00:24:23,030 481 00:24:23,030 --> 00:24:29,190 E mai mult pentru cazul în care sunteți nu neapărat întoarcerea ceva. 482 00:24:29,190 --> 00:24:31,370 Pentru că dacă acest lucru nu a fost revenind nimic, 483 00:24:31,370 --> 00:24:34,430 aceasta ar însemna că în cazul în care acest lucru ar fi adevărat, restul ar rula în continuare. 484 00:24:34,430 --> 00:24:36,138 Și în acest caz, ar vrea un fals. 485 00:24:36,138 --> 00:24:38,240 În cazul în care se întoarce, și se încheie programul dumneavoastră, 486 00:24:38,240 --> 00:24:41,960 o altfel nu este necesar tot timp, în funcție de context. 487 00:24:41,960 --> 00:24:43,084 488 00:24:43,084 --> 00:24:44,375 Jacob, ai avea o întrebare? 489 00:24:44,375 --> 00:24:46,100 Audiența: Da. 490 00:24:46,100 --> 00:24:49,300 Deci, nu fgetc obține caracterul următor? 491 00:24:49,300 --> 00:24:50,734 Cum crește caracterul? 492 00:24:50,734 --> 00:24:51,400 SPEAKER 1: Da. 493 00:24:51,400 --> 00:24:52,774 Deci, fgetc devine următorul caracter. 494 00:24:52,774 --> 00:24:54,140 495 00:24:54,140 --> 00:24:56,866 Vă puteți gândi la ea ca C ++ într-un sens. 496 00:24:56,866 --> 00:24:58,350 >> Audiența: Deci, ce a fost EOF? 497 00:24:58,350 --> 00:25:00,877 >> SPEAKER 1: EOF este sfârșitul de fișier. 498 00:25:00,877 --> 00:25:03,960 E doar un marker care vă permite să știți ca esti la sfârșitul fișierului. 499 00:25:03,960 --> 00:25:06,742 Deci, acest lucru se întâmplă pentru a imprima standard de ieșire. 500 00:25:06,742 --> 00:25:08,950 Și apoi o să închidă fișierul când e gata. 501 00:25:08,950 --> 00:25:10,700 Și apoi să mergem la fișierul următor, nu? 502 00:25:10,700 --> 00:25:12,660 Deci, în general, ceea ce face acest program face? 503 00:25:12,660 --> 00:25:15,402 504 00:25:15,402 --> 00:25:16,090 >> [Inaudibil] 505 00:25:16,090 --> 00:25:16,900 >> SPEAKER 1: Da. 506 00:25:16,900 --> 00:25:18,770 Pur și simplu imprimă tot acolo. 507 00:25:18,770 --> 00:25:23,270 Deci, CAT dacă voi au folosit vreodată și apoi numele unui file-- 508 00:25:23,270 --> 00:25:26,240 Nu știu dacă vreunul dintre voi aveți făcut vreodată că pe terminalul dumneavoastră. 509 00:25:26,240 --> 00:25:29,630 Dar, dacă folosiți vreodată comandă CAT-- C-A-T-- 510 00:25:29,630 --> 00:25:31,880 și apoi orice fișier aveți there---l 511 00:25:31,880 --> 00:25:37,260 afiseaza-l la terminalul, care poate fi foarte la îndemână pentru unele lucruri. 512 00:25:37,260 --> 00:25:38,746 Am o mulțime folosi. 513 00:25:38,746 --> 00:25:40,120 Asta face sens pentru toată lumea? 514 00:25:40,120 --> 00:25:41,480 515 00:25:41,480 --> 00:25:42,100 Rece? 516 00:25:42,100 --> 00:25:46,530 >> OK deci sarcina dumneavoastră now-- fie prin tine sau cu cei din jur Tu-- 517 00:25:46,530 --> 00:25:54,930 este de a scrie doar un simplu program care va scrie doar "Bună ziua, lume!" 518 00:25:54,930 --> 00:25:56,255 la un fișier. 519 00:25:56,255 --> 00:26:00,215 >> [Inaudibil] 520 00:26:00,215 --> 00:26:56,210 521 00:26:56,210 --> 00:26:57,040 >> [Inaudibil] 522 00:26:57,040 --> 00:26:59,248 >> SPEAKER 1: am fost ca, nu- Eu fac că săptămâna trecută prost? 523 00:26:59,248 --> 00:27:00,201 524 00:27:00,201 --> 00:27:01,492 Eu nu cred că a fost așa de rău. 525 00:27:01,492 --> 00:27:02,479 526 00:27:02,479 --> 00:27:03,520 Mă bucur că ești aici. 527 00:27:03,520 --> 00:27:04,655 Este într-adevăr mă face fericit. 528 00:27:04,655 --> 00:27:07,565 529 00:27:07,565 --> 00:27:10,160 Sunt o fată de plăceri simple. 530 00:27:10,160 --> 00:27:11,688 Îmi place doar atunci când pct meu participă. 531 00:27:11,688 --> 00:27:13,830 532 00:27:13,830 --> 00:27:18,270 Așa că eu sunt doar obtinerea acestui început de voi astfel încât să putem cod împreună. 533 00:27:18,270 --> 00:27:22,290 Nu-mi place inscrie oricine de pe la fața locului cu excepția cazului în care doriți să fie. 534 00:27:22,290 --> 00:27:26,486 535 00:27:26,486 --> 00:27:30,086 >> Audiența: Pentru testul, face trebuie să scrie un program? 536 00:27:30,086 --> 00:27:33,260 >> SPEAKER 1: Vi se poate cere să a scrie programe simple de mână. 537 00:27:33,260 --> 00:27:35,940 538 00:27:35,940 --> 00:27:36,590 Da. 539 00:27:36,590 --> 00:27:38,510 >> Audiența: testul este săptămâna viitoare, nu? 540 00:27:38,510 --> 00:27:40,108 >> SPEAKER 1: testul este miercurea viitoare. 541 00:27:40,108 --> 00:27:40,855 542 00:27:40,855 --> 00:27:43,730 Asta înseamnă că este un minunat [? CSE?] clasificare partid după aceea, care 543 00:27:43,730 --> 00:27:50,390 înseamnă că veți obține scoruri dvs. înapoi că night-- la ce oră? 544 00:27:50,390 --> 00:27:50,890 Cine știe? 545 00:27:50,890 --> 00:27:51,973 Dar va fi acea noapte. 546 00:27:51,973 --> 00:28:02,020 547 00:28:02,020 --> 00:28:02,855 >> Bine. 548 00:28:02,855 --> 00:28:04,250 Cum vrem să pornim acest lucru? 549 00:28:04,250 --> 00:28:07,964 550 00:28:07,964 --> 00:28:09,630 Am să vă dau un hint-- începe cu aceasta. 551 00:28:09,630 --> 00:28:11,455 >> Audiența: Trebuie să deschideți un fișier. 552 00:28:11,455 --> 00:28:12,250 >> SPEAKER 1: Da. 553 00:28:12,250 --> 00:28:14,060 Deci, ce vrei pentru a apela acest lucru? 554 00:28:14,060 --> 00:28:16,150 Vrei doar să-l numesc "dosar"? 555 00:28:16,150 --> 00:28:17,480 Să face mai ușor. 556 00:28:17,480 --> 00:28:26,752 Deci, ce e fopen-- nostru încercare de ieșire va fi? 557 00:28:26,752 --> 00:28:36,130 Spune-i "Bună ziua". 558 00:28:36,130 --> 00:28:37,810 Și ceea ce este modul nostru? 559 00:28:37,810 --> 00:28:39,764 560 00:28:39,764 --> 00:28:41,055 Ce facem în acest dosar? 561 00:28:41,055 --> 00:28:42,676 562 00:28:42,676 --> 00:28:43,500 >> Audiența: Citiți. 563 00:28:43,500 --> 00:28:44,401 564 00:28:44,401 --> 00:28:44,900 Scrierea. 565 00:28:44,900 --> 00:28:46,191 SPEAKER 1: Vă scriem pentru ea. 566 00:28:46,191 --> 00:28:47,360 567 00:28:47,360 --> 00:28:47,860 Lovely. 568 00:28:47,860 --> 00:28:50,330 569 00:28:50,330 --> 00:28:52,860 OK, deci avem acest fișier acum. 570 00:28:52,860 --> 00:28:54,920 571 00:28:54,920 --> 00:28:56,212 Ce trebuie să facem? 572 00:28:56,212 --> 00:28:57,420 Audiența: Verificați dacă este nul. 573 00:28:57,420 --> 00:28:59,820 SPEAKER 1: Verificați dacă este null-- exact. 574 00:28:59,820 --> 00:29:01,980 Asta îmi place să aud. 575 00:29:01,980 --> 00:29:05,930 Asta ar trebui să fie automată, în special destul de mult din acest punct de pe. 576 00:29:05,930 --> 00:29:07,530 577 00:29:07,530 --> 00:29:10,950 Dacă începeți segfaulting, probabil că nu a verifica pentru nul undeva. 578 00:29:10,950 --> 00:29:12,480 De nouă ori din zece, e Va fi eroare dumneavoastră. 579 00:29:12,480 --> 00:29:15,400 Deci, dacă ați putea obține doar în obicei, verificați întotdeauna dacă e nul, 580 00:29:15,400 --> 00:29:18,150 viața ta va fi frumos și easy-- sau mai usor. 581 00:29:18,150 --> 00:29:19,480 >> Deci, verificați pentru a vedea dacă e nul. 582 00:29:19,480 --> 00:29:21,200 583 00:29:21,200 --> 00:29:24,820 Deci, dacă nu e nul, care este ceea ce este egal cu Bang-ului 584 00:29:24,820 --> 00:29:26,784 means-- nu null-- este valabil. 585 00:29:26,784 --> 00:29:27,700 Ce vrem să facem? 586 00:29:27,700 --> 00:29:29,750 587 00:29:29,750 --> 00:29:31,570 Vrem doar să le imprimați la acel fișier, nu? 588 00:29:31,570 --> 00:29:32,923 Deci, ce vom folosi? 589 00:29:32,923 --> 00:29:34,092 >> Audiența: fprintf 590 00:29:34,092 --> 00:29:36,800 >> SPEAKER 1: minunat Fprintf--. 591 00:29:36,800 --> 00:29:38,150 592 00:29:38,150 --> 00:29:44,000 Și fprintf nevoie de doi arguments-- în cazul în care este de gând și ceea ce ne dorim imprimate. 593 00:29:44,000 --> 00:29:45,820 Deci, care e primul? 594 00:29:45,820 --> 00:29:46,570 În cazul în care se merge? 595 00:29:46,570 --> 00:29:47,490 >> Audiența: File. 596 00:29:47,490 --> 00:29:48,785 >> SPEAKER 1: Se va la dosar. 597 00:29:48,785 --> 00:29:49,784 598 00:29:49,784 --> 00:29:50,950 Și ce ne dorim tipărite? 599 00:29:50,950 --> 00:29:52,900 600 00:29:52,900 --> 00:29:58,065 "Bună ziua, lume!" 601 00:29:58,065 --> 00:29:58,565 Bine. 602 00:29:58,565 --> 00:30:03,670 Avem o ultimă thing-- un alt mare paradigmă aici. 603 00:30:03,670 --> 00:30:04,479 604 00:30:04,479 --> 00:30:05,145 Audiența: Închide. 605 00:30:05,145 --> 00:30:05,853 SPEAKER 1: Închide. 606 00:30:05,853 --> 00:30:09,990 607 00:30:09,990 --> 00:30:10,540 Acolo te duci. 608 00:30:10,540 --> 00:30:13,384 >> Audiența: Este acest lucru se întâmplă dacă fișierul este nul? 609 00:30:13,384 --> 00:30:15,050 SPEAKER 1: Nu, acest lucru este în cazul în care nu e nul. 610 00:30:15,050 --> 00:30:16,881 Audiența: Oh, dacă e not-- OK. 611 00:30:16,881 --> 00:30:21,728 612 00:30:21,728 --> 00:30:25,410 Pentru fopen și apoi două argumente care merg în interiorul, 613 00:30:25,410 --> 00:30:27,655 ce primul argument medie din nou? 614 00:30:27,655 --> 00:30:30,392 >> SPEAKER 1: Argumentul este la fel ca numele fișierului 615 00:30:30,392 --> 00:30:31,350 pe care doriți să ajungeți. 616 00:30:31,350 --> 00:30:36,020 Deci, după ce aceasta ruleaza, v-ar au unele fișier numit "hello" 617 00:30:36,020 --> 00:30:38,320 care a avut "Bună ziua, lume", în cadrul acestuia. 618 00:30:38,320 --> 00:30:38,820 Asta e tot. 619 00:30:38,820 --> 00:30:39,500 Doar numele. 620 00:30:39,500 --> 00:30:42,685 621 00:30:42,685 --> 00:30:48,650 >> Audiența: Și din moment ce este scris, fișier nu trebuie să existe deja. 622 00:30:48,650 --> 00:30:49,675 Este că ceea ce ai spus? 623 00:30:49,675 --> 00:30:50,410 >> SPEAKER 1: Corect. 624 00:30:50,410 --> 00:30:50,910 Exact. 625 00:30:50,910 --> 00:30:53,110 626 00:30:53,110 --> 00:30:55,839 În cazul în care "Hello" ca un fișier nu există încă, e 627 00:30:55,839 --> 00:30:58,380 va crea un fișier numit Buna ziua "și scrie pentru el pentru tine. 628 00:30:58,380 --> 00:30:59,631 629 00:30:59,631 --> 00:31:03,610 >> Audiența: Când spui Programul a scris la dosar, 630 00:31:03,610 --> 00:31:08,075 de ce ai scrie "dosar" în loc de numele fișierului și fprintf-- 631 00:31:08,075 --> 00:31:13,600 >> SPEAKER 1: Pentru că în acest caz, avem că FILE-- mare tot în stele caps--, 632 00:31:13,600 --> 00:31:14,260 fișier. 633 00:31:14,260 --> 00:31:17,370 Deci, este un pointer la dosar că vorbești. 634 00:31:17,370 --> 00:31:19,930 Acesta este modul în care ne-am referi la ea. 635 00:31:19,930 --> 00:31:24,850 Deci, în acest caz, pot gândi la aha file--, 636 00:31:24,850 --> 00:31:31,271 putem folosi asta: fișier aici se referă la deschiderea "Hello" 637 00:31:31,271 --> 00:31:32,145 și anunțându-l scrie. 638 00:31:32,145 --> 00:31:34,728 >> Audiența: Putem pune un "Hello" în schimb [? de doar?] f dosar? 639 00:31:34,728 --> 00:31:40,160 SPEAKER 1: Nu, pentru că "Hello" trebuie să fie deschis și inscriptibil. 640 00:31:40,160 --> 00:31:41,820 641 00:31:41,820 --> 00:31:45,980 Fișier aici este ca un indicator care spune OK, ne-am 642 00:31:45,980 --> 00:31:49,190 au această hello-- file-- care ne uitam la. 643 00:31:49,190 --> 00:31:50,680 Acesta a fost deschis. 644 00:31:50,680 --> 00:31:52,140 Și vom scrie la ea. 645 00:31:52,140 --> 00:31:55,130 Dacă tocmai ați folosi "Bună ziua", care este încapsulat în el. 646 00:31:55,130 --> 00:31:56,846 Deci, o să sperii. 647 00:31:56,846 --> 00:31:58,590 648 00:31:58,590 --> 00:32:00,300 Adică, ai putea fi numit-o. 649 00:32:00,300 --> 00:32:03,960 Ai fi putut face dosar, stele, "Hello", este echivalent cu cel. 650 00:32:03,960 --> 00:32:07,840 Dar ideea este că nevoie de un pointer stea fișier în ordine 651 00:32:07,840 --> 00:32:09,281 pentru a putea utiliza aceste funcții. 652 00:32:09,281 --> 00:32:11,280 Audiența: Ai putea să faci fișier, stele, dosar, "Hello" 653 00:32:11,280 --> 00:32:13,113 sau aveți de a pune stele fișier, fișier de aceasta? 654 00:32:13,113 --> 00:32:16,330 SPEAKER 1: Ai putea face dosar, stea, "Hello". 655 00:32:16,330 --> 00:32:19,790 Puteți schimba acest lucru indiferent de numele pe care doriți. 656 00:32:19,790 --> 00:32:22,114 E complet arbitrară ceea ce acest nume este. 657 00:32:22,114 --> 00:32:23,179 658 00:32:23,179 --> 00:32:24,220 Puteți numi nimic. 659 00:32:24,220 --> 00:32:25,501 660 00:32:25,501 --> 00:32:28,020 Nume ea zboară spaghete, dacă vrei. 661 00:32:28,020 --> 00:32:29,690 >> Audiența: Ce este "W" in ghilimele pentru? 662 00:32:29,690 --> 00:32:31,540 >> SPEAKER 1: "W" este doar modul. 663 00:32:31,540 --> 00:32:33,170 Deci ne scriem pentru acest fișier. 664 00:32:33,170 --> 00:32:34,410 665 00:32:34,410 --> 00:32:35,320 Toată lumea bine? 666 00:32:35,320 --> 00:32:36,227 Clar? 667 00:32:36,227 --> 00:32:36,981 Da. 668 00:32:36,981 --> 00:32:40,365 >> Audiența: Deci, atunci când scrie acest fișier, unde ne apoi găsi acel fișier? 669 00:32:40,365 --> 00:32:43,820 >> SPEAKER 1: Va fi în aceeași director că ești prezent în. 670 00:32:43,820 --> 00:32:45,650 671 00:32:45,650 --> 00:32:48,880 Dacă sunteți în PSET trei și aveți acest lucru, în termen de PSET ta 672 00:32:48,880 --> 00:32:52,600 trei dosar va fi acest fișier numit "Hello". 673 00:32:52,600 --> 00:32:53,160 Rece? 674 00:32:53,160 --> 00:32:53,757 Toată lumea bine? 675 00:32:53,757 --> 00:32:55,840 Mă simt ca și cum ești asistent aceasta, care este mare. 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 Deci, înapoi la show-- meu diapozitiv Îmi place când lucrurile funcționează. 679 00:33:05,960 --> 00:33:08,674 OK, pointers-- Sunteti voi entuziasmat? 680 00:33:08,674 --> 00:33:09,465 Indicii sunt mari. 681 00:33:09,465 --> 00:33:11,581 682 00:33:11,581 --> 00:33:13,580 Ei iau un pic să-și încheie în jurul valorii de cap. 683 00:33:13,580 --> 00:33:15,288 Acesta este al doilea meu an indicii de predare. 684 00:33:15,288 --> 00:33:16,850 Și cred că în cele din urmă prins. 685 00:33:16,850 --> 00:33:18,650 Așa că, dacă lupta, e OK. 686 00:33:18,650 --> 00:33:19,940 687 00:33:19,940 --> 00:33:24,070 Așa cum am spus mai înainte, poze cu desen ajută foarte mult cu lucruri în CS, 688 00:33:24,070 --> 00:33:27,400 la fel de mult ca și cred că oamenii au tendința de să se gândească oh, suntem la un calculator. 689 00:33:27,400 --> 00:33:28,399 Ar trebui doar cod. 690 00:33:28,399 --> 00:33:30,190 Imagini de desen No-- te va ajuta cu adevărat. 691 00:33:30,190 --> 00:33:32,773 Și eu într-adevăr, va incurajam sa robinet în partea ta kindergartner 692 00:33:32,773 --> 00:33:35,010 și scoate creioane colorate sau markere și egalitate. 693 00:33:35,010 --> 00:33:36,110 Pentru că vă va ajuta. 694 00:33:36,110 --> 00:33:39,380 Și dacă mă vezi la orele de birou, am va fi transportă în jurul valorii de teancuri de hârtie 695 00:33:39,380 --> 00:33:41,580 cu pixuri desen lucrurile. 696 00:33:41,580 --> 00:33:44,370 >> Deci, în special cu pointers-- deseneze. 697 00:33:44,370 --> 00:33:47,970 Și eu sunt sigur că vom fapt de gând să fi desen cateva poze aici. 698 00:33:47,970 --> 00:33:51,270 >> Deci, voi Trebuie ca toți să vadă Binky, acest lucru claymation cool. 699 00:33:51,270 --> 00:33:54,720 Și credem că e foarte amuzant, atunci când el explodează într-o grămadă de piese. 700 00:33:54,720 --> 00:33:56,280 701 00:33:56,280 --> 00:33:57,755 E un comic de clasă. 702 00:33:57,755 --> 00:34:02,140 703 00:34:02,140 --> 00:34:05,900 C [inaudibil] această capacitate mare a putea controla memorie. 704 00:34:05,900 --> 00:34:10,090 Si este unul din lucrurile pe care într-adevăr face un astfel de limbaj puternic. 705 00:34:10,090 --> 00:34:13,469 Dar cu o mare putere vine o mare responsabilitate. 706 00:34:13,469 --> 00:34:16,230 Și lucruri nebunești se poate intampla dacă nu ești atent. 707 00:34:16,230 --> 00:34:18,560 Deci, atunci când utilizați indicii, doriți să faceți 708 00:34:18,560 --> 00:34:21,440 sigur că ați înțeles într-adevăr exact ceea ce faci. 709 00:34:21,440 --> 00:34:25,530 Să sperăm că următoarea pic de timp va ajuta să înțelegeți cu adevărat 710 00:34:25,530 --> 00:34:27,850 indicii, cum să le folosească, și cum să le manipuleze. 711 00:34:27,850 --> 00:34:29,170 712 00:34:29,170 --> 00:34:33,460 >> Deci, memory-- Sunt sigur că ne-am văzut această diagramă înainte. 713 00:34:33,460 --> 00:34:38,540 Deci, aceasta este doar o simplă schemă de se pare ca lucrurile s-ar putea fi stocate memorie. 714 00:34:38,540 --> 00:34:43,145 Deci, va trebui, practic acestea tablouri imense de blocuri unul octet 715 00:34:43,145 --> 00:34:46,000 este ceea ce avem here-- ușoară trepte de câte unul de fiecare dată. 716 00:34:46,000 --> 00:34:51,810 Acest lucru este în hex [inaudibil] astfel încât blocuri de opt biți. 717 00:34:51,810 --> 00:34:55,510 Și fiecare bloc este asociată cu unele adresa hexazecimal. 718 00:34:55,510 --> 00:34:58,750 Deci, dacă vedeți vreodată 0x, că doar notating 719 00:34:58,750 --> 00:35:00,670 că este o adresă hexazecimală. 720 00:35:00,670 --> 00:35:03,970 Puteți să își asume acest lucru înseamnă unii adresa în memorie. 721 00:35:03,970 --> 00:35:06,935 Vorbim despre adresele de memorie ori de câte ori te văd hexazecimal. 722 00:35:06,935 --> 00:35:10,420 723 00:35:10,420 --> 00:35:14,630 >> Avem int sunt variabile, flotoare sunt variabile care stochează. 724 00:35:14,630 --> 00:35:16,260 Deci, int magazin int. 725 00:35:16,260 --> 00:35:17,430 Magazin flotoare plutește. 726 00:35:17,430 --> 00:35:20,260 Deci, avem, de asemenea, indicii că adresele de memorie magazin. 727 00:35:20,260 --> 00:35:21,660 Asta e un fel de cartografiere. 728 00:35:21,660 --> 00:35:24,240 Indicii sunt exclusiv pentru adresele de memorie. 729 00:35:24,240 --> 00:35:25,780 730 00:35:25,780 --> 00:35:27,292 Deci, asta e ca și cum tipul de acolo. 731 00:35:27,292 --> 00:35:29,550 732 00:35:29,550 --> 00:35:34,470 Aparatul este de 32 de biți, ceea ce înseamnă că adresa dvs. de memorie este de patru bytes. 733 00:35:34,470 --> 00:35:37,830 Deci, orice pointer-vă că aveți este, de asemenea, va fi de patru bytes. 734 00:35:37,830 --> 00:35:43,200 Sau dacă e de patru bytes, de memorie este de patru bytes. 735 00:35:43,200 --> 00:35:44,790 Indicii de memorie magazin. 736 00:35:44,790 --> 00:35:46,430 De aceea, sunt patru bytes. 737 00:35:46,430 --> 00:35:48,460 Cool-- vreau doar pentru a consolida asta. 738 00:35:48,460 --> 00:35:50,120 739 00:35:50,120 --> 00:35:52,220 >> Ar trebui să obțineți acest comic acum. 740 00:35:52,220 --> 00:35:55,040 Nu știu câți dintre voi sunt fani xkcd, dar îmi place xkcd. 741 00:35:55,040 --> 00:35:55,780 E minunat. 742 00:35:55,780 --> 00:35:57,290 743 00:35:57,290 --> 00:35:57,790 >> Bine. 744 00:35:57,790 --> 00:36:01,640 Deci, crearea de pointers-- după cum am spus, e destul de mult la fel ca orice altceva. 745 00:36:01,640 --> 00:36:02,930 Ai un tip. 746 00:36:02,930 --> 00:36:04,050 Ai un nume. 747 00:36:04,050 --> 00:36:04,810 Dreapta? 748 00:36:04,810 --> 00:36:10,410 Asta e ceea ce avem acolo. [? Hex?] Stele înseamnă că este un pointer, 749 00:36:10,410 --> 00:36:12,250 și apoi ce vrei să-i spunem. 750 00:36:12,250 --> 00:36:15,770 Deci, tipul reprezintă ceea ce se poate stoca. 751 00:36:15,770 --> 00:36:16,850 752 00:36:16,850 --> 00:36:17,990 În regulă? 753 00:36:17,990 --> 00:36:24,350 În același mod în care, dacă facem int, știm că suntem stocarea unui int acolo. 754 00:36:24,350 --> 00:36:25,990 755 00:36:25,990 --> 00:36:30,280 Cu un pointer, ea deține o adresă de memorie. 756 00:36:30,280 --> 00:36:34,240 Dar ce înseamnă that-- aici e în cazul în care un desen va veni la îndemână. 757 00:36:34,240 --> 00:36:36,170 758 00:36:36,170 --> 00:36:45,980 Deci, în acest caz, avem unele value-- să zicem patru. 759 00:36:45,980 --> 00:36:49,306 Patru este la adresa una. 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 >> Aceasta prima una înseamnă aici că este un pointer 2x. 763 00:36:56,170 --> 00:36:56,740 Dreapta? 764 00:36:56,740 --> 00:36:57,628 E un pointer de x. 765 00:36:57,628 --> 00:36:58,852 766 00:36:58,852 --> 00:37:00,940 X poate fi ceva, orice. 767 00:37:00,940 --> 00:37:01,960 768 00:37:01,960 --> 00:37:05,130 Oricare ar fi x este-- spune x este de patru. 769 00:37:05,130 --> 00:37:07,280 Se va stoca adresa de memorie aici. 770 00:37:07,280 --> 00:37:12,260 Deci, int, stele, X- acest lucru este un alt slot de la memory-- 771 00:37:12,260 --> 00:37:13,590 cine știe ce e asta. 772 00:37:13,590 --> 00:37:15,430 Dar va pentru a stoca o adresă aici. 773 00:37:15,430 --> 00:37:27,040 Deci, acest lucru ar fi like-- în acest caz, Oricare ar fi, 774 00:37:27,040 --> 00:37:32,630 sunt stocate la 0x1-- orice este stocat la adresa pe care pointer noastră deține, 775 00:37:32,630 --> 00:37:35,280 trebuie să se potrivească cu ceea ce am desemnat. 776 00:37:35,280 --> 00:37:40,330 Deci, la 0x1, în acest caz, aceasta este de x. 777 00:37:40,330 --> 00:37:42,500 778 00:37:42,500 --> 00:37:49,340 Acest lucru poate fi doar o vreodată int în timp ce utilizați acest lucru. 779 00:37:49,340 --> 00:37:52,950 >> În mod similar, dacă avem un alt 1y, indiferent de 780 00:37:52,950 --> 00:37:59,130 adresă este stocată cu un y are să fie un fel lucru char-- cu z. 781 00:37:59,130 --> 00:38:05,840 În același mod, ori de câte ori încercați și de a face INTx este egal cu 0,4, 782 00:38:05,840 --> 00:38:09,275 este de gând să țipe la tine și să fie ca nu, ai spus că vrei un int. 783 00:38:09,275 --> 00:38:10,525 Acest lucru se presupune a fi un int. 784 00:38:10,525 --> 00:38:11,900 Nu mai încerca să-l facă un flotor. 785 00:38:11,900 --> 00:38:14,150 >> Deci, lasa lucrurile sa fie ceea ce vor să fie. 786 00:38:14,150 --> 00:38:15,159 787 00:38:15,159 --> 00:38:16,200 Să lucrurile să fie ei înșiși. 788 00:38:16,200 --> 00:38:19,380 789 00:38:19,380 --> 00:38:23,450 Deci, mare lucru este doar indiferent de tipul de pointer 790 00:38:23,450 --> 00:38:26,101 aceasta este, că e singurul lucru pe care il pot stoca acolo. 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 Cu practica, ca și în cazul Săptămâna trecută, tot 794 00:38:31,160 --> 00:38:32,817 pare într-adevăr un fel de abstract. 795 00:38:32,817 --> 00:38:34,150 Noi o să facem unele practici. 796 00:38:34,150 --> 00:38:36,760 Acesta ar trebui să facă mai mult sens. 797 00:38:36,760 --> 00:38:44,580 >> Deci, referire și dereferencing-- e foarte important pentru a obține aceste drept. 798 00:38:44,580 --> 00:38:46,630 Mai am pentru a actualiza fiecare acum și apoi. 799 00:38:46,630 --> 00:38:48,450 Și eu sunt la fel ca așteptare, pe care o vreau? 800 00:38:48,450 --> 00:38:56,080 Deci, ampersand va da de fapt vă de referință sau adresa de. 801 00:38:56,080 --> 00:39:00,100 Deci, se întoarce adresa din de memorie de care variabila este stocat. 802 00:39:00,100 --> 00:39:01,170 803 00:39:01,170 --> 00:39:07,020 Deci, o să se întoarcă de fapt pentru tine un hexazecimal, întrucât dereferencing aceasta 804 00:39:07,020 --> 00:39:10,641 este, de fapt de gând să vă dau datele care sunt stocate acolo. 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 Deci ne vom uita la un exemplu foarte repede, sau de fapt, următorul. 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 Deci, trebuie să ne gândim cu adevărat cu grijă despre asta. 811 00:39:21,790 --> 00:39:23,860 Deci, aici avem unele număr întreg de x. 812 00:39:23,860 --> 00:39:26,485 Am de gând să încerc și să tragă aceasta la cele mai bune de abilitățile mele. 813 00:39:26,485 --> 00:39:30,230 814 00:39:30,230 --> 00:39:32,410 Deci, vom avea acest slot de x. 815 00:39:32,410 --> 00:39:35,850 816 00:39:35,850 --> 00:39:37,315 Și e stocarea cinci. 817 00:39:37,315 --> 00:39:38,640 818 00:39:38,640 --> 00:39:40,090 Adresa sa este 0x4. 819 00:39:40,090 --> 00:39:41,920 820 00:39:41,920 --> 00:39:43,160 Rece? 821 00:39:43,160 --> 00:39:44,100 Toate bune. 822 00:39:44,100 --> 00:39:45,470 >> Deci, acum avem acest indicator. 823 00:39:45,470 --> 00:39:46,916 824 00:39:46,916 --> 00:39:47,990 A fost aici. 825 00:39:47,990 --> 00:39:52,130 826 00:39:52,130 --> 00:39:57,560 Și ampersand ne dă adresa de ceva. 827 00:39:57,560 --> 00:40:00,780 Așa că, în acest caz, este adresa de x. 828 00:40:00,780 --> 00:40:01,875 Care este adresa lui x? 829 00:40:01,875 --> 00:40:05,660 830 00:40:05,660 --> 00:40:12,590 04-- și acest indicator este la 0x08. 831 00:40:12,590 --> 00:40:14,490 832 00:40:14,490 --> 00:40:14,990 Rece? 833 00:40:14,990 --> 00:40:16,570 834 00:40:16,570 --> 00:40:21,570 Deci, vă puteți gândi despre acest pointer, 04, doar punctele aici. 835 00:40:21,570 --> 00:40:22,840 836 00:40:22,840 --> 00:40:25,740 Și ei numesc indicii pentru că așa cum obține mai mult în acest lucru, 837 00:40:25,740 --> 00:40:28,450 te duci sa vezi ce indică spre lucrurile. 838 00:40:28,450 --> 00:40:31,470 Și un bloc arătând spre un alt bloc va face mult mai mult sens. 839 00:40:31,470 --> 00:40:32,760 840 00:40:32,760 --> 00:40:33,890 Deci, aici sunt două. 841 00:40:33,890 --> 00:40:38,230 Și apoi avem o copie, care este 0x0C what--. 842 00:40:38,230 --> 00:40:41,290 843 00:40:41,290 --> 00:40:43,420 Și o să dereference indicatorul nostru. 844 00:40:43,420 --> 00:40:46,790 >> Deci, ceea ce se spune este OK, aici e indicatorul nostru. 845 00:40:46,790 --> 00:40:53,090 Valoarea pe care o stochează este 0x04, Și ce se spune este să mergeți la această adresă 846 00:40:53,090 --> 00:40:54,300 și spune-mi ce e în ea. 847 00:40:54,300 --> 00:40:55,520 848 00:40:55,520 --> 00:40:57,710 Așa că e eficient ceea ce acest sageata face. 849 00:40:57,710 --> 00:40:58,750 850 00:40:58,750 --> 00:41:01,280 Vă puteți gândi la asta ca steaua ta. 851 00:41:01,280 --> 00:41:05,410 Deci, OK, atunci când facem stea, înseamnă urmeze. 852 00:41:05,410 --> 00:41:06,810 Du-te la această adresă. 853 00:41:06,810 --> 00:41:11,430 Și asta e de fapt doar în urma acest săgeată pentru această bucată de memorie. 854 00:41:11,430 --> 00:41:15,380 Și să ne dea ce e în ea, care este de 5. 855 00:41:15,380 --> 00:41:18,840 De aceea copie noastră este egal cu 5. 856 00:41:18,840 --> 00:41:20,120 Asta face sens? 857 00:41:20,120 --> 00:41:22,769 Are cineva nevoie de mine pentru a merge prin că din nou, sau mai încet? 858 00:41:22,769 --> 00:41:24,560 Vrei să mergi prin aceasta încă o dată? 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 Noi o să-l aspira din nou. 862 00:41:28,840 --> 00:41:31,930 863 00:41:31,930 --> 00:41:37,205 Când vom începe, suntem cu toții de acord că trebuie unele bucată de memorie care este o variabilă 864 00:41:37,205 --> 00:41:40,890 x că ne-am stabilit egală cu 5. 865 00:41:40,890 --> 00:41:42,910 Noi nu controlăm în cazul în care acesta este în memorie. 866 00:41:42,910 --> 00:41:45,520 Deci, acest loc este doar atribuit în mod arbitrar. 867 00:41:45,520 --> 00:41:47,770 868 00:41:47,770 --> 00:41:48,731 Bine acolo? 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 Apoi am inițializa un pointer la un int. 872 00:41:53,330 --> 00:41:56,900 De aceea este permis să indice x pentru că avem o int aici. 873 00:41:56,900 --> 00:42:00,840 Avem o altă bucată de memorie, deoarece acest indicator 874 00:42:00,840 --> 00:42:03,485 este o variabilă la fel ca orice altceva. 875 00:42:03,485 --> 00:42:06,615 Este atribuit în mod arbitrar un spațiu în memorie. 876 00:42:06,615 --> 00:42:07,630 877 00:42:07,630 --> 00:42:10,830 Și ceea ce se stochează este adresa de x. 878 00:42:10,830 --> 00:42:13,200 Ampersand înseamnă adresa de x. 879 00:42:13,200 --> 00:42:14,575 Deci, ce este adresa lui x? 880 00:42:14,575 --> 00:42:19,179 881 00:42:19,179 --> 00:42:20,614 >> Audiența: E zero-- 882 00:42:20,614 --> 00:42:21,280 SPEAKER 1: 0x04. 883 00:42:21,280 --> 00:42:24,350 884 00:42:24,350 --> 00:42:25,940 Deci, then-- ultima. 885 00:42:25,940 --> 00:42:30,650 Avem din nou unele copy-- doar o altă variabilă. 886 00:42:30,650 --> 00:42:32,520 Așa că haideți să atribuie un loc arbitrar. 887 00:42:32,520 --> 00:42:35,260 888 00:42:35,260 --> 00:42:38,080 Și ne-am dereference indicatorul nostru. 889 00:42:38,080 --> 00:42:42,490 Vedeta înseamnă Du-te la adresă stocată în pointer mea. 890 00:42:42,490 --> 00:42:44,480 Spune-mi ce-i acolo. 891 00:42:44,480 --> 00:42:47,290 Deci adresa stocat în pointer nostru este de 0x04. 892 00:42:47,290 --> 00:42:49,070 893 00:42:49,070 --> 00:42:51,310 Așa că mergem la acea adresă. 894 00:42:51,310 --> 00:42:52,402 895 00:42:52,402 --> 00:42:54,590 Este arătând spre acea adresa. 896 00:42:54,590 --> 00:42:57,481 Ce e în interiorul acestui bloc de memorie? 897 00:42:57,481 --> 00:42:57,980 Este un cinci. 898 00:42:57,980 --> 00:42:59,210 899 00:42:59,210 --> 00:43:01,650 Deci, asta e ceea ce ne-am atribui copie nostru. 900 00:43:01,650 --> 00:43:03,430 901 00:43:03,430 --> 00:43:04,860 Toată lumea bine? 902 00:43:04,860 --> 00:43:05,360 Rece. 903 00:43:05,360 --> 00:43:07,010 904 00:43:07,010 --> 00:43:08,330 Poze Again--. 905 00:43:08,330 --> 00:43:19,750 906 00:43:19,750 --> 00:43:25,200 >> Deci, de urmărire a sumelor here-- eu sunt de gând să lase voi gândi la asta. 907 00:43:25,200 --> 00:43:26,550 908 00:43:26,550 --> 00:43:27,750 Putem trage o altă imagine. 909 00:43:27,750 --> 00:43:31,260 Dar vreau să încercați și rațiune prin acest lucru pe cont propriu timp de un minut. 910 00:43:31,260 --> 00:44:01,430 911 00:44:01,430 --> 00:44:04,149 >> Din moment ce ei nu au dat ne o adresă exemplu, 912 00:44:04,149 --> 00:44:06,940 Mă duc să fac X- ampersand care ar trebui să ajute l conduce acasă. 913 00:44:06,940 --> 00:44:07,950 Ampersand înseamnă adresă. 914 00:44:07,950 --> 00:44:09,540 915 00:44:09,540 --> 00:44:12,360 >> Deci, în primul unul, toată lumea du-te cu prima linie. 916 00:44:12,360 --> 00:44:15,690 Unele x set de five-- unele Slot aleatoriu în memorie. 917 00:44:15,690 --> 00:44:17,660 918 00:44:17,660 --> 00:44:23,200 Pointer stea int este egal la adresa lui x, nu? 919 00:44:23,200 --> 00:44:28,180 Int pointer stea creează acest bloc, numește pointer, 920 00:44:28,180 --> 00:44:30,650 și-l atribuie adresa de x. 921 00:44:30,650 --> 00:44:32,750 922 00:44:32,750 --> 00:44:34,230 Sunt groaznic la ampersand. 923 00:44:34,230 --> 00:44:36,460 924 00:44:36,460 --> 00:44:40,550 >> Acum ce facem este să spunem OK, dereference indicatorul nostru. 925 00:44:40,550 --> 00:44:42,760 Deci, vom merge OK, ce e în indicatorul nostru? 926 00:44:42,760 --> 00:44:44,820 E ampersand de x. 927 00:44:44,820 --> 00:44:49,400 Du-te la ampersand x și realocați-l. 928 00:44:49,400 --> 00:44:51,620 929 00:44:51,620 --> 00:44:57,480 >> Deci, acum, ampersand X va fi de 35. 930 00:44:57,480 --> 00:45:01,540 931 00:45:01,540 --> 00:45:05,174 Deci, practic, dacă sunteți dereferencing, te duci OK. 932 00:45:05,174 --> 00:45:07,090 Vei fi de desen imagini de acest gen. 933 00:45:07,090 --> 00:45:09,423 Vei fi de desen sagetile peste acolo unde este. 934 00:45:09,423 --> 00:45:16,030 Deci, du-te la acest slot în memorie și fie da-mi că valoarea înapoi, sau să modifice o. 935 00:45:16,030 --> 00:45:21,620 În acest caz, pentru că suntem la acest valoare, suntem o atribuire să fie de 35. 936 00:45:21,620 --> 00:45:24,700 Întrucât în ​​ultimul unul, dacă observați, noi 937 00:45:24,700 --> 00:45:27,680 au fost atribuirea ceea ce a fost aici pentru altceva. 938 00:45:27,680 --> 00:45:30,450 939 00:45:30,450 --> 00:45:32,245 >> Deci, ei au acest tabel minunat. 940 00:45:32,245 --> 00:45:35,000 941 00:45:35,000 --> 00:45:36,890 Nu e așa de rău. 942 00:45:36,890 --> 00:45:37,970 Voi lucra pe ea. 943 00:45:37,970 --> 00:45:39,640 Am de gând să-l scoată de pe placa. 944 00:45:39,640 --> 00:45:41,306 Noi o să-l completați împreună, bine? 945 00:45:41,306 --> 00:45:42,290 946 00:45:42,290 --> 00:45:45,530 Deci, apuca unele de hârtie, apuca un partener, începe să lucreze. 947 00:45:45,530 --> 00:45:53,897 948 00:45:53,897 --> 00:45:55,605 Am de gând pentru a obține o bucată mare de cretă. 949 00:45:55,605 --> 00:45:56,624 950 00:45:56,624 --> 00:45:58,150 Pentru că va fi o mulțime. 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 Să începem cu primul rând. 957 00:48:12,890 --> 00:48:14,070 958 00:48:14,070 --> 00:48:16,970 Vom începe acolo, atunci voi poate lucra poate prin ceva mai mult. 959 00:48:16,970 --> 00:48:17,870 OK. 960 00:48:17,870 --> 00:48:19,810 un egal ori b c astfel încât ceea ce este o? 961 00:48:19,810 --> 00:48:21,420 962 00:48:21,420 --> 00:48:23,260 Nu este o întrebare capcană, promit. 963 00:48:23,260 --> 00:48:24,440 >> STUDENT: 4 ori 5. 964 00:48:24,440 --> 00:48:25,420 >> PROFESORUL: 4 ori 5. 965 00:48:25,420 --> 00:48:25,920 20. 966 00:48:25,920 --> 00:48:26,730 Deci, ce e 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 >> PROFESORUL: Ș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 apoi acest lucru este doar de gând să fi ampersand o, ampersand b, 974 00:48:35,960 --> 00:48:38,575 ampersand C, nu? 975 00:48:38,575 --> 00:48:39,728 976 00:48:39,728 --> 00:48:40,596 Nu-i rău. 977 00:48:40,596 --> 00:48:42,081 E destul de simplu. 978 00:48:42,081 --> 00:48:42,580 OK. 979 00:48:42,580 --> 00:48:44,300 Deci, pe următoarea. 980 00:48:44,300 --> 00:48:48,725 Un egal ori și c, în cazul în care oricine a fost familiarizat cu asta. 981 00:48:48,725 --> 00:48:49,812 982 00:48:49,812 --> 00:48:53,300 Este de toată lumea familiar cu vremurile egal? 983 00:48:53,300 --> 00:49:00,105 OK, toate acestea means-- acest lucru este prescurtare pentru un egal de ori c. 984 00:49:00,105 --> 00:49:04,840 Puteți, de asemenea, o face cu diviziune, cu plus, cu scădere. 985 00:49:04,840 --> 00:49:12,130 Puteți face un egal la egal, sau un plus este egal cu c înseamnă o este egal cu un plus c, un minus egal 986 00:49:12,130 --> 00:49:15,190 c ar fi un egal un minus c. 987 00:49:15,190 --> 00:49:16,690 E doar zahăr sintactic. 988 00:49:16,690 --> 00:49:19,380 989 00:49:19,380 --> 00:49:24,140 >> Așa că, în acest caz, o este egal cu ori și C-ne ce ar da? 990 00:49:24,140 --> 00:49:25,910 991 00:49:25,910 --> 00:49:28,186 Din nou, nu o întrebare capcană. 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 Are ceva se schimbe? 995 00:49:30,383 --> 00:49:31,790 996 00:49:31,790 --> 00:49:32,290 Nu. 997 00:49:32,290 --> 00:49:37,380 998 00:49:37,380 --> 00:49:39,850 Poate că va obține în final, mai bine la ampersand mele. 999 00:49:39,850 --> 00:49:42,047 >> STUDENT: OK, îmi pare rău, cum ai ajuns la 100? 1000 00:49:42,047 --> 00:49:42,630 PROFESOR: OK. 1001 00:49:42,630 --> 00:49:46,594 Deci o este egal cu o ori c, astfel încât ori și c. 1002 00:49:46,594 --> 00:49:48,510 STUDENT: Oh, pe care îl utilizați o pentru previous-- 1003 00:49:48,510 --> 00:49:49,135 PROFESOR: Da. 1004 00:49:49,135 --> 00:49:51,450 Deci, acestea sunt valorile noastre cele mai recente. 1005 00:49:51,450 --> 00:49:53,990 Acestea sunt ceea ce ar trebui să fie folosind ca ne-am deplasa în jos, OK. 1006 00:49:53,990 --> 00:49:57,290 1007 00:49:57,290 --> 00:50:01,520 Așa că, b este singurul lucru schimbare, nu? 1008 00:50:01,520 --> 00:50:02,910 Deci, haideți să completați în orice altceva. 1009 00:50:02,910 --> 00:50:09,110 1010 00:50:09,110 --> 00:50:11,330 B. Ce este b va fi? 1011 00:50:11,330 --> 00:50:13,020 1012 00:50:13,020 --> 00:50:14,140 Pentru a fi sau a nu fi. 1013 00:50:14,140 --> 00:50:18,680 1014 00:50:18,680 --> 00:50:20,240 Deci, ce este aceasta face? 1015 00:50:20,240 --> 00:50:21,605 Care este steaua pa faci? 1016 00:50:21,605 --> 00:50:23,280 1017 00:50:23,280 --> 00:50:25,350 >> STUDENT: Cod la locul de pa. 1018 00:50:25,350 --> 00:50:26,390 1019 00:50:26,390 --> 00:50:27,480 >> STUDENT: Nu, nu chiar. 1020 00:50:27,480 --> 00:50:29,470 Deci, aceasta este o referință d. 1021 00:50:29,470 --> 00:50:31,580 >> STUDENT: Deci b este valoarea mână de pa. 1022 00:50:31,580 --> 00:50:37,340 >> PROFESORUL: Da, așa este pa adresa unui, nu? 1023 00:50:37,340 --> 00:50:42,430 Deci, se spune du-te unde a este stocate și dau acea valoare. 1024 00:50:42,430 --> 00:50:43,884 Deci, ce este 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 Perfect. 1028 00:50:47,450 --> 00:50:49,879 OK, deci PC-ul este ceea ce se schimbă. 1029 00:50:49,879 --> 00:50:51,170 Orice altceva rămâne la fel. 1030 00:50:51,170 --> 00:50:57,160 1031 00:50:57,160 --> 00:50:58,620 Ce este PC-ul va fi? 1032 00:50:58,620 --> 00:51:00,770 1033 00:51:00,770 --> 00:51:01,580 Cesiune simplu. 1034 00:51:01,580 --> 00:51:03,520 1035 00:51:03,520 --> 00:51:05,990 PC-ul este egal cu pa, pa și ceea ce este? 1036 00:51:05,990 --> 00:51:07,049 >> STUDENT: ampersand o. 1037 00:51:07,049 --> 00:51:07,840 PROFESOR: Perfect. 1038 00:51:07,840 --> 00:51:09,490 1039 00:51:09,490 --> 00:51:10,740 Acum ne apropiem de interesant. 1040 00:51:10,740 --> 00:51:12,310 1041 00:51:12,310 --> 00:51:15,230 OK, hai sparge asta jos. 1042 00:51:15,230 --> 00:51:21,110 În primul rând, ceea ce este ori b c, pentru că asta e partea cea mai ușoară de asta, nu? 1043 00:51:21,110 --> 00:51:22,360 Ori B C este-- 1044 00:51:22,360 --> 00:51:23,320 >> STUDENT: 500. 1045 00:51:23,320 --> 00:51:28,880 >> PROFESORUL: Da, așa ceea ce face aceasta, 1046 00:51:28,880 --> 00:51:33,705 Dacă e pb stele, ce se schimbă? 1047 00:51:33,705 --> 00:51:35,320 1048 00:51:35,320 --> 00:51:37,242 >> STUDENT: Ce este în the-- 1049 00:51:37,242 --> 00:51:38,200 PROFESORUL: Ce e în b? 1050 00:51:38,200 --> 00:51:41,340 STUDENT: Ce este în spațiul care pb indică spre. 1051 00:51:41,340 --> 00:51:43,406 PROFESORUL: Și Pb indică sa-- 1052 00:51:43,406 --> 00:51:43,905 STUDENT: B. 1053 00:51:43,905 --> 00:51:46,740 PROFESORUL: B. Deci singura lucru schimbare este b, dreptate. 1054 00:51:46,740 --> 00:51:50,800 Deci, b ori c, 500. 1055 00:51:50,800 --> 00:51:52,367 Deci, asta e ceea ce se schimbă acum. 1056 00:51:52,367 --> 00:51:59,091 1057 00:51:59,091 --> 00:51:59,590 Rece. 1058 00:51:59,590 --> 00:52:00,340 1059 00:52:00,340 --> 00:52:00,840 Lovely. 1060 00:52:00,840 --> 00:52:01,905 Voi fac mare. 1061 00:52:01,905 --> 00:52:03,650 1062 00:52:03,650 --> 00:52:06,740 Bine, de rupere asta jos. 1063 00:52:06,740 --> 00:52:08,050 1064 00:52:08,050 --> 00:52:09,630 C se schimbă, nu? 1065 00:52:09,630 --> 00:52:11,530 Astfel încât să putem umple în orice altceva. 1066 00:52:11,530 --> 00:52:12,540 1067 00:52:12,540 --> 00:52:13,205 Să vedem. 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 Știm că c este de gând să fie produs de două numere, nu? 1072 00:52:24,740 --> 00:52:26,290 1073 00:52:26,290 --> 00:52:27,980 Care sunt cele două numere, totuși? 1074 00:52:27,980 --> 00:52:28,970 >> STUDENT: A și C? 1075 00:52:28,970 --> 00:52:31,930 >> PROFESORUL: Deci o este drept pentru prima. 1076 00:52:31,930 --> 00:52:34,385 Deci ne d corelarea p de o, nu? 1077 00:52:34,385 --> 00:52:35,390 1078 00:52:35,390 --> 00:52:42,870 P de a puncte la un astfel știm că aceasta va fi de 100 de ori ce? 1079 00:52:42,870 --> 00:52:46,232 Ori ceea ce le face PC-ul la punct? 1080 00:52:46,232 --> 00:52:47,410 1081 00:52:47,410 --> 00:52:48,740 Indică o. 1082 00:52:48,740 --> 00:52:55,038 Deci 100 de ori 100 este de 10.000. 1083 00:52:55,038 --> 00:52:56,170 Are care face sens? 1084 00:52:56,170 --> 00:52:57,640 1085 00:52:57,640 --> 00:52:58,200 Rece. 1086 00:52:58,200 --> 00:53:00,500 Casa de întindere, băieți, ultimul rând. 1087 00:53:00,500 --> 00:53:01,190 OK. 1088 00:53:01,190 --> 00:53:02,160 Ce se schimbă aici? 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 PROFESORUL: A. Perfect, așa orice altceva poate rămâne la fel. 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 Și ceea ce este o? 1095 00:53:17,970 --> 00:53:23,610 1096 00:53:23,610 --> 00:53:26,060 Deci e ori ce? 1097 00:53:26,060 --> 00:53:27,120 Acest lucru este pb stele. 1098 00:53:27,120 --> 00:53:29,750 1099 00:53:29,750 --> 00:53:34,490 Deci, pb stea înseamnă aici e pb, puncte de Pb la 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 Deci avem 500 de ori 100. 1103 00:53:39,236 --> 00:53:41,758 Asta e 50.000. 1104 00:53:41,758 --> 00:53:43,216 Uau! 1105 00:53:43,216 --> 00:53:45,646 Uită-te la asta. 1106 00:53:45,646 --> 00:53:47,982 >> STUDENT: De ce avem & C pentru last-- 1107 00:53:47,982 --> 00:53:48,690 PROFESOR: Îmi pare rău. 1108 00:53:48,690 --> 00:53:50,080 STUDENT: Oh, OK. 1109 00:53:50,080 --> 00:53:51,600 PROFESORUL: Greșeala mea. 1110 00:53:51,600 --> 00:53:52,890 O mulțime de scris. 1111 00:53:52,890 --> 00:53:53,917 1112 00:53:53,917 --> 00:53:54,500 Toată lumea bine? 1113 00:53:54,500 --> 00:53:55,630 1114 00:53:55,630 --> 00:53:56,660 Nu prea rău, nu? 1115 00:53:56,660 --> 00:53:58,490 Doar nevoie de un pic în timp ce la locul de muncă prin intermediul. 1116 00:53:58,490 --> 00:54:01,080 Dacă îl rupe în jos, înțeleg ce fiecare parte 1117 00:54:01,080 --> 00:54:03,197 se referă sa-- ca cu tot ceea ce este, 1118 00:54:03,197 --> 00:54:05,780 yes-- se descompun la micul Probleme și apoi recombina, 1119 00:54:05,780 --> 00:54:07,345 și poți să faci unele lucruri minunat. 1120 00:54:07,345 --> 00:54:08,970 Nu sunt răspunsuri, dar am făcut asta. 1121 00:54:08,970 --> 00:54:10,324 1122 00:54:10,324 --> 00:54:11,115 Pointer aritmetică. 1123 00:54:11,115 --> 00:54:13,961 1124 00:54:13,961 --> 00:54:14,460 Ah. 1125 00:54:14,460 --> 00:54:15,510 Mâinile mele sunt toate calcaroase. 1126 00:54:15,510 --> 00:54:17,970 Deci, adăugarea sau scăderea int reglează indicatorul 1127 00:54:17,970 --> 00:54:21,890 în funcție de mărimea tipului de pointer. 1128 00:54:21,890 --> 00:54:22,940 1129 00:54:22,940 --> 00:54:28,390 Amintiți-vă cât de fiecare tip are o dimensiune diferită? 1130 00:54:28,390 --> 00:54:34,890 Deci, ca un dublu sau un lung lung este opt și int este de patru, dar char este una. 1131 00:54:34,890 --> 00:54:38,360 >> Deci, ce vrei să faci este-- un singur lucru să-și amintească 1132 00:54:38,360 --> 00:54:44,080 este doar cât de mult ta Valoarea indicatorului se schimbă de fapt 1133 00:54:44,080 --> 00:54:46,550 va depinde, pe de tip de pointer este. 1134 00:54:46,550 --> 00:54:50,820 1135 00:54:50,820 --> 00:54:51,820 Toată lumea buna cu aceasta? 1136 00:54:51,820 --> 00:54:52,760 Pot să-l ștergeți? 1137 00:54:52,760 --> 00:54:53,440 Suntem bine? 1138 00:54:53,440 --> 00:54:53,940 Minunat. 1139 00:54:53,940 --> 00:55:01,020 1140 00:55:01,020 --> 00:55:07,501 >> Deci, dacă avem unele pointer that-- acest lucru se întâmplă pentru că sunt be-- 1141 00:55:07,501 --> 00:55:08,834 gând să-l un pointer int face. 1142 00:55:08,834 --> 00:55:10,610 1143 00:55:10,610 --> 00:55:12,760 Se stochează acest lucru. 1144 00:55:12,760 --> 00:55:14,210 1145 00:55:14,210 --> 00:55:20,170 Dacă ar fi să spui pointer plus unu, ceea ce va face 1146 00:55:20,170 --> 00:55:23,420 este că va actualiza prin dimensiunea unei int 1147 00:55:23,420 --> 00:55:25,950 pentru că asta e tip de pointer este. 1148 00:55:25,950 --> 00:55:28,260 >> Cu C, totul este foarte strict și reglementată. 1149 00:55:28,260 --> 00:55:29,440 1150 00:55:29,440 --> 00:55:35,260 Int indicatorul se va actualiza prin cantitatea de spațiu int-ar lua. 1151 00:55:35,260 --> 00:55:36,260 Un int este de patru bytes. 1152 00:55:36,260 --> 00:55:37,650 1153 00:55:37,650 --> 00:55:39,060 >> Deci, ce s-ar transforma acest lucru în? 1154 00:55:39,060 --> 00:55:40,876 1155 00:55:40,876 --> 00:55:44,390 Ești pur și simplu adăugarea de patru într-o formă acest lucru. 1156 00:55:44,390 --> 00:55:50,040 Acum, indicatorul ar be-- OK. 1157 00:55:50,040 --> 00:55:51,820 1158 00:55:51,820 --> 00:55:55,380 >> Deci, dacă a fost un char si am facut pointer plus unu, ceea ce ar fi acum? 1159 00:55:55,380 --> 00:56:00,300 1160 00:56:00,300 --> 00:56:03,330 În cazul în care started-- pretinde noi started-- acum este 0x08. 1161 00:56:03,330 --> 00:56:04,850 1162 00:56:04,850 --> 00:56:10,850 Să spunem acum că aceasta a fost o char pointer, și am adăugat unul. 1163 00:56:10,850 --> 00:56:11,850 Ce s-ar schimba la? 1164 00:56:11,850 --> 00:56:14,989 1165 00:56:14,989 --> 00:56:16,030 Cât de multe bytes este un char? 1166 00:56:16,030 --> 00:56:16,680 >> Audiența: One. 1167 00:56:16,680 --> 00:56:17,304 >> SPEAKER 1: One. 1168 00:56:17,304 --> 00:56:18,309 Audiența: Deci, 0x09. 1169 00:56:18,309 --> 00:56:19,600 SPEAKER 1: Deci, ar fi nouă. 1170 00:56:19,600 --> 00:56:22,571 1171 00:56:22,571 --> 00:56:23,820 Deci, doar ceva să-și amintească. 1172 00:56:23,820 --> 00:56:28,340 Doar atunci când adăugați o, nu e adăugarea unui excepția cazului în care este un char. 1173 00:56:28,340 --> 00:56:34,190 Este adaugand cate octeți tipul că este, 1174 00:56:34,190 --> 00:56:36,960 care este motivul pentru care ne-am această ecuație aici. 1175 00:56:36,960 --> 00:56:40,190 Deci e ori int de dimensiunea de tipul de indicator. 1176 00:56:40,190 --> 00:56:42,850 1177 00:56:42,850 --> 00:56:44,730 >> Deci, avem exemplul de aici. 1178 00:56:44,730 --> 00:56:47,250 1179 00:56:47,250 --> 00:56:54,430 y a fost însărcinată această valoare, 0x4, când am făcut y plus este egal cu unu. 1180 00:56:54,430 --> 00:56:56,830 Ce e în ea, ceea ce este în x, nu se schimba. 1181 00:56:56,830 --> 00:56:58,610 Ce face schimbare este ceea ce este în y. 1182 00:56:58,610 --> 00:57:04,980 Adresa stocate în y actualizat cu patru pentru că există patru octeti într-un int 1183 00:57:04,980 --> 00:57:06,097 și este un pointer int. 1184 00:57:06,097 --> 00:57:07,290 1185 00:57:07,290 --> 00:57:07,790 >> Bine. 1186 00:57:07,790 --> 00:57:09,123 Deci, acum avem un alt exercițiu. 1187 00:57:09,123 --> 00:57:11,140 1188 00:57:11,140 --> 00:57:13,500 Deci, întrebarea este ce se va imprima. 1189 00:57:13,500 --> 00:57:36,710 1190 00:57:36,710 --> 00:57:37,650 Orice idei? 1191 00:57:37,650 --> 00:57:41,690 1192 00:57:41,690 --> 00:57:43,699 >> Audiența: numărul de de caractere din pisica fericita? 1193 00:57:43,699 --> 00:57:44,490 SPEAKER 1: Exact. 1194 00:57:44,490 --> 00:57:45,531 Deci, ca cu șirul. 1195 00:57:45,531 --> 00:57:47,302 1196 00:57:47,302 --> 00:57:48,260 Are toată lumea asta? 1197 00:57:48,260 --> 00:57:49,509 Nu vrem să umblăm prin ea? 1198 00:57:49,509 --> 00:57:50,300 1199 00:57:50,300 --> 00:57:52,010 >> Da, OK. 1200 00:57:52,010 --> 00:57:57,385 Deci, ceea ce avem here-- I ca aceasta atât de mult mai mult. 1201 00:57:57,385 --> 00:57:59,340 Nu trebuie să [Neauzit] ridicol. 1202 00:57:59,340 --> 00:58:01,690 >> Deci avem șir aici, cat de fericit. 1203 00:58:01,690 --> 00:58:02,950 Lovely. 1204 00:58:02,950 --> 00:58:05,080 Avem unele contor care suntem urmarirea. 1205 00:58:05,080 --> 00:58:11,430 Deci, avem unele char * pointer că doar este setat egal cu Str. 1206 00:58:11,430 --> 00:58:14,320 Ce face acest lucru este e atribuirea unele pointer 1207 00:58:14,320 --> 00:58:16,380 la începutul șir ta. 1208 00:58:16,380 --> 00:58:19,840 Pentru că sunt sigur, ca aceasta a fost menționat în curs, 1209 00:58:19,840 --> 00:58:22,290 v-am dat voi prezenta tip de date numit șir. 1210 00:58:22,290 --> 00:58:29,070 >> Dar de fapt sunt doar siruri de caractere o serie de-- ca char *. 1211 00:58:29,070 --> 00:58:32,330 Este un pointer la o grămadă de personaje care sunt contigue din memorie. 1212 00:58:32,330 --> 00:58:33,680 1213 00:58:33,680 --> 00:58:36,280 Deci, acest lucru pur și simplu stabilește egală cu orice șir este 1214 00:58:36,280 --> 00:58:38,980 identificate prin unde primul caracter este. 1215 00:58:38,980 --> 00:58:42,710 Deci, aceasta este doar setarea un moment dat egală cu începutul șirului. 1216 00:58:42,710 --> 00:58:44,130 Toată lumea bine acolo? 1217 00:58:44,130 --> 00:58:44,960 Rece. 1218 00:58:44,960 --> 00:58:49,840 >> Deci, aceasta este dereferencing pointer nostru. 1219 00:58:49,840 --> 00:58:53,760 Deci, este de fapt de gând să să ne dea o valoare aici, 1220 00:58:53,760 --> 00:58:55,610 în șir noastră că vorbim despre. 1221 00:58:55,610 --> 00:58:58,342 Și noi spunem la fel de mult timp ca nu e terminator nul. 1222 00:58:58,342 --> 00:59:00,550 Deci, continua să mergi până când veți obține la sfârșitul șirului. 1223 00:59:00,550 --> 00:59:02,180 1224 00:59:02,180 --> 00:59:04,190 Actualizați indicatorul de unul. 1225 00:59:04,190 --> 00:59:09,250 Deci, r, acesta va fi actualizat efectiv de către unul de fiecare dată pentru că acest lucru este un char, 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 >> Asa ca va trece prin. 1229 00:59:12,340 --> 00:59:13,290 O să actualizeze. 1230 00:59:13,290 --> 00:59:16,705 Deci, prima dată în acest ruleaza, aceasta va fi aici la ore. 1231 00:59:16,705 --> 00:59:17,590 O să actualizeze. 1232 00:59:17,590 --> 00:59:18,185 >> Va fi un un. 1233 00:59:18,185 --> 00:59:21,310 Va fi un p, y, și așa mai departe și așa mai departe. 1234 00:59:21,310 --> 00:59:22,300 Vom actualiza contra. 1235 00:59:22,300 --> 00:59:26,160 Când se ajunge la sfârșitul anului acesta, doar imprimă cât de departe este ajuns. 1236 00:59:26,160 --> 00:59:27,550 1237 00:59:27,550 --> 00:59:28,050 Da. 1238 00:59:28,050 --> 00:59:31,475 >> Audiența: Deci, conteaza spațiul ca unul, nu? 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 >> SPEAKER 1: Gândiți-vă așa. 1242 00:59:35,222 --> 00:59:36,830 Este că o question-- 1243 00:59:36,830 --> 00:59:37,746 >> Audiența: [inaudibil]. 1244 00:59:37,746 --> 00:59:37,968 1245 00:59:37,968 --> 00:59:38,884 >> SPEAKER 1: Nu vă faceți griji. 1246 00:59:38,884 --> 00:59:39,720 1247 00:59:39,720 --> 00:59:42,736 Această fac asta. 1248 00:59:42,736 --> 00:59:47,710 În regulă, deci un singur lucru să înțeleagă este faptul că, cu o serie, 1249 00:59:47,710 --> 00:59:51,736 puteți, de asemenea, o trata ca un pointer deoarece matrice sunt doar 1250 00:59:51,736 --> 00:59:52,860 pete continue de memorie. 1251 00:59:52,860 --> 00:59:53,970 1252 00:59:53,970 --> 00:59:56,380 >> Astfel încât să puteți trata în același mod. 1253 00:59:56,380 --> 00:59:59,000 Aveți posibilitatea să le manipula cu indicii, de asemenea. 1254 00:59:59,000 --> 01:00:04,770 Deci, în loc de a face, în acest caz, un lucru analog 1255 01:00:04,770 --> 01:00:07,490 ar fi matrice 0 este egal cu 1. 1256 01:00:07,490 --> 01:00:08,760 1257 01:00:08,760 --> 01:00:15,210 >> Dar, în același mod în care un șir este determinată 1258 01:00:15,210 --> 01:00:18,740 de la începutul unde primul caracter este, 1259 01:00:18,740 --> 01:00:22,270 o matrice este determinat de în cazul în care primul element este. 1260 01:00:22,270 --> 01:00:25,120 Pentru că știm, suntem garantat, că acestea 1261 01:00:25,120 --> 01:00:27,985 vor fi continuu blocuri de memorie. 1262 01:00:27,985 --> 01:00:29,360 Asta e ceea ce ne permite să facem acest lucru. 1263 01:00:29,360 --> 01:00:31,193 Știm că sunt continuu blocuri de memorie. 1264 01:00:31,193 --> 01:00:32,230 1265 01:00:32,230 --> 01:00:36,500 >> Deci, în acest caz, prin dereferencing doar matrice, care ne spune, 1266 01:00:36,500 --> 01:00:40,800 OK, du-te la începutul matrice dvs., care este aici. 1267 01:00:40,800 --> 01:00:42,640 Astfel încât să puteți seta egală cu unu. 1268 01:00:42,640 --> 01:00:48,610 Și în acest caz, indiferent de matrice dvs. tip este, atunci cand actualizare de unul, 1269 01:00:48,610 --> 01:00:50,830 asta e la fel ca actualizarea l la indicele următor. 1270 01:00:50,830 --> 01:00:52,760 1271 01:00:52,760 --> 01:00:56,360 Puteți face acest lucru pentru că Știi ce e în matrice ta. 1272 01:00:56,360 --> 01:00:59,770 Așa că știe cât de mult a actualiza indicatorul de, 1273 01:00:59,770 --> 01:01:02,925 ce adresă să-l atât de actualizare ca esti la slotul urmator. 1274 01:01:02,925 --> 01:01:04,740 1275 01:01:04,740 --> 01:01:09,400 >> Deci, aceasta este doar un alt mod a scris matrice 0 este egal cu 1, 1276 01:01:09,400 --> 01:01:15,114 matrice 1 este egal cu 2, matrice Suport 2 este egal cu 3. 1277 01:01:15,114 --> 01:01:16,780 E doar un alt mod de a gândi despre asta. 1278 01:01:16,780 --> 01:01:19,600 Pentru că ei sunt continue blocuri în memorie, 1279 01:01:19,600 --> 01:01:21,830 puteți face referire la ele, fie prin matrice notation-- 1280 01:01:21,830 --> 01:01:24,390 pe care eu personal găsi easier-- dar poate 1281 01:01:24,390 --> 01:01:27,347 aveți nevoie pentru a manipula strict de adrese de memorie. 1282 01:01:27,347 --> 01:01:28,930 Și acesta este modul în care s-ar face asta. 1283 01:01:28,930 --> 01:01:30,630 1284 01:01:30,630 --> 01:01:32,630 Un fel de mult ca și cum o atribut atractiv ai putea face 1285 01:01:32,630 --> 01:01:35,213 versus poate nu ceva de care ești de fapt de gând să pună în aplicare. 1286 01:01:35,213 --> 01:01:36,960 1287 01:01:36,960 --> 01:01:38,630 >> Sa-l folosesc la 61. 1288 01:01:38,630 --> 01:01:41,710 Voi probabil nu au nevoie să vă faceți griji despre asta prea mult. 1289 01:01:41,710 --> 01:01:43,693 Dar daca esti interesat, ia 61 anul viitor. 1290 01:01:43,693 --> 01:01:45,269 1291 01:01:45,269 --> 01:01:46,560 Suntem în cei de acasă elastice. 1292 01:01:46,560 --> 01:01:47,510 Știu, e lung. 1293 01:01:47,510 --> 01:01:50,570 1294 01:01:50,570 --> 01:01:58,880 Dinamic de memorie Allocation-- astfel știm că o 1295 01:01:58,880 --> 01:02:01,790 de lucruri, atunci când am vorbit în timpul prima noastră pct împreună, 1296 01:02:01,790 --> 01:02:04,560 ne-am uitat la un swap funcție unde a fost 1297 01:02:04,560 --> 01:02:08,010 în afara domeniului de aplicare al funcției nostru principal. 1298 01:02:08,010 --> 01:02:14,370 Și am fost asociate în aceste valori care au fost în mod eficient de exemplare. 1299 01:02:14,370 --> 01:02:20,570 >> Și o dată de swap terminat de executare, a lăsat doar o stivă. 1300 01:02:20,570 --> 01:02:22,830 Amintiți-vă, avem o stivă cadru pentru swap. 1301 01:02:22,830 --> 01:02:26,070 Se lasă și pe cei Valorile pleca cu ea. 1302 01:02:26,070 --> 01:02:27,050 Și ei au plecat. 1303 01:02:27,050 --> 01:02:28,615 Nu am putut face nimic cu ei și am fost trist 1304 01:02:28,615 --> 01:02:29,989 pentru că nu putem schimba valorile noastre. 1305 01:02:29,989 --> 01:02:31,070 1306 01:02:31,070 --> 01:02:36,560 >> Dar cu C, așa cum am menționat, aveți au o mulțime de putere asupra memoriei. 1307 01:02:36,560 --> 01:02:43,310 Deci, ce puteți face este de a putea aloca lucrurile pe grămada de aici 1308 01:02:43,310 --> 01:02:46,830 că va rămâne acolo până la le spui altfel. 1309 01:02:46,830 --> 01:02:48,280 >> Sunt ca niște copii buni. 1310 01:02:48,280 --> 01:02:49,150 Ei stau acolo. 1311 01:02:49,150 --> 01:02:50,270 Ei nu pleca. 1312 01:02:50,270 --> 01:02:52,750 Vor sta acolo până când sunteți cum ar fi, OK, poti sa te duci departe. 1313 01:02:52,750 --> 01:02:55,920 >> Întrucât lucruri pe stiva, who-- ei sunt ca niște copii obraznici. 1314 01:02:55,920 --> 01:02:59,160 Vor rula doar departe atunci când doriți să fie acolo și apoi au plecat. 1315 01:02:59,160 --> 01:03:00,160 Nu-i poți lua înapoi. 1316 01:03:00,160 --> 01:03:01,350 1317 01:03:01,350 --> 01:03:07,187 >> Deci, heap este-- vom vorbesc despre malloc și gratuit, care 1318 01:03:07,187 --> 01:03:08,895 Sunt sigur că voi auzit în curs. 1319 01:03:08,895 --> 01:03:10,270 1320 01:03:10,270 --> 01:03:14,210 Și asta e de fapt un fel pentru a avea date foarte persistente. 1321 01:03:14,210 --> 01:03:18,920 Astfel încât puteți să vă păstrați datele în jurul valorii de atâta timp cât doriți. 1322 01:03:18,920 --> 01:03:19,546 MHM. 1323 01:03:19,546 --> 01:03:21,475 >> Audiența: Poți să definiți heap si stiva? 1324 01:03:21,475 --> 01:03:24,030 Sunt le place locuri pentru a pune lucrurile? 1325 01:03:24,030 --> 01:03:26,630 >> SPEAKER 1: Deci sunt practic doar-- sunt 1326 01:03:26,630 --> 01:03:29,530 modul în care ne vom referi doar la memorie. 1327 01:03:29,530 --> 01:03:37,300 Deci, heap este doar locuri unde de memorie este alocată dinamic, 1328 01:03:37,300 --> 01:03:40,960 întrucât stivă se referă mai mult pentru a stiva de cadre 1329 01:03:40,960 --> 01:03:45,950 care sunt mult mai central în funcții care sunt de fapt rulează. 1330 01:03:45,950 --> 01:03:47,200 Nu aveți într-adevăr de control. 1331 01:03:47,200 --> 01:03:50,690 >> Diferența mare, aveți control pe heap, dacă doriți să. 1332 01:03:50,690 --> 01:03:52,710 Ai mai putin control asupra stiva. 1333 01:03:52,710 --> 01:03:55,030 Stiva depinde de Funcțiile pe care se execută, 1334 01:03:55,030 --> 01:03:58,320 și ordinea în care acestea sunt a alerga, și modul în care sunt returnate lucrurile. 1335 01:03:58,320 --> 01:04:01,290 Întrucât cu grămada, ca vom vedea, vă pot spune, 1336 01:04:01,290 --> 01:04:06,639 OK, vreau această valoare să fie în jurul valorii de până când am să-ți spun altfel. 1337 01:04:06,639 --> 01:04:08,180 Nu vi se permite să scape de ea. 1338 01:04:08,180 --> 01:04:09,300 Nu ai voie să-l trece peste. 1339 01:04:09,300 --> 01:04:11,675 Ai de gând să-l păstrați în jurul valorii de pentru atâta timp cât am să-ți spun. 1340 01:04:11,675 --> 01:04:15,780 Ai de a fi șeful în heap, întrucât stack-- poate, dacă 1341 01:04:15,780 --> 01:04:18,080 ca finagle-ți de drum poti fi seful. 1342 01:04:18,080 --> 01:04:19,340 Dar nu destul. 1343 01:04:19,340 --> 01:04:20,480 1344 01:04:20,480 --> 01:04:22,070 Și este într-adevăr doar amintire. 1345 01:04:22,070 --> 01:04:24,260 E moduri diferite locații de referindu-se la memorie. 1346 01:04:24,260 --> 01:04:25,800 1347 01:04:25,800 --> 01:04:26,400 >> Rece. 1348 01:04:26,400 --> 01:04:28,630 Deci, cu care, cum să controla memoria. 1349 01:04:28,630 --> 01:04:32,070 E cu malloc, care ai de gând pentru a obține pentru a utiliza. 1350 01:04:32,070 --> 01:04:37,100 Deci, e doar pe termen scurt pentru alocare de memorie. 1351 01:04:37,100 --> 01:04:38,459 Asta e tot ce este. 1352 01:04:38,459 --> 01:04:41,250 Există o grămadă de alte rece Funcțiile care au aloc la sfârșitul anului, 1353 01:04:41,250 --> 01:04:42,750 și ei stau pentru lucruri diferite. 1354 01:04:42,750 --> 01:04:43,550 1355 01:04:43,550 --> 01:04:49,050 >> Deci, atunci când aveți nevoie de stocare care are nevoie pentru a dura mai mult decât funcția actuală atât de 1356 01:04:49,050 --> 01:04:51,010 că, atunci când actuala ta Funcția fuge, 1357 01:04:51,010 --> 01:04:55,774 aveți în continuare datele pe care le luat de la ea, pe care doriți să utilizați malloc. 1358 01:04:55,774 --> 01:04:57,190 Că vom inițializa pe heap. 1359 01:04:57,190 --> 01:05:00,140 Și așa cum am spus și să păstreze spune, să-ți ții acolo 1360 01:05:00,140 --> 01:05:03,050 până când o spun altfel, care este cel mai important lucru aici. 1361 01:05:03,050 --> 01:05:08,450 >> Deci, un singur lucru pentru a observa și care este de obicei foarte important, 1362 01:05:08,450 --> 01:05:13,620 este faptul că această sizeof este foarte util să se utilizeze 1363 01:05:13,620 --> 01:05:16,440 pentru că în funcție de tipul de mașină rulați, 1364 01:05:16,440 --> 01:05:22,470 acesta poate avea valori diferite de memorie care este nevoie. 1365 01:05:22,470 --> 01:05:26,870 Deci, vrei mereu să utilizeze dimensiunea de astfel că nu ești dependent de mașină, 1366 01:05:26,870 --> 01:05:30,300 astfel încât codul va rula pe orice mașină. 1367 01:05:30,300 --> 01:05:32,360 >> Și asta e doar o parte de a scrie cod bun. 1368 01:05:32,360 --> 01:05:34,610 Dacă funcționează pe o mașină, dar nu oricare dintre celelalte, 1369 01:05:34,610 --> 01:05:36,440 cât de utilă a fost programul tău? 1370 01:05:36,440 --> 01:05:38,420 Deci, vrei mereu să asigurați-vă și de a folosi sizeof. 1371 01:05:38,420 --> 01:05:41,306 >> Audiența: Deci, este faptul că alții dimensiunea de 10 inch [inaudibil]? 1372 01:05:41,306 --> 01:05:43,698 >> SPEAKER 1: Aceasta este dimensiunea de 10 int. 1373 01:05:43,698 --> 01:05:44,197 Da. 1374 01:05:44,197 --> 01:05:45,360 1375 01:05:45,360 --> 01:05:48,830 Deci, dimensiunea de int se va întoarce cât de mult o int ia. 1376 01:05:48,830 --> 01:05:51,530 Sau mărimea char, cum de mult nu o ia char. 1377 01:05:51,530 --> 01:05:54,150 Și atunci cum de multe blocuri de care vrei? 1378 01:05:54,150 --> 01:05:57,590 >> Deci, în acest caz, vrem ceva pe care le poate stoca 10 int la. 1379 01:05:57,590 --> 01:06:00,240 Și va funcționa indiferent de mașini, care este rece. 1380 01:06:00,240 --> 01:06:01,720 1381 01:06:01,720 --> 01:06:04,846 Deci, cât de multe bytes va că de fapt dai? 1382 01:06:04,846 --> 01:06:06,190 Matematica rapid. 1383 01:06:06,190 --> 01:06:06,787 >> Audiența: 40. 1384 01:06:06,787 --> 01:06:07,370 SPEAKER 1: 40. 1385 01:06:07,370 --> 01:06:07,869 Exact. 1386 01:06:07,869 --> 01:06:09,520 1387 01:06:09,520 --> 01:06:12,030 Deci, un alt mare lucru. 1388 01:06:12,030 --> 01:06:14,840 Pointer sau malloc poate intoarce null. 1389 01:06:14,840 --> 01:06:17,910 >> Deci, din nou, verificați întotdeauna la a vedea dacă acesta a revenit nul 1390 01:06:17,910 --> 01:06:19,620 înainte de a încerca și de a face ceva cu ea. 1391 01:06:19,620 --> 01:06:23,430 1392 01:06:23,430 --> 01:06:27,350 Dacă încercați și dereference acest pointer acum, 1393 01:06:27,350 --> 01:06:29,720 este doar de gând să segfault pentru că te-ai dus și a încercat 1394 01:06:29,720 --> 01:06:31,730 pentru a atinge null, atunci când nu ar trebui să aibă. 1395 01:06:31,730 --> 01:06:34,000 Deci, verificați întotdeauna pentru nul. 1396 01:06:34,000 --> 01:06:36,075 Din nou, tot ce se poate face. 1397 01:06:36,075 --> 01:06:38,300 1398 01:06:38,300 --> 01:06:39,720 >> S-ar putea intoarce null. 1399 01:06:39,720 --> 01:06:42,740 Va intoarce null daca esti ori din spațiu, sau pentru orice motiv 1400 01:06:42,740 --> 01:06:44,350 ea a fugit în unele bug memorie. 1401 01:06:44,350 --> 01:06:45,890 1402 01:06:45,890 --> 01:06:47,510 Uneori doar returneaza null. 1403 01:06:47,510 --> 01:06:48,990 Deci, trebuie doar să verificați pentru ea. 1404 01:06:48,990 --> 01:06:51,050 Asta e tot ce acest diapozitiv spune. 1405 01:06:51,050 --> 01:06:53,366 1406 01:06:53,366 --> 01:06:55,240 Și atunci ce ne-am aici este o chemare pentru a elibera. 1407 01:06:55,240 --> 01:07:00,550 Deci, în același mod în care, dacă deschide un fișier, trebuie să închizi un fișier, 1408 01:07:00,550 --> 01:07:04,340 dacă memoria malloc, tu trebuie să te elibereze acea memorie. 1409 01:07:04,340 --> 01:07:06,530 Și voi primi de a face lucruri foarte misto. 1410 01:07:06,530 --> 01:07:09,624 >> Și există un program, puteți rula la vezi dacă ești vreodată scurgeri de memorie. 1411 01:07:09,624 --> 01:07:11,040 Dar nu vrei să se scurgă de memorie. 1412 01:07:11,040 --> 01:07:11,820 E foarte rău. 1413 01:07:11,820 --> 01:07:13,191 1414 01:07:13,191 --> 01:07:15,020 Doar mizerie lucrurile. 1415 01:07:15,020 --> 01:07:20,939 >> E rău să faci la fel ca programare înțelept pentru eficiență proiectare. 1416 01:07:20,939 --> 01:07:22,980 Dar este, de asemenea, doar un fel de rău pentru calculatorul dumneavoastră. 1417 01:07:22,980 --> 01:07:26,780 Lucrurile așa doar gratuite atunci când le malloc. 1418 01:07:26,780 --> 01:07:28,190 1419 01:07:28,190 --> 01:07:30,210 >> Voi vedea simetriile aici. 1420 01:07:30,210 --> 01:07:31,180 Super-simplu. 1421 01:07:31,180 --> 01:07:33,010 Doar liberă și apoi se indiferent de indicatorul, 1422 01:07:33,010 --> 01:07:34,843 indiferent de denumirea indicatorul este, și ea 1423 01:07:34,843 --> 01:07:36,710 va avea grijă de eliberându-l pentru tine. 1424 01:07:36,710 --> 01:07:38,200 1425 01:07:38,200 --> 01:07:38,700 Rece. 1426 01:07:38,700 --> 01:07:40,410 1427 01:07:40,410 --> 01:07:42,530 >> Apoi, avem asta. 1428 01:07:42,530 --> 01:07:44,770 Deci, noi suntem doar de gând să plimbare prin acest program. 1429 01:07:44,770 --> 01:07:46,560 Și apoi voi sunt efectuate. 1430 01:07:46,560 --> 01:07:50,240 >> Deci, [inaudibil] doar principal. 1431 01:07:50,240 --> 01:07:51,690 Deci, avem unele int * pointer. 1432 01:07:51,690 --> 01:07:53,648 Deci, avem un pointer care va ține int. 1433 01:07:53,648 --> 01:07:54,500 1434 01:07:54,500 --> 01:07:56,170 Și câți int este de gând să dețină? 1435 01:07:56,170 --> 01:07:57,400 1436 01:07:57,400 --> 01:07:58,170 Doar unul. 1437 01:07:58,170 --> 01:07:59,400 1438 01:07:59,400 --> 01:08:01,100 Marimea unui int. 1439 01:08:01,100 --> 01:08:03,900 >> Vom verifica pentru a vedea dacă pointer este nul, deoarece 1440 01:08:03,900 --> 01:08:06,130 este, vrem să spunem nu fac nimic. 1441 01:08:06,130 --> 01:08:07,065 E de rău. 1442 01:08:07,065 --> 01:08:08,130 1443 01:08:08,130 --> 01:08:12,130 Așa că am imprima o eroare din memorie, cel mai adesea se întoarcă 1, 1444 01:08:12,130 --> 01:08:14,260 ca voi sunt obisnuiti. 1445 01:08:14,260 --> 01:08:17,390 >> Și apoi avem aici, dereference indicatorul nostru. 1446 01:08:17,390 --> 01:08:22,840 Asta înseamnă că vom stoca ceva la o locație dată la noi. 1447 01:08:22,840 --> 01:08:24,350 1448 01:08:24,350 --> 01:08:30,830 Int * pointer, sau malloc, returnează adresa în cazul în care anularea acestei 1449 01:08:30,830 --> 01:08:31,750 memorie pentru tine. 1450 01:08:31,750 --> 01:08:32,830 1451 01:08:32,830 --> 01:08:34,800 Deci, este practic oferindu-vă like-- dacă 1452 01:08:34,800 --> 01:08:38,149 gândiți-vă o grămadă de case într-un cartier 1453 01:08:38,149 --> 01:08:40,640 pe care doriți să puneți în mobilier, malloc 1454 01:08:40,640 --> 01:08:43,850 este ca OK, veți obține pentru a merge la casa trei. 1455 01:08:43,850 --> 01:08:45,800 Și vă oferă Adresa de casa trei. 1456 01:08:45,800 --> 01:08:48,775 >> Deci, acest drept acum, acest Magazine pointer o adresă, 1457 01:08:48,775 --> 01:08:50,149 stochează adresa de casa ta. 1458 01:08:50,149 --> 01:08:51,470 1459 01:08:51,470 --> 01:08:54,640 * mijloace ptr, OK, eu sunt la casa mea. 1460 01:08:54,640 --> 01:08:55,326 Rece. 1461 01:08:55,326 --> 01:08:56,580 Am nevoie pentru a obține niște întreg. 1462 01:08:56,580 --> 01:08:59,229 >> Deci tu ceri pe cineva pentru a vă oferi mobilier de acum. 1463 01:08:59,229 --> 01:09:00,430 Astfel încât să obțineți niște int. 1464 01:09:00,430 --> 01:09:05,100 Și îl pune în indicatorul în cazul în care se indică spre. 1465 01:09:05,100 --> 01:09:08,670 >> Și apoi doar printuri afară, ați introdus oriunde. 1466 01:09:08,670 --> 01:09:11,060 Și din nou, de referință. 1467 01:09:11,060 --> 01:09:15,649 Deci, aceasta este ca și cum te-ai dus la aceasta adresa și ați văzut ce a fost acolo. 1468 01:09:15,649 --> 01:09:17,120 1469 01:09:17,120 --> 01:09:17,630 Rece? 1470 01:09:17,630 --> 01:09:20,174 >> Și apoi, desigur, ne-am elibera indicatorul nostru. 1471 01:09:20,174 --> 01:09:21,590 Nu uita pentru a elibera indicatorul. 1472 01:09:21,590 --> 01:09:22,933 Nu uitați să verificați pentru nul. 1473 01:09:22,933 --> 01:09:24,349 Nu uita pentru a elibera indicatorul. 1474 01:09:24,349 --> 01:09:27,270 Aveți două lucruri pe care le amintesc de la aceasta, sau că trebuie să vă amintiți. 1475 01:09:27,270 --> 01:09:27,770 Da. 1476 01:09:27,770 --> 01:09:31,590 Audiența: [inaudibil] chestii cum ar fi faptul că, char * s. 1477 01:09:31,590 --> 01:09:33,760 Cum de nu ne-am elibera pe cei? 1478 01:09:33,760 --> 01:09:34,529 >> SPEAKER 1: Hm? 1479 01:09:34,529 --> 01:09:36,450 >> Audiența: Sunt cei ca siruri de caractere? 1480 01:09:36,450 --> 01:09:39,160 Ai spus siruri de caractere sunt la fel ca char * s, corect? 1481 01:09:39,160 --> 01:09:41,200 Deci, de ce nu ne-am desprindă siruri de caractere? 1482 01:09:41,200 --> 01:09:43,204 >> SPEAKER 1: numai să vă gratuit dacă ești mallocing. 1483 01:09:43,204 --> 01:09:44,620 Audiența: Oh, dacă ești mallocing. 1484 01:09:44,620 --> 01:09:47,399 SPEAKER 1: Deci malloc și gratuit sunt două lucruri 1485 01:09:47,399 --> 01:09:49,000 că ar trebui să aveți mereu împreună. 1486 01:09:49,000 --> 01:09:51,630 f, aproape f deschis, două lucruri ar trebui să aveți împreună. 1487 01:09:51,630 --> 01:09:54,471 În aceste două cazuri, verificați pentru nul. 1488 01:09:54,471 --> 01:09:54,971 Da. 1489 01:09:54,971 --> 01:09:57,130 >> Audiența: Deci, liber este doar permițând altceva 1490 01:09:57,130 --> 01:09:59,690 să fie stocate acolo după acest program a folosit-o? 1491 01:09:59,690 --> 01:10:01,946 >> SPEAKER 1: E doar că, OK, am terminat cu asta. 1492 01:10:01,946 --> 01:10:03,320 Nu aveți nevoie să-l păstrați în jurul valorii. 1493 01:10:03,320 --> 01:10:05,340 1494 01:10:05,340 --> 01:10:08,190 În caz contrar, computerul va La fel ca încercați și păstrați-l acolo. 1495 01:10:08,190 --> 01:10:10,910 Și apoi can't-- ruleaza în probleme de memorie mai târziu. 1496 01:10:10,910 --> 01:10:13,660 Întotdeauna vrei să-l elibereze pentru că se spune computerul, OK, eu sunt 1497 01:10:13,660 --> 01:10:15,190 terminat cu acest loc de memorie. 1498 01:10:15,190 --> 01:10:17,190 Puteți să-l avea din nou pentru mine de a utiliza mai târziu. 1499 01:10:17,190 --> 01:10:19,250 1500 01:10:19,250 --> 01:10:20,500 Rece? 1501 01:10:20,500 --> 01:10:21,320 Da. 1502 01:10:21,320 --> 01:10:26,950 >> Audiența: Deci, am folosit% d locații deoarece un dublu care se mai întoarce, 1503 01:10:26,950 --> 01:10:28,330 sau de ce este-- [inaudibil]. 1504 01:10:28,330 --> 01:10:30,170 1505 01:10:30,170 --> 01:10:31,620 >> Audiența: Poti folosi% i? 1506 01:10:31,620 --> 01:10:32,760 >> SPEAKER 1: Puteți folosi% i. 1507 01:10:32,760 --> 01:10:35,052 1508 01:10:35,052 --> 01:10:36,135 Orice întrebări de ultim minut? 1509 01:10:36,135 --> 01:10:38,310 1510 01:10:38,310 --> 01:10:38,985 Dă-i drumul. 1511 01:10:38,985 --> 01:10:40,610 Audiența: Am o întrebare rapidă. 1512 01:10:40,610 --> 01:10:50,200 Deci, variabila PTR, that's-- cum ar fi, cu int * ptr = malloc, 1513 01:10:50,200 --> 01:10:54,142 care este doar că e arătând spre un loc în memory-- 1514 01:10:54,142 --> 01:10:55,600 SPEAKER 1: Vrei [inaudibil]? 1515 01:10:55,600 --> 01:10:58,050 Audiența: acea experiență a lui mărime de-- nu, e în regulă. 1516 01:10:58,050 --> 01:11:01,292 Dar e doar arătând spre un loc în de memorie care e la fel ca patru bytes. 1517 01:11:01,292 --> 01:11:02,000 SPEAKER 1: Corect. 1518 01:11:02,000 --> 01:11:03,030 1519 01:11:03,030 --> 01:11:07,070 Deci, malloc dimensiunea de int spune: OK, am de gând să merg fugi, 1520 01:11:07,070 --> 01:11:08,780 găsi patru bytes de memorie pentru tine. 1521 01:11:08,780 --> 01:11:10,700 Atunci când constată că patru bytes de memorie ea, 1522 01:11:10,700 --> 01:11:14,030 vă dă înapoi adresa de unde începe, 1523 01:11:14,030 --> 01:11:16,160 și asta e ceea ce stocat în pointer, sau ptr. 1524 01:11:16,160 --> 01:11:17,510 1525 01:11:17,510 --> 01:11:18,010 Bun. 1526 01:11:18,010 --> 01:11:18,742 1527 01:11:18,742 --> 01:11:21,700 Voi uiti mai puțin confuz decât majoritatea oamenii când vorbesc despre pointer, 1528 01:11:21,700 --> 01:11:23,670 așa mă simt destul de bine acum. 1529 01:11:23,670 --> 01:11:24,520 >> Bine. 1530 01:11:24,520 --> 01:11:27,960 Ca întotdeauna, voi ar trebui să aibă tot primit notele pset2 până acum. 1531 01:11:27,960 --> 01:11:32,769 Știu că au existat unele subred lucrurile în cazul în care se spune, formula nu este validă 1532 01:11:32,769 --> 01:11:33,310 sau ceva. 1533 01:11:33,310 --> 01:11:36,166 Dacă primiți asta, tot de notele tale sunt valabile pe partea mea. 1534 01:11:36,166 --> 01:11:38,040 Deci, te pot trimite capturi de ecran din notele. 1535 01:11:38,040 --> 01:11:39,011 1536 01:11:39,011 --> 01:11:41,760 Doar lasă-mă să știu la fel de bine daca esti orice lipsă de clase sau ceva 1537 01:11:41,760 --> 01:11:43,060 nu pare să aibă sens. 1538 01:11:43,060 --> 01:11:43,720 Vino la mine. 1539 01:11:43,720 --> 01:11:44,830 1540 01:11:44,830 --> 01:11:48,830 >> Am fost foarte mândru de tine baieti deja, așa că ține pasul. 1541 01:11:48,830 --> 01:11:50,640 Și au o odihnă bună a săptămânii. 1542 01:11:50,640 --> 01:11:53,440 Sunt sigur că voi vedea ceva de tine la ore de birou. 1543 01:11:53,440 --> 01:11:55,414