1 00:00:00,000 --> 00:00:03,269 >> [MUSIC JOC] 2 00:00:03,269 --> 00:00:05,391 3 00:00:05,391 --> 00:00:06,640 CAMILLE REKHSON: Salut, toată lumea. 4 00:00:06,640 --> 00:00:10,120 Bine ați venit la testul CS50 sesiune de revizuire zero. 5 00:00:10,120 --> 00:00:10,770 Sunt Camille. 6 00:00:10,770 --> 00:00:13,140 Și am de gând să meargă asupra unor subiecte cu tine 7 00:00:13,140 --> 00:00:16,890 baieti astăzi pentru a vă ajuta se pregătească pentru testul. 8 00:00:16,890 --> 00:00:20,840 Deci, aici e noastră neexhaustivă Lista de subiecte tine 9 00:00:20,840 --> 00:00:23,210 ar trebui să fie familiarizați cu pentru testul. 10 00:00:23,210 --> 00:00:25,740 Acestea au fost luate direct din programa. 11 00:00:25,740 --> 00:00:26,990 Știu că pare ca o mulțime. 12 00:00:26,990 --> 00:00:30,870 Dar crede-mă, ai invatat toate aceste lucruri în ultimele săptămâni. 13 00:00:30,870 --> 00:00:33,210 >> Deci, vom fi cu siguranta merge peste o mulțime de aceste astăzi. 14 00:00:33,210 --> 00:00:35,825 Dar, de asemenea să ia ceva timp pe dvs. proprii pentru a revizui aceste lucruri. 15 00:00:35,825 --> 00:00:38,450 Și dacă nu au fost familiarizați cu ce unele dintre aceste lucruri sunt, 16 00:00:38,450 --> 00:00:42,400 asigurați-vă că vă întreb unul dintre noi. 17 00:00:42,400 --> 00:00:45,985 De asemenea, pentru cuvântul oficial pe testul, du-te la acest link. 18 00:00:45,985 --> 00:00:48,860 Acest lucru va avea toate informațiile cu care cameră aveți nevoie pentru a merge în, 19 00:00:48,860 --> 00:00:52,960 despărțit în ordine alfabetică, și de asemenea, unele sfaturi despre ce materiale 20 00:00:52,960 --> 00:00:56,470 ar trebui să fie studiat, și ce fel de întrebări test vă puteți aștepta. 21 00:00:56,470 --> 00:01:01,090 Deci, asigurați-vă că pentru a verifica asta. 22 00:01:01,090 --> 00:01:03,810 >> De asemenea, unele sfaturi pentru atunci când se pregătesc pentru examen. 23 00:01:03,810 --> 00:01:05,730 Practica de codificare pe hârtie. 24 00:01:05,730 --> 00:01:09,280 Știu că ai obișnuit să având verificarea IDE pentru erori pentru tine, 25 00:01:09,280 --> 00:01:12,280 și it's-- atunci când sunteți o tastarea sus, e un pic diferit decât având 26 00:01:12,280 --> 00:01:13,113 să scrie lucrurile. 27 00:01:13,113 --> 00:01:14,560 Deci, practica a face unele de codificare. 28 00:01:14,560 --> 00:01:17,910 Unele funcții bună de a practica face sunt strlen și atoi, 29 00:01:17,910 --> 00:01:20,450 văzând dacă ai putea scrie cele pe cont propriu. 30 00:01:20,450 --> 00:01:21,970 Să cunoască cu seturi de probleme. 31 00:01:21,970 --> 00:01:24,200 Cele mai multe de ani există întrebări care se referă 32 00:01:24,200 --> 00:01:25,700 la o parte din materialul problemă set. 33 00:01:25,700 --> 00:01:30,480 Deci, asigurați-vă că ați înțeles modul de a face toate seturile de probleme. 34 00:01:30,480 --> 00:01:35,240 >> Incearca sa faci unele dintre chestionare vechi sub constrângerea de timp 75 minute. 35 00:01:35,240 --> 00:01:37,290 O mulțime de chestionare poate fi un fel de lung. 36 00:01:37,290 --> 00:01:39,680 Deci, este un mod de bun pentru a da te unele practici, 37 00:01:39,680 --> 00:01:41,650 și cât timp va luați și cum 38 00:01:41,650 --> 00:01:45,360 ar trebui să împartă timpul să vă asigurați ați terminat totul de la capăt. 39 00:01:45,360 --> 00:01:49,690 Și, de asemenea, veți obține o pagină de unul, două foi de referință fețe 40 00:01:49,690 --> 00:01:52,962 pe care le puteți scrie tot ce doriți pentru a utiliza în timpul testul. 41 00:01:52,962 --> 00:01:54,670 Deci atunci când sunteți crearea asta, că, de asemenea, 42 00:01:54,670 --> 00:01:57,860 modalitate foarte mare de a studia, deoarece vei fi un fel de a revizui lucruri 43 00:01:57,860 --> 00:01:59,610 ca esti o scriere. 44 00:01:59,610 --> 00:02:05,421 >> Deci, orice întrebări generale despre testul, sau cum funcționează? 45 00:02:05,421 --> 00:02:05,921 Da. 46 00:02:05,921 --> 00:02:09,167 >> Audiența: Va această listă de subiecte pe care tocmai ați arătat fi disponibil pentru noi 47 00:02:09,167 --> 00:02:09,820 pe net? 48 00:02:09,820 --> 00:02:12,736 >> CAMILLE REKHSON: Tot acest diapozitiv spectacol vor fi postate pe site-ul. 49 00:02:12,736 --> 00:02:16,040 De asemenea, video de revizuire de astăzi Sesiunea va fi pe site-ul. 50 00:02:16,040 --> 00:02:19,250 Deci, nu vă faceți griji prea mult despre scris lucruri în jos de-a lungul. 51 00:02:19,250 --> 00:02:20,437 Va fi tot acolo. 52 00:02:20,437 --> 00:02:21,270 Orice alte întrebări? 53 00:02:21,270 --> 00:02:23,810 54 00:02:23,810 --> 00:02:26,960 OK, deci să începem. 55 00:02:26,960 --> 00:02:30,860 >> Deci, un singur lucru pentru a fi familiarizați cu este diferitele tipuri de date și mărimea 56 00:02:30,860 --> 00:02:32,486 pe care le iau pe. 57 00:02:32,486 --> 00:02:35,360 Acest lucru poate fi, de asemenea, un lucru mare pentru a scrie pe foaie de referință, 58 00:02:35,360 --> 00:02:37,240 doar pentru a vă asigura că amintiți-vă toate acestea. 59 00:02:37,240 --> 00:02:39,200 Dar-- așa caractere sunt un octet. 60 00:02:39,200 --> 00:02:40,700 Ints 4 bytes. 61 00:02:40,700 --> 00:02:44,450 Un lung, lung, care este de fapt mai mult spațiu pentru un număr întreg, este de 8 octeți. 62 00:02:44,450 --> 00:02:46,560 Un float este de 4 octeți. 63 00:02:46,560 --> 00:02:50,620 Un dublu, care, practic, vă oferă mai mult spațiu pentru a stoca un flotor, este de 8 octeți. 64 00:02:50,620 --> 00:02:54,210 Și apoi un pointer este, de asemenea, de 8 bytes. 65 00:02:54,210 --> 00:02:56,270 Orice întrebări cu privire la acestea? 66 00:02:56,270 --> 00:03:00,380 67 00:03:00,380 --> 00:03:05,580 >> Deci binar este un alt subiect ne-am acoperit un pic acest semestru. 68 00:03:05,580 --> 00:03:07,910 Deci, hai sa facem ceva practica cu conversie 69 00:03:07,910 --> 00:03:10,000 între binar și zecimal. 70 00:03:10,000 --> 00:03:13,950 Deci cineva vreo idee ce că primul ar fi? 71 00:03:13,950 --> 00:03:32,840 72 00:03:32,840 --> 00:03:34,860 Oricine? 73 00:03:34,860 --> 00:03:36,270 Da, e 42. 74 00:03:36,270 --> 00:03:39,200 Deci, dacă vă aduceți aminte, fiecare din locurile în binar 75 00:03:39,200 --> 00:03:41,860 este, în principiu ca 2 la putere locul lui. 76 00:03:41,860 --> 00:03:43,750 >> Așa că primul loc este de 2 la 0 Putere. 77 00:03:43,750 --> 00:03:46,710 Și avem 0 acolo, așa că nimic nu există. 78 00:03:46,710 --> 00:03:48,700 Următorul loc este de 2 la prima putere. 79 00:03:48,700 --> 00:03:51,220 Și avem un 1 acolo, așa că e practic un 2. 80 00:03:51,220 --> 00:03:53,642 Următorul loc este de 2 la al doilea, care este 4. 81 00:03:53,642 --> 00:03:54,850 Nu avem nimic acolo. 82 00:03:54,850 --> 00:03:59,390 Următorul loc peste este de 2 până la a treia, ceea ce ar fi de 8. 83 00:03:59,390 --> 00:04:02,230 Și noi avem o acolo. 84 00:04:02,230 --> 00:04:03,470 Și noi continuăm. 85 00:04:03,470 --> 00:04:07,720 Că last-- cel mai îndepărtat la unul la stânga este locul unde avem 32. 86 00:04:07,720 --> 00:04:13,437 Și astfel, avem practic 32 plus 8 plus 2 pentru a obține 42. 87 00:04:13,437 --> 00:04:14,020 Alte intrebari? 88 00:04:14,020 --> 00:04:15,820 >> Audiența: Care este indicele pentru? 89 00:04:15,820 --> 00:04:17,399 >> CAMILLE REKHSON: indicele practic ne spune este binar. 90 00:04:17,399 --> 00:04:18,230 Deci, există o 2 acolo. 91 00:04:18,230 --> 00:04:20,579 Dacă ar exista like-- în următorii una, sau atunci când suntem de conversie zecimal 92 00:04:20,579 --> 00:04:24,350 la binar, e un 10 ne arată că acest număr este inițial în zecimal. 93 00:04:24,350 --> 00:04:25,194 >> Audiența: Mulțumesc. 94 00:04:25,194 --> 00:04:26,110 >> CAMILLE REKHSON: Da. 95 00:04:26,110 --> 00:04:28,790 Orice alte întrebări cu privire la asta? 96 00:04:28,790 --> 00:04:31,110 OK, hai sa incercam asa ca următoarea o apoi, zecimală la binar. 97 00:04:31,110 --> 00:04:35,034 Deci, luați 50 și punerea că, în binar. 98 00:04:35,034 --> 00:04:35,950 Cum ai face asta? 99 00:04:35,950 --> 00:04:44,331 100 00:04:44,331 --> 00:04:45,317 Da. 101 00:04:45,317 --> 00:04:49,754 >> Audiența: 110010. 102 00:04:49,754 --> 00:04:50,760 >> CAMILLE REKHSON: Da. 103 00:04:50,760 --> 00:04:54,410 Deci Unu o modalitate ușoară de a gândi despre conversia de la zecimal în binar 104 00:04:54,410 --> 00:04:57,950 este sa-- ajută de multe ori pentru a scrie ceea ce diferitele puteri ale lui 2 sunt. 105 00:04:57,950 --> 00:05:01,460 Și apoi du-te prin ea, și a se vedea indiferent de cea mai mare una dintre aceste 106 00:05:01,460 --> 00:05:05,320 este că puteți pune în la număr zecimal, fără a trece peste el. 107 00:05:05,320 --> 00:05:09,040 >> Deci, în acest caz, unul dintre competențele 2 este de 32. 108 00:05:09,040 --> 00:05:10,560 Deci, 32 intră în 50. 109 00:05:10,560 --> 00:05:14,100 Dar a doua putere în sus ar fi 64, care, evident, nu se încadrează în 50. 110 00:05:14,100 --> 00:05:16,343 Deci cea mai mare avem este 32. 111 00:05:16,343 --> 00:05:17,343 Următorul până la 16. 112 00:05:17,343 --> 00:05:20,140 Și 32 plus 16 este de numai 48. 113 00:05:20,140 --> 00:05:21,350 Astfel că încă se potrivește în 50. 114 00:05:21,350 --> 00:05:22,722 Deci avem 1 în ambele dintre acestea. 115 00:05:22,722 --> 00:05:25,180 Și apoi, dacă vom păstra merge în jos, singurul lucru pe care avem nevoie plecat 116 00:05:25,180 --> 00:05:27,510 este de 2 mai pentru a ajunge 48-50. 117 00:05:27,510 --> 00:05:31,860 Deci, atunci avem un 1 în această poziție, și un 0 in ultima poziție. 118 00:05:31,860 --> 00:05:35,371 Pentru că nu e nimic în de 2 la locul de 0-lea. 119 00:05:35,371 --> 00:05:37,120 Întrebări cu privire la convertirea zecimal în binar? 120 00:05:37,120 --> 00:05:40,830 121 00:05:40,830 --> 00:05:44,100 >> Deci, acum hai sa incercam face unele plus binare. 122 00:05:44,100 --> 00:05:47,235 Cum atunci când adăugați cei doi sus? 123 00:05:47,235 --> 00:05:47,735 Da. 124 00:05:47,735 --> 00:05:51,130 >> Audiența: 11100. 125 00:05:51,130 --> 00:05:52,110 >> CAMILLE REKHSON: Da. 126 00:05:52,110 --> 00:05:55,540 Astfel plus, în binar este destul de la fel ca faci in zecimal. 127 00:05:55,540 --> 00:05:59,390 Cu excepția cazului dacă aveți două fiind de 1 lui adunate, 1 plus 1 este 2, 128 00:05:59,390 --> 00:06:02,980 dar 2 în binar este 1 0. 129 00:06:02,980 --> 00:06:07,090 Deci, va trebui să poarte 1, și să păstreze realizare a acestuia pentru acele coloane cuplu. 130 00:06:07,090 --> 00:06:10,260 Și altul decât cel, trebuie doar să adăugați în mod normal. 131 00:06:10,260 --> 00:06:13,125 Orice întrebări cu privire la asta? 132 00:06:13,125 --> 00:06:13,625 Da. 133 00:06:13,625 --> 00:06:16,487 >> Audiența: Ne pare rău, ceea ce este pe ultimul loc? 134 00:06:16,487 --> 00:06:18,475 Există șase numere. 135 00:06:18,475 --> 00:06:23,260 Deci coloana din stânga, ce valoare este? 136 00:06:23,260 --> 00:06:24,760 CAMILLE REKHSON: de data asta de jos? 137 00:06:24,760 --> 00:06:26,340 Audiența: Pe partea de sus cea, pentru 50. 138 00:06:26,340 --> 00:06:27,340 CAMILLE REKHSON: Pentru 50? 139 00:06:27,340 --> 00:06:29,040 Deci cel mai din stânga este de 32. 140 00:06:29,040 --> 00:06:29,760 >> Audiența: 32? 141 00:06:29,760 --> 00:06:36,770 >> CAMILLE REKHSON: Da, asa ca ar fi 32, 16, apoi 8, 4, 2, 1 sau 0--. 142 00:06:36,770 --> 00:06:39,380 Ei bine, e 2 zero, care este de 1. 143 00:06:39,380 --> 00:06:41,110 Da. 144 00:06:41,110 --> 00:06:43,834 Orice alte întrebări cu privire la asta? 145 00:06:43,834 --> 00:06:47,420 OK, deci atunci vom face un pic cu hexazecimal. 146 00:06:47,420 --> 00:06:49,570 Deci, acest lucru ar putea fi un pic mai puțin familiar, 147 00:06:49,570 --> 00:06:51,680 pentru că știu că am făcut mult mai mult cu binar. 148 00:06:51,680 --> 00:06:54,050 Ci un mod foarte bun de a cred despre hexazecimal 149 00:06:54,050 --> 00:06:57,540 este să te desparți de un binar Numărul în 4 bucăți biți. 150 00:06:57,540 --> 00:07:00,950 Deoarece fiecare 4 biți de număr binar este de fapt 151 00:07:00,950 --> 00:07:04,560 unul dintre numerele hexazecimale. 152 00:07:04,560 --> 00:07:07,420 >> Deci, dacă avem această primă parte, avem practic opt 1 lui. 153 00:07:07,420 --> 00:07:08,620 Deci, acestea pot fi împărțite up-- 154 00:07:08,620 --> 00:07:09,600 >> Audiența: 255. 155 00:07:09,600 --> 00:07:10,933 >> CAMILLE REKHSON: Să presupunem că din nou. 156 00:07:10,933 --> 00:07:13,772 Audiența: 255 în zecimal, sau 0xFF în hexazecimal. 157 00:07:13,772 --> 00:07:14,980 CAMILLE REKHSON: Da, este. 158 00:07:14,980 --> 00:07:18,860 Deci, dacă vă împărți asta în două bucăți de 4 biți, 159 00:07:18,860 --> 00:07:20,950 avem, practic, patru seturi de 1. 160 00:07:20,950 --> 00:07:22,880 Care este maximum-- practic maximă 161 00:07:22,880 --> 00:07:24,329 putem obține cu 4-biți în binar. 162 00:07:24,329 --> 00:07:27,120 Iar maximul am putea obține pentru că, în hexazecimal ar fi un F. 163 00:07:27,120 --> 00:07:30,290 Deci vom avea două F. 164 00:07:30,290 --> 00:07:31,800 Orice întrebări cu privire la asta? 165 00:07:31,800 --> 00:07:32,490 Da? 166 00:07:32,490 --> 00:07:35,184 >> Audiența: Poți repeta asta. 167 00:07:35,184 --> 00:07:36,100 CAMILLE REKHSON: Sigur. 168 00:07:36,100 --> 00:07:39,160 Deci fiecare, practic, Locul de hexazecimal este 169 00:07:39,160 --> 00:07:42,570 echivalentă cu 4 biți de un binar. 170 00:07:42,570 --> 00:07:46,830 Deci cel mai simplu mod de a face acest lucru este să-l rupe în bucăți de 4 biți. 171 00:07:46,830 --> 00:07:48,690 Deci, în acest caz, avem opt 1 lui. 172 00:07:48,690 --> 00:07:51,010 Deci, dacă ne despărțim cei în două bucăți de 4 biți, 173 00:07:51,010 --> 00:07:54,350 am avea două seturi de patru 1 lui. 174 00:07:54,350 --> 00:07:57,181 Și fiecare dintre cei este echivalent cu F. 175 00:07:57,181 --> 00:07:58,930 Dacă credeți că about-- Știu creierul nostru sunt 176 00:07:58,930 --> 00:08:00,415 un fel de fir de a gândi mai mult prin zecimal, 177 00:08:00,415 --> 00:08:01,831 pentru că ceea ce suntem obișnuiți să. 178 00:08:01,831 --> 00:08:06,030 Deci într-un fel ai putea gândi la ea ca cele patru 1 este egal cu 15 în zecimal. 179 00:08:06,030 --> 00:08:12,960 Și 15 în hexazecimal este F. Deci, asta e un alt mod vă puteți gândi prin ea. 180 00:08:12,960 --> 00:08:13,459 Da. 181 00:08:13,459 --> 00:08:14,790 >> Audiența: Care este 0x pentru? 182 00:08:14,790 --> 00:08:18,240 >> CAMILLE REKHSON: a 0x denotă că este hexazecimal. 183 00:08:18,240 --> 00:08:21,900 Deci, ne-am pus ca prefixul acolo, în mod normal. 184 00:08:21,900 --> 00:08:24,396 Alte întrebări pe care. 185 00:08:24,396 --> 00:08:27,100 OK, deci hai sa incercam merge în altă parte, atunci. 186 00:08:27,100 --> 00:08:28,712 În acest caz, am have-- pare rău? 187 00:08:28,712 --> 00:08:29,628 Audiența: [neauzit]. 188 00:08:29,628 --> 00:08:32,095 189 00:08:32,095 --> 00:08:33,720 CAMILLE REKHSON: Vom binar. 190 00:08:33,720 --> 00:08:36,039 Deci, merge în altă parte. 191 00:08:36,039 --> 00:08:42,090 Dar în acest caz, avem 5 și A. Deci, dacă ne gândim la acest lucru, 192 00:08:42,090 --> 00:08:46,260 dacă fiecare dintre those-- 5 și A sunt atât de gând să reprezinte o bucată de 4-biți, 193 00:08:46,260 --> 00:08:49,003 cum ai spune 5 în binar? 194 00:08:49,003 --> 00:08:51,120 >> Audiența: 0101. 195 00:08:51,120 --> 00:08:53,100 >> CAMILLE REKHSON: Da, astfel încât e partea 0101. 196 00:08:53,100 --> 00:08:55,250 Și atunci cum ai spune un in-- 197 00:08:55,250 --> 00:08:56,910 >> Audiența: 10. 198 00:08:56,910 --> 00:08:58,243 CAMILLE REKHSON: Spune it-- pare rău? 199 00:08:58,243 --> 00:08:58,990 Audiența: 10. 200 00:08:58,990 --> 00:09:02,052 CAMILLE REKHSON: Da, așa E a doua parte a acesteia. 201 00:09:02,052 --> 00:09:04,010 Și apoi, dacă ai pus cei doi împreună, asta e 202 00:09:04,010 --> 00:09:06,440 cum ai ajuns pe deplin binar pentru hexazecimal. 203 00:09:06,440 --> 00:09:06,940 Da? 204 00:09:06,940 --> 00:09:10,620 >> Audiența: Pentru a ști că A este 1010, nu trebuie să-l memorezi? 205 00:09:10,620 --> 00:09:12,460 Sau poți să like-- 206 00:09:12,460 --> 00:09:14,380 >> CAMILLE REKHSON: Deci, dacă Tu-- differe-- așa 207 00:09:14,380 --> 00:09:16,790 când te duci prin binar, practic binar 208 00:09:16,790 --> 00:09:20,550 are 0 la 9 si apoi o prin F ca 16 lucruri săi. 209 00:09:20,550 --> 00:09:25,420 Deci, dacă tot drumul la 0 la 9-- dacă Tu-- 9 și apoi A, practic 210 00:09:25,420 --> 00:09:29,640 dacă ne-am convertit să zecimal, A ar fi ca 10, B ar fi ca 11. 211 00:09:29,640 --> 00:09:35,616 Și dacă vă gândiți la binar 1,010 este 8 și 2, 212 00:09:35,616 --> 00:09:37,990 pentru că acestea sunt cele două locuri care se adaugă până la 10, care 213 00:09:37,990 --> 00:09:41,820 este exact ceea ce este echivalent cu A. 214 00:09:41,820 --> 00:09:45,114 Deci, asta e un fel de ușor mod de a gândi despre asta. 215 00:09:45,114 --> 00:09:46,405 Alte întrebări pe hexazecimal. 216 00:09:46,405 --> 00:09:50,510 217 00:09:50,510 --> 00:09:56,870 >> OK, asa ca acum vom avea O privire la operatorii la nivel de bit. 218 00:09:56,870 --> 00:09:58,882 Deci, acestea pot cu siguranta veni pe testul. 219 00:09:58,882 --> 00:10:00,590 Știu că nu avem a lucrat cu ei mult. 220 00:10:00,590 --> 00:10:02,756 Dar noi suntem doar de gând să faci un pic de revizuire a acestora. 221 00:10:02,756 --> 00:10:05,490 Deci sperăm că acestea vor fi un pic mai familiar pentru tine. 222 00:10:05,490 --> 00:10:10,220 Deci cele șase operatori la nivel de bit care le-am sunt indicate aici. 223 00:10:10,220 --> 00:10:13,340 Și-au lăsat să ne manipuleze biți individuale. 224 00:10:13,340 --> 00:10:16,676 Deci, operatorul AND este un singur ampersand. 225 00:10:16,676 --> 00:10:18,550 A nu se confunda cu care dublu ampersand, 226 00:10:18,550 --> 00:10:21,840 care este logică și că ne permite să comparăm două lucruri. 227 00:10:21,840 --> 00:10:25,860 >> Este unică și cum putem manipula lucruri la nivel de bit. 228 00:10:25,860 --> 00:10:29,910 Deci, aceasta ne dă rezultatul 1 dacă ambele din argumentele pe care ne compara 229 00:10:29,910 --> 00:10:32,440 sunt same-- sau sunt 1. 230 00:10:32,440 --> 00:10:39,370 Și bara verticală, sau, va da ne 1 dacă cel puțin unul dintre ei este 1. 231 00:10:39,370 --> 00:10:41,460 Deci, practic exact ceea ce implică cuvintele. 232 00:10:41,460 --> 00:10:46,640 Și, dacă cele două biți sunt 1, 1 și 1 ne dă 1. 233 00:10:46,640 --> 00:10:51,769 Dar, cu sau, dacă este 0 sau 1, sau 1 sau 1, în ambele cazuri, 234 00:10:51,769 --> 00:10:53,060 Avem 1 ca fiind unul dintre ei. 235 00:10:53,060 --> 00:10:54,101 Deci, atunci ne-ar obține o 1. 236 00:10:54,101 --> 00:10:56,320 Audiența: Ce vrei să spui că se spune că dă 1? 237 00:10:56,320 --> 00:10:58,236 >> CAMILLE REKHSON: a rezultat. Un fel de, ca tine 238 00:10:58,236 --> 00:11:05,060 would-- dacă ai făcut 0 și 1, The urmare a care ar fi 1-- sau 0 239 00:11:05,060 --> 00:11:08,920 și 1 cu rezultatul care ar fi 0, îmi pare rău. 240 00:11:08,920 --> 00:11:12,190 Da, a fost un fel de rezultat al expresiei. 241 00:11:12,190 --> 00:11:16,520 Și apoi, acest simbol caret este XOR, sau exclusive sau. 242 00:11:16,520 --> 00:11:21,920 Asta înseamnă că unul sau exact exclusiv unul dintre cele două argumente este egal cu 1. 243 00:11:21,920 --> 00:11:24,210 Și apoi te-ai da o. 244 00:11:24,210 --> 00:11:27,370 >> Micul Linia ondulate este operatorul nu. 245 00:11:27,370 --> 00:11:31,940 Deci, spre deosebire de ceilalți, care funcționează pe o pereche de biți, 246 00:11:31,940 --> 00:11:34,930 operatorul nu numai să un bit, și se va răsturna. 247 00:11:34,930 --> 00:11:37,640 Deci, dacă give-- dacă faci NU 0, v-ar da 1. 248 00:11:37,640 --> 00:11:40,248 Și dacă nu o, l-ar da 0. 249 00:11:40,248 --> 00:11:40,748 Da? 250 00:11:40,748 --> 00:11:41,150 >> Audiența: Care este diferența între sau cu o linie 251 00:11:41,150 --> 00:11:41,983 și sau cu doi? 252 00:11:41,983 --> 00:11:44,430 253 00:11:44,430 --> 00:11:46,930 CAMILLE REKHSON: Deci sau cu două linii este sau logice. 254 00:11:46,930 --> 00:11:52,430 Deci asta e pentru compararea două numere întregi pline, sau two-- 255 00:11:52,430 --> 00:11:53,730 pentru a vedea dacă lucrurile sunt egale. 256 00:11:53,730 --> 00:11:58,340 Sau ca face acest lucru este egală cu acest lucru, Sau asta este egal cu acest lucru tip. 257 00:11:58,340 --> 00:12:04,090 Întrucât bara unice sau, este pentru a face lucruri la nivel de bit. 258 00:12:04,090 --> 00:12:04,590 Da. 259 00:12:04,590 --> 00:12:06,680 >> Audiența: Ce vrei să spui prin biți? 260 00:12:06,680 --> 00:12:10,330 >> CAMILLE REKHSON: Deci este de lucru la nivel de bit direct cu biții din binar. 261 00:12:10,330 --> 00:12:11,596 >> Audiența: Oh, văd. 262 00:12:11,596 --> 00:12:15,000 >> CAMILLE REKHSON: Da, așa de lucru cu 0 și 1 a lui. 263 00:12:15,000 --> 00:12:18,310 Vom face câteva exemple în acest sens după, doar ca nu e prea confuz. 264 00:12:18,310 --> 00:12:20,970 Și apoi ultimele două sunt SHIFT stânga și trecerea dreapta. 265 00:12:20,970 --> 00:12:23,970 Care sunt de fapt mai puțin de două semne sau doi mai mare decât semne. 266 00:12:23,970 --> 00:12:26,294 Și au trecut la pic numărul dat de locuri 267 00:12:26,294 --> 00:12:27,710 pe care le da în direcția. 268 00:12:27,710 --> 00:12:29,980 Așa că l-ar schimba, fie la stânga, sau la dreapta. 269 00:12:29,980 --> 00:12:30,480 Da? 270 00:12:30,480 --> 00:12:32,470 Audiența: Care este sintaxa pentru a rula? 271 00:12:32,470 --> 00:12:33,950 >> CAMILLE REKHSON: Vom du-te printr-un exemplu într-un al doilea. 272 00:12:33,950 --> 00:12:35,680 Deci sperăm, care va ajuta. 273 00:12:35,680 --> 00:12:41,060 Orice întrebări cu privire la doar ce-i aici, before-- OK. 274 00:12:41,060 --> 00:12:43,821 Deci, trece prin câteva exemple. 275 00:12:43,821 --> 00:12:45,070 Să începem cu cele ȘI. 276 00:12:45,070 --> 00:12:47,880 Ce s-ar obține dacă am am 0 și 1? 277 00:12:47,880 --> 00:12:48,899 >> Audiența: 0. 278 00:12:48,899 --> 00:12:50,690 CAMILLE REKHSON: OK, și dacă am 1 și 1? 279 00:12:50,690 --> 00:12:51,622 Audiența: 1. 280 00:12:51,622 --> 00:12:54,490 CAMILLE REKHSON: Da, Ce se întâmplă dacă am făcut 0 sau unul? 281 00:12:54,490 --> 00:12:55,094 Audiența: 1. 282 00:12:55,094 --> 00:12:56,510 CAMILLE REKHSON: Ce zici de 1 sau 1? 283 00:12:56,510 --> 00:12:57,404 Audiența: 1. 284 00:12:57,404 --> 00:13:00,410 CAMILLE REKHSON: OK, ce zici de 0 XOR 1? 285 00:13:00,410 --> 00:13:01,380 Audiența: 1. 286 00:13:01,380 --> 00:13:03,120 CAMILLE REKHSON: Și 1 XOR 1? 287 00:13:03,120 --> 00:13:03,902 Audiența: 0. 288 00:13:03,902 --> 00:13:05,360 CAMILLE REKHSON: Voi sunt bune. 289 00:13:05,360 --> 00:13:06,510 Ce zici NU 0? 290 00:13:06,510 --> 00:13:07,265 >> Audiența: 1. 291 00:13:07,265 --> 00:13:08,390 CAMILLE REKHSON: și nu 1? 292 00:13:08,390 --> 00:13:09,602 Audiența: 0. 293 00:13:09,602 --> 00:13:12,810 CAMILLE REKHSON: OK, și apoi această ultimă unul e un pic unul cu deplasarea. 294 00:13:12,810 --> 00:13:18,700 Deci, dacă ne-am stabilit inițial X să fie de 8, și atunci y este X deplasat spre stânga 3, 295 00:13:18,700 --> 00:13:19,760 ce s-ar care ne da? 296 00:13:19,760 --> 00:13:20,676 >> Audiența: [neauzit]. 297 00:13:20,676 --> 00:13:22,817 298 00:13:22,817 --> 00:13:24,150 CAMILLE REKHSON: Să presupunem că din nou. 299 00:13:24,150 --> 00:13:26,740 Audiența: [neauzit]. 300 00:13:26,740 --> 00:13:28,766 CAMILLE REKHSON: Deci, aceasta de fapt, ne dă 64. 301 00:13:28,766 --> 00:13:29,876 Audiența: [neauzit]. 302 00:13:29,876 --> 00:13:32,250 CAMILLE REKHSON: Deci, eu sunt doar O să scrie asta aici, 303 00:13:32,250 --> 00:13:34,700 astfel încât aceasta face un pic de sens. 304 00:13:34,700 --> 00:13:45,120 Dacă avem 2 la 0, 2 la 1, 2 la 2, 2-3 va fi de 8. 305 00:13:45,120 --> 00:13:52,380 Și dacă vrem să-l transfere 3 mai multe biți spre stânga, care ar fi 2 la 4, 306 00:13:52,380 --> 00:13:57,270 2 la 5, și 2 la 6, și 2 la 6 este 64. 307 00:13:57,270 --> 00:13:59,920 308 00:13:59,920 --> 00:14:01,110 Are care face sens? 309 00:14:01,110 --> 00:14:05,291 310 00:14:05,291 --> 00:14:05,791 Da. 311 00:14:05,791 --> 00:14:08,725 >> Audiența: face acest lucru de schimbare toate la 1 și 0 lui din numărul binar la the-- 312 00:14:08,725 --> 00:14:09,600 >> CAMILLE REKHSON: Da. 313 00:14:09,600 --> 00:14:12,150 314 00:14:12,150 --> 00:14:15,170 Și nu va trebui să vă faceți griji cu privire la test despre acestea fiind negativ. 315 00:14:15,170 --> 00:14:19,510 Noi nu va va face sa se ocupe de schimbări negative în nici un fel. 316 00:14:19,510 --> 00:14:24,070 Orice alte întrebări despre asta? 317 00:14:24,070 --> 00:14:24,570 Da. 318 00:14:24,570 --> 00:14:30,570 >> Audiența: Daca este trecerea la dreapta, este ceva care wasn't-- nimic din ce 319 00:14:30,570 --> 00:14:33,220 nu a fost inițial parte din lucru 0? 320 00:14:33,220 --> 00:14:37,110 >> CAMILLE REKHSON: Da, ar trebui să trebuie doar să adăugați 0 pe în original. 321 00:14:37,110 --> 00:14:38,110 Da. 322 00:14:38,110 --> 00:14:41,540 >> Audiența: Deci, ce este că 100 mutat la dreapta de trei ori? 323 00:14:41,540 --> 00:14:43,290 CAMILLE REKHSON: 100 deplasat spre dreapta, 324 00:14:43,290 --> 00:14:46,057 astfel încât să ia toate Lui 1 și 0 și doar le schimba 325 00:14:46,057 --> 00:14:48,515 spre dreapta de câte ori este ai de a trece la dreapta. 326 00:14:48,515 --> 00:14:50,452 >> Audiența: [inaudibil]? 327 00:14:50,452 --> 00:14:53,160 CAMILLE REKHSON: Ei bine, sunt 100-- vorbești despre 100 în binar, 328 00:14:53,160 --> 00:14:53,910 sau 100 în zecimal? 329 00:14:53,910 --> 00:14:55,750 Audiența: Îmi pare rău, 100 în binar. 330 00:14:55,750 --> 00:14:58,916 >> CAMILLE REKHSON: 100 în binar, dacă îl trecerea la right-- 331 00:14:58,916 --> 00:15:01,040 dacă trecerea la dreapta odată, ar deveni 10. 332 00:15:01,040 --> 00:15:04,430 Dacă îl trecerea la dreapta de două ori, ar deveni 001. 333 00:15:04,430 --> 00:15:07,590 Și apoi, dacă l-ați schimba din nou, ai un fel de pierde biți. 334 00:15:07,590 --> 00:15:09,610 Da, asta e doar 0. 335 00:15:09,610 --> 00:15:12,140 Orice alte întrebări cu privire la asta? 336 00:15:12,140 --> 00:15:12,835 Da. 337 00:15:12,835 --> 00:15:14,695 >> Audiența: Deci el devine 000. 338 00:15:14,695 --> 00:15:17,020 >> CAMILLE REKHSON: Da. 339 00:15:17,020 --> 00:15:22,150 OK, deci hai să mergem printr-o pic de matematica ASCII. 340 00:15:22,150 --> 00:15:25,120 Deci, în esență, caractere pot tratate ca numere întregi 341 00:15:25,120 --> 00:15:28,290 bazat pe valorile lor ASCII. 342 00:15:28,290 --> 00:15:35,250 Deci, dacă ne-am așezat int A este egal cu 65 de ani, int B este egal cu A plus 1, int char C este egal cu 343 00:15:35,250 --> 00:15:39,565 D minus 1, și caracter D este egal cu 68, ce s-ar imprima în partea de jos? 344 00:15:39,565 --> 00:15:46,150 345 00:15:46,150 --> 00:15:49,720 >> Deci, suntem de imprimare these-- binecuvânteze Tu-- suntem 346 00:15:49,720 --> 00:15:53,520 tipărirea toate aceste ca caractere bazat pe procente C. 347 00:15:53,520 --> 00:15:56,320 Așa că, practic imprimarea valoarea caracterul toate cele patru 348 00:15:56,320 --> 00:15:58,600 din aceste variabile. 349 00:15:58,600 --> 00:16:04,280 Ca un indiciu, 65 este valoarea ASCII din capitalul A. Poate că a ajutat. 350 00:16:04,280 --> 00:16:04,780 Ce? 351 00:16:04,780 --> 00:16:05,530 >> Audiența: ABCD. 352 00:16:05,530 --> 00:16:07,780 >> CAMILLE REKHSON: Da, așa acest lucru ar imprima exact 353 00:16:07,780 --> 00:16:10,290 ABCD pentru că ne-am stabilit int A egală cu valoarea ASCII a A. 354 00:16:10,290 --> 00:16:13,085 Deci, dacă ne-am imprima asta ca o caracter, vom obține doar de capital A, 355 00:16:13,085 --> 00:16:15,540 Un plus 1 ar fi un capital B din ASCII. 356 00:16:15,540 --> 00:16:19,260 D minus 1 ar fi un capital C în ASCII. 357 00:16:19,260 --> 00:16:25,185 Și 68 este valoarea ASCII de D. Întrebări pe ASCII? 358 00:16:25,185 --> 00:16:25,685 Da. 359 00:16:25,685 --> 00:16:31,370 >> Audiența: Deci, cotația marchează în jurul valorii de O, nu faptul că schimbările de la A la ASCII? 360 00:16:31,370 --> 00:16:34,456 >> CAMILLE REKHSON: îl uses-- ghilimele simple count-- jurul A 361 00:16:34,456 --> 00:16:35,330 face un caracter. 362 00:16:35,330 --> 00:16:37,600 Și dacă ai de a face cu ea a numărului form-- 363 00:16:37,600 --> 00:16:40,320 astfel încât atunci când, la fel ca în acest caz, este fiind tratate ca un int-- 364 00:16:40,320 --> 00:16:44,664 atunci s-ar ocupa cu e valoare ASCII. 365 00:16:44,664 --> 00:16:45,164 Da. 366 00:16:45,164 --> 00:16:50,060 >> Audiența: Ai recomanda ca avem o masă de referință ASCII? 367 00:16:50,060 --> 00:16:51,900 >> CAMILLE REKHSON: Eu nu think-- 368 00:16:51,900 --> 00:16:54,720 >> Audiența: sau ar numai o se face cu astea? 369 00:16:54,720 --> 00:16:56,210 >> CAMILLE REKHSON: Cred că ar face cu lucruri simple. 370 00:16:56,210 --> 00:16:58,168 Eu nu cred că ar fi rănit să scrie, poate, 371 00:16:58,168 --> 00:17:02,653 ce de capital litere mici A și A sunt, doar ce aceste intervale sunt începând cu. 372 00:17:02,653 --> 00:17:05,819 Dar eu nu cred că trebuie să ia toate spațiul pentru a pune un tabel ASCII întreg. 373 00:17:05,819 --> 00:17:06,803 Da. 374 00:17:06,803 --> 00:17:09,755 >> Audiența: Care este diferența între a spune Int A și char C, 375 00:17:09,755 --> 00:17:12,720 cum faci la partea de sus? 376 00:17:12,720 --> 00:17:17,380 >> CAMILLE REKHSON: Deci, e doar cum care este stocat în memorie. 377 00:17:17,380 --> 00:17:20,010 Dar se poate trata, fie un fel. 378 00:17:20,010 --> 00:17:23,274 Ca vedem aici, vom face de imprimare din A ca un personaj. 379 00:17:23,274 --> 00:17:24,690 Audiența: Deci asta e la fel ca o? 380 00:17:24,690 --> 00:17:25,606 CAMILLE REKHSON: Da. 381 00:17:25,606 --> 00:17:28,030 382 00:17:28,030 --> 00:17:29,537 Orice alte întrebări? 383 00:17:29,537 --> 00:17:32,022 >> Audiența: Deci, la suta C spune imprima un caracter? 384 00:17:32,022 --> 00:17:33,016 >> CAMILLE REKHSON: Da. 385 00:17:33,016 --> 00:17:35,501 >> Audiența: Deci, chiar dacă are doar o fost definit ca un întreg, 386 00:17:35,501 --> 00:17:37,569 dacă vom încerca să imprimați o char ca o 65 de ani, ea would-- 387 00:17:37,569 --> 00:17:40,110 CAMILLE REKHSON: Ar merge la practic se duce la graficul ASCII 388 00:17:40,110 --> 00:17:42,990 și devine indiferent de caractere în graficul ASCII pentru că 65. 389 00:17:42,990 --> 00:17:43,840 >> Audiența: Mulțumesc. 390 00:17:43,840 --> 00:17:44,756 >> CAMILLE REKHSON: Da. 391 00:17:44,756 --> 00:17:45,445 Da? 392 00:17:45,445 --> 00:17:50,620 >> Audiența: Deci, dacă ați făcut% I,% I, % I,% I, ar doar print-- 393 00:17:50,620 --> 00:17:52,620 CAMILLE REKHSON: Da, dacă ați făcut tot ce 4% I, aceasta 394 00:17:52,620 --> 00:17:57,170 ar imprima ASCII Valorile de toate acestea patru. 395 00:17:57,170 --> 00:17:59,483 Orice alte întrebări? 396 00:17:59,483 --> 00:18:06,310 OK, deci domeniul de aplicare, practic acest ajută-ne determina unde 397 00:18:06,310 --> 00:18:08,450 o variabilă există în programul tău. 398 00:18:08,450 --> 00:18:11,910 Deci am vorbit despre două diferite tipuri de domeniu, la nivel global și local. 399 00:18:11,910 --> 00:18:14,560 >> Dacă o variabilă este scoped la nivel global, înseamnă întregul program de 400 00:18:14,560 --> 00:18:16,292 are acces la acea variabilă. 401 00:18:16,292 --> 00:18:18,000 Și dacă la nivel global domeniul de aplicare o variabilă, tu 402 00:18:18,000 --> 00:18:19,510 declare înainte funcția principală. 403 00:18:19,510 --> 00:18:20,830 Deci se face chiar de la început. 404 00:18:20,830 --> 00:18:22,950 Și apoi toată dvs. Programul poate fi accesat. 405 00:18:22,950 --> 00:18:26,070 >> Dacă este scoped doar la nivel local, care variabilă limitate la o anumită regiune. 406 00:18:26,070 --> 00:18:29,705 Deci, dacă declară într-un pentru buclă, doar că pentru buclă poate fi accesat. 407 00:18:29,705 --> 00:18:31,580 Sau dacă în termen de declara o funcție specifică, 408 00:18:31,580 --> 00:18:34,940 numai această funcție poate fi accesat. 409 00:18:34,940 --> 00:18:38,265 Întrebări cu privire la domeniul de aplicare. 410 00:18:38,265 --> 00:18:41,570 >> OK, deci funcția de prototipuri. 411 00:18:41,570 --> 00:18:45,360 Practic, deoarece C, când ea compilează, se arata sus în jos. 412 00:18:45,360 --> 00:18:48,800 Dacă declarați o funcție târziu în codul dvs., 413 00:18:48,800 --> 00:18:51,670 compilatorul nu știe care există această funcție. 414 00:18:51,670 --> 00:18:55,690 Deci, ce vom folosi sunt prototipuri, care spune în esență compilatorului, 415 00:18:55,690 --> 00:18:58,710 Această funcție există, du-te uita pentru mai târziu în codul. 416 00:18:58,710 --> 00:19:00,900 Deci felul în care faci un prototip funcție 417 00:19:00,900 --> 00:19:03,020 este exact modul în care începe off scris o funcție. 418 00:19:03,020 --> 00:19:05,310 Ai da tipul de retur, numele funcției, 419 00:19:05,310 --> 00:19:08,930 și apoi argumente că această funcție are. 420 00:19:08,930 --> 00:19:13,970 >> Deci, să se uite la un exemplu rapid, în acest majuscule funcția noastră că suntem aici, folosind 421 00:19:13,970 --> 00:19:15,340 este de fapt o funcție cub. 422 00:19:15,340 --> 00:19:19,170 Deci, luând în un număr întreg și returnarea cubul de care întreg. 423 00:19:19,170 --> 00:19:23,190 Deci pentru că ne-am scris că Funcția de mai jos funcția principală, 424 00:19:23,190 --> 00:19:26,300 și vrem să utilizați ieșire de that-- sau ne 425 00:19:26,300 --> 00:19:28,630 doresc să această funcție în funcție nostru principal, 426 00:19:28,630 --> 00:19:31,980 am pus drum prototip în partea de sus a programului nostru. 427 00:19:31,980 --> 00:19:34,460 Și apoi când numim l în funcție nostru principal, 428 00:19:34,460 --> 00:19:38,800 compilatorul știe că această funcție este scris mai târziu, și va merge-l caute, 429 00:19:38,800 --> 00:19:40,910 și va folosi în mod corespunzător. 430 00:19:40,910 --> 00:19:45,190 Întrebări cu privire la prototipuri? 431 00:19:45,190 --> 00:19:45,690 Da. 432 00:19:45,690 --> 00:19:46,940 >> Audiența: Deci, ce rost are? 433 00:19:46,940 --> 00:19:49,374 434 00:19:49,374 --> 00:19:50,915 Eu nu primesc punctul de prototipuri. 435 00:19:50,915 --> 00:19:52,820 De ce nu doar avea acolo? 436 00:19:52,820 --> 00:19:54,903 >> CAMILLE REKHSON: Ei bine, dacă e aici, atunci când 437 00:19:54,903 --> 00:19:57,020 ajungi la linia de cub X în funcția principală, 438 00:19:57,020 --> 00:19:59,495 compilatorul va avea nici o idee că funcția cub de fapt există. 439 00:19:59,495 --> 00:20:01,310 >> Audiența: Nu puteai doar pus în fața? 440 00:20:01,310 --> 00:20:02,350 >> CAMILLE REKHSON: E mai bine practica de codificare 441 00:20:02,350 --> 00:20:04,150 să-l pună sub funcția principală. 442 00:20:04,150 --> 00:20:06,350 Deci, de aceea ne-ar face prototipuri. 443 00:20:06,350 --> 00:20:07,680 Doar pentru că, dacă a avut o mulțime de funcții, 444 00:20:07,680 --> 00:20:10,180 ar fi foarte murdar la citit prin toate aceste funcții 445 00:20:10,180 --> 00:20:12,030 înainte de a ajunge la carne de programul tău. 446 00:20:12,030 --> 00:20:13,888 Da, si tu ai avut o q-- 447 00:20:13,888 --> 00:20:16,796 >> Audiența: Deci, declară variabila sus la partea de sus 448 00:20:16,796 --> 00:20:18,795 astfel încât să puteți accesa, face o variabilă globală? 449 00:20:18,795 --> 00:20:21,119 Este că similar cu această în cazul în care este ea declarând 450 00:20:21,119 --> 00:20:23,660 acolo, astfel încât să știe că este de gând să-l accesa mai târziu 451 00:20:23,660 --> 00:20:24,762 și îl puteți folosi? 452 00:20:24,762 --> 00:20:26,146 >> CAMILLE REKHSON: Da. 453 00:20:26,146 --> 00:20:26,646 Da. 454 00:20:26,646 --> 00:20:30,414 >> Audiența: În cazul în care the-- orice suplimentare Funcțiile să creați cheie în afara 455 00:20:30,414 --> 00:20:31,840 de acest lucru, sau-- 456 00:20:31,840 --> 00:20:33,760 >> CAMILLE REKHSON: Da, dacă ești crearea de alte principal functions-- 457 00:20:33,760 --> 00:20:36,385 în sine este, deci, dacă function-- te crearea de alte funcții, 458 00:20:36,385 --> 00:20:37,555 acestea ar trebui să fie în afara. 459 00:20:37,555 --> 00:20:38,055 Da? 460 00:20:38,055 --> 00:20:39,734 >> Audiența: Ce este suta D? 461 00:20:39,734 --> 00:20:42,150 CAMILLE REKHSON: Procent D este același lucru ca la sută I. 462 00:20:42,150 --> 00:20:45,915 Se referă la un număr întreg. 463 00:20:45,915 --> 00:20:47,895 Da. 464 00:20:47,895 --> 00:20:50,370 >> Audiența: Deci Ce face principal Int? 465 00:20:50,370 --> 00:20:51,724 Ce a fost asta gol? 466 00:20:51,724 --> 00:20:53,890 CAMILLE REKHSON: Void spune este nevoie de nici un argument în. 467 00:20:53,890 --> 00:20:55,320 Audiența: [neauzit]. 468 00:20:55,320 --> 00:20:57,570 CAMILLE REKHSON: Poți vorbesc un pic mai tare, îmi pare rău? 469 00:20:57,570 --> 00:21:00,153 Audiența: Da, îmi pare rău, de ce a făcut ai pus anula pentru prima, 470 00:21:00,153 --> 00:21:02,297 și apoi int de intrare pentru al doilea? 471 00:21:02,297 --> 00:21:04,720 472 00:21:04,720 --> 00:21:07,470 CAMILLE REKHSON: Oh, pentru cele două different-- pentru funcția principală 473 00:21:07,470 --> 00:21:09,290 față de funcția de cub? 474 00:21:09,290 --> 00:21:13,360 Deci, în funcția principală, vom folosi nule, deoarece nu 475 00:21:13,360 --> 00:21:16,870 există parametri fiind luate în. 476 00:21:16,870 --> 00:21:19,425 În timp ce în cubul funcție, avem o intrare. 477 00:21:19,425 --> 00:21:22,300 De aceea se spune Int, de intrare, pentru că există argumente care suntem 478 00:21:22,300 --> 00:21:24,571 luând în pentru a rula funcția noastră. 479 00:21:24,571 --> 00:21:25,070 Da. 480 00:21:25,070 --> 00:21:27,770 481 00:21:27,770 --> 00:21:30,464 Sunt întrebări? 482 00:21:30,464 --> 00:21:34,520 >> OK, și apoi repede virgulă mobilă imprecizie. 483 00:21:34,520 --> 00:21:37,200 Deci avem infinit mai multe numere reale. 484 00:21:37,200 --> 00:21:38,950 Dar există doar un număr finit de biți 485 00:21:38,950 --> 00:21:42,880 pe care le putem folosi pentru a afișa cele numere, și să îi reprezinte. 486 00:21:42,880 --> 00:21:45,020 Deci, atunci vom ajunge cu unele imprecizie. 487 00:21:45,020 --> 00:21:49,190 Și numerele nu vor fi întotdeauna destul de exact ceea ce 488 00:21:49,190 --> 00:21:51,810 crezi că sunt atunci când sunteți care se ocupă cu virgulă mobilă. 489 00:21:51,810 --> 00:21:53,650 Acest lucru este doar ceva bine de știut. 490 00:21:53,650 --> 00:21:56,628 Întrebări cu privire la aceasta? 491 00:21:56,628 --> 00:21:59,610 Da. 492 00:21:59,610 --> 00:22:02,090 >> Audiența: Este de trimitere la ideea de biți preaplin 493 00:22:02,090 --> 00:22:03,089 care era în curs? 494 00:22:03,089 --> 00:22:06,080 A fost că ceva separat? 495 00:22:06,080 --> 00:22:09,650 >> CAMILLE REKHSON: Sunt complet separat, da. 496 00:22:09,650 --> 00:22:11,160 Bine, minunat. 497 00:22:11,160 --> 00:22:16,369 498 00:22:16,369 --> 00:22:17,452 PULAK Goyal: Salut, toată lumea. 499 00:22:17,452 --> 00:22:19,872 Numele meu este Pulak, si voi fie trecând peste indicii. 500 00:22:19,872 --> 00:22:23,260 501 00:22:23,260 --> 00:22:25,720 OK, deci haideți să primul think despre ceea ce arata ca de memorie. 502 00:22:25,720 --> 00:22:28,610 Deci, după cum puteți vedea aici, am ia de memorie și l-am împărțim 503 00:22:28,610 --> 00:22:30,090 într-o grămadă de blocuri. 504 00:22:30,090 --> 00:22:33,150 Și noi de referință fiecare bloca de o adresă, nu? 505 00:22:33,150 --> 00:22:37,196 Și nimeni nu ne amintim ce tip de notație vom folosi pentru a desemna o adresă? 506 00:22:37,196 --> 00:22:38,510 >> Audiența: Hexadecimal, 0X. 507 00:22:38,510 --> 00:22:39,510 >> PULAK Goyal: hexazecimal, nu? 508 00:22:39,510 --> 00:22:41,509 Deci, 0x înseamnă că suntem vorbesc despre hexazecimal. 509 00:22:41,509 --> 00:22:45,740 510 00:22:45,740 --> 00:22:48,360 OK, deci cum putem crea indicii? 511 00:22:48,360 --> 00:22:51,960 Așa că am să ia tip, am pune it-- adăuga o stea la acesta, 512 00:22:51,960 --> 00:22:53,760 și apoi se adaugă numele variabilei. 513 00:22:53,760 --> 00:22:59,280 Deci exemplele le-am vazut sunt int X stele, y stele char, float și începe z. 514 00:22:59,280 --> 00:23:01,380 Așa că atunci când spun stea Int X, poate cineva spune-mi 515 00:23:01,380 --> 00:23:03,965 ce vreau să fel de a vorbi despre acolo? 516 00:23:03,965 --> 00:23:05,710 >> Audiența: Locul de amplasare a discului. 517 00:23:05,710 --> 00:23:06,890 >> PULAK Goyal: Ne pare rău, ce? 518 00:23:06,890 --> 00:23:07,723 Poti sa repeti asta? 519 00:23:07,723 --> 00:23:09,250 Audiența: Amplasarea disc. 520 00:23:09,250 --> 00:23:12,390 >> PULAK Goyal: Deci actually-- deci ce Am vrut să spun, este atunci când ne-am int stea x, 521 00:23:12,390 --> 00:23:14,400 ce spunem este crearea un pointer, și 522 00:23:14,400 --> 00:23:17,130 poate stoca adresa unui variabilă care este un int, nu? 523 00:23:17,130 --> 00:23:21,810 Deci, cu y stea char, suntem crearea unui pointer 524 00:23:21,810 --> 00:23:24,220 care poate stoca adresa de o variabilă care este un char. 525 00:23:24,220 --> 00:23:26,270 Astfel încât sens pentru toată lumea? 526 00:23:26,270 --> 00:23:29,600 Bine, in regula 527 00:23:29,600 --> 00:23:33,450 >> OK, deci cu indicii, există două operațiuni importante putem face. 528 00:23:33,450 --> 00:23:36,630 Există referire, și acolo a dereferencing. 529 00:23:36,630 --> 00:23:37,130 Da? 530 00:23:37,130 --> 00:23:38,760 >> Audiența: Ar putea merge un pic mai lent? 531 00:23:38,760 --> 00:23:39,510 >> PULAK Goyal: Sigur. 532 00:23:39,510 --> 00:23:45,350 Da, da deci--, pune întrebări așa cum am merge de-a lungul dacă Tu-- dacă ceva este neclar. 533 00:23:45,350 --> 00:23:47,240 Deci, ne-am referire și dereferencing. 534 00:23:47,240 --> 00:23:51,680 Deci, atunci când doriți să obțineți adresa unei variabile, apoi utilizați ampersand. 535 00:23:51,680 --> 00:23:53,620 Așa că haideți să spun că am declarat int x undeva. 536 00:23:53,620 --> 00:23:57,450 Și vreau să obțineți adresa de pe care și să-l dați în, aș face ampersand x. 537 00:23:57,450 --> 00:24:01,260 Iar atunci când doriți să obțineți Valoarea asociată cu un pointer, 538 00:24:01,260 --> 00:24:04,670 utilizați dereference Operatorul, care este o stea. 539 00:24:04,670 --> 00:24:08,570 >> Deci, haideți să spun că am avut Int stele X, și Am avut-o indică spre ceva. 540 00:24:08,570 --> 00:24:13,510 Dacă vreau să obțineți valoarea a ceea ce este arătând spre, aș face doar stele X. 541 00:24:13,510 --> 00:24:14,960 Este clar? 542 00:24:14,960 --> 00:24:16,390 Orice întrebări despre asta? 543 00:24:16,390 --> 00:24:18,129 Da. 544 00:24:18,129 --> 00:24:25,275 >> Audiența: Deci, în general,, tu nu va fi capabil să facă la X și stele 545 00:24:25,275 --> 00:24:27,135 x cu aceeași x. 546 00:24:27,135 --> 00:24:28,740 Este corect? 547 00:24:28,740 --> 00:24:31,800 Pentru că dacă x este un variabilă, atunci aveți 548 00:24:31,800 --> 00:24:35,980 să facă la X pentru a obține că este un pointer. 549 00:24:35,980 --> 00:24:40,810 Dar dacă x este un pointer, atunci ai nevoie de de a face stea X pentru a obține variabila. 550 00:24:40,810 --> 00:24:43,240 >> PULAK Goyal: Da, astfel încât Întrebarea a fost de aproximativ atunci când 551 00:24:43,240 --> 00:24:45,750 folosim un star-- atunci când ați folosi steaua, 552 00:24:45,750 --> 00:24:47,470 și când vom folosi ampersand, și putem 553 00:24:47,470 --> 00:24:49,160 l utilizați cu același tip de variabilă? 554 00:24:49,160 --> 00:24:51,810 Deci, de obicei, în cazul în care aveți, de exemplu, un int x, 555 00:24:51,810 --> 00:24:55,170 v-ar fi cea mai mare parte folosind ampersand pentru a obține adresa de pe care. 556 00:24:55,170 --> 00:24:58,220 Pentru că nu face sens să respectăm în X. 557 00:24:58,220 --> 00:25:04,220 Întrucât, în cazul în care am avut stea int x, ai fi utilizați funcționare dereference 558 00:25:04,220 --> 00:25:07,910 deoarece ar face nici un sens de a utiliza la X în acest caz. 559 00:25:07,910 --> 00:25:09,582 Are care face sens? 560 00:25:09,582 --> 00:25:13,192 >> Audiența: Deci nu se poate și, iar apoi un pointer? 561 00:25:13,192 --> 00:25:14,900 PULAK Goyal: Deci punct de vedere tehnic, de fapt, 562 00:25:14,900 --> 00:25:16,870 poate face ampersand de un pointer. 563 00:25:16,870 --> 00:25:18,984 Dar asta e din cele Domeniul de aplicare al acestei clase. 564 00:25:18,984 --> 00:25:21,900 Pentru purpose-- pentru baieti dvs. scopuri, ori de câte ori aveți indicii, 565 00:25:21,900 --> 00:25:25,191 doriți să utilizați operatorul dereference pentru a obține valoarea asociată cu asta. 566 00:25:25,191 --> 00:25:27,380 Și când ai regulat variabile, ca un int x, 567 00:25:27,380 --> 00:25:31,410 doriți să utilizați ampersand operatorul pentru a obține adresa de pe care. 568 00:25:31,410 --> 00:25:31,910 OK? 569 00:25:31,910 --> 00:25:35,670 570 00:25:35,670 --> 00:25:38,850 >> OK, deci să ne uităm la indicii și ceea ce se întâmplă sub capota. 571 00:25:38,850 --> 00:25:42,640 Deci, primul lucru am facut aici este INT declarată x este egal cu 5. 572 00:25:42,640 --> 00:25:48,460 Adresa acestei variabile este 0x04, iar valoarea este 5. 573 00:25:48,460 --> 00:25:52,940 Deci, haideți să vedem ce se întâmplă cu linia următoare. 574 00:25:52,940 --> 00:25:55,130 Deci, acum ne-am declara un pointer. 575 00:25:55,130 --> 00:26:01,450 Adresa sa este 0x08, și ei Valoarea este adresa lui x. 576 00:26:01,450 --> 00:26:05,220 Asta face sens pentru toată lumea? 577 00:26:05,220 --> 00:26:06,507 Orice întrebări despre asta? 578 00:26:06,507 --> 00:26:09,130 579 00:26:09,130 --> 00:26:13,080 >> OK, și acum să vedem ce se întâmplă cu linia următoare. 580 00:26:13,080 --> 00:26:18,140 Deci, cu această linie următoare, ne-am adresa de copiere a fi 0x10, 581 00:26:18,140 --> 00:26:20,780 iar valoarea sa este 5. 582 00:26:20,780 --> 00:26:23,570 Deci motivul pentru care am primit cinci este am spus, am dereference 583 00:26:23,570 --> 00:26:26,740 pointer, pe care am declarat-o stea Int. 584 00:26:26,740 --> 00:26:35,797 Și așa went-- când dereference o, a spus, OK, ceea ce este în 0x04 Slot. 585 00:26:35,797 --> 00:26:36,630 Sa dus la asta. 586 00:26:36,630 --> 00:26:40,785 Și ce este o x0-- X 0x04, iar valoarea este 5. 587 00:26:40,785 --> 00:26:41,660 Are sens? 588 00:26:41,660 --> 00:26:42,334 Da? 589 00:26:42,334 --> 00:26:50,090 >> Audiența: De ce este adresa copia lui doar 4 bytes deasupra X indicatorul? 590 00:26:50,090 --> 00:26:52,318 >> PULAK Goyal: Da, aceasta este o greșeală on-- 591 00:26:52,318 --> 00:26:55,304 >> CAMILLE REKHSON: Deci, da, amintiți-vă acest lucru este scris în hexazecimal. 592 00:26:55,304 --> 00:26:56,220 PULAK Goyal: Oh, da. 593 00:26:56,220 --> 00:26:58,615 CAMILLE REKHSON: Deci asta este, de fapt 8 și apoi 16 594 00:26:58,615 --> 00:27:00,960 pentru că am spus că, indicatorul, amintiți-vă, 595 00:27:00,960 --> 00:27:05,330 în IDE noastră va fi de 8 bytes. 596 00:27:05,330 --> 00:27:06,080 PULAK Goyal: Da. 597 00:27:06,080 --> 00:27:09,160 598 00:27:09,160 --> 00:27:12,540 Deci, doar pentru a fi clar, indicii sunt 8 bytes. 599 00:27:12,540 --> 00:27:14,160 Un întreg este de 4 octeți. 600 00:27:14,160 --> 00:27:18,380 Deci motivul ce a crescut de la 0x04 la 0x08 601 00:27:18,380 --> 00:27:20,980 este pentru că a trebuit să face un salt de 8 octeți. 602 00:27:20,980 --> 00:27:24,396 Și apoi de la for-- copie este doar un int, 603 00:27:24,396 --> 00:27:26,020 e 4 octeți, care este jumătate din 8 octeți. 604 00:27:26,020 --> 00:27:29,970 Deci, ne-am sări la 0x10, care este de două distanță de 0x08. 605 00:27:29,970 --> 00:27:33,100 606 00:27:33,100 --> 00:27:34,570 Orice alte întrebări? 607 00:27:34,570 --> 00:27:36,850 OK, let's-- da? 608 00:27:36,850 --> 00:27:39,245 >> Audiența: De ce nu este valoarea copie Int 609 00:27:39,245 --> 00:27:45,000 doar the-- ce este 5 în loc de 0x04? 610 00:27:45,000 --> 00:27:46,270 >> PULAK Goyal: OK, de ce este 5? 611 00:27:46,270 --> 00:27:51,600 OK, asa ca atunci cand the-- Să primul despre această în termeni de tipuri. 612 00:27:51,600 --> 00:27:55,600 Deci, eu spun copie int este egal cu stele pointer. 613 00:27:55,600 --> 00:27:57,490 Deci, ce este tipul de pointer? 614 00:27:57,490 --> 00:27:59,310 Este o stea Int. 615 00:27:59,310 --> 00:28:03,850 Și când am dereference că, tipul devine un int. 616 00:28:03,850 --> 00:28:06,570 Deci, ceea ce ne asteptam pentru a stoca aici este de fapt un întreg. 617 00:28:06,570 --> 00:28:07,965 Are sens? 618 00:28:07,965 --> 00:28:09,090 Audiența: Sigur, pic. 619 00:28:09,090 --> 00:28:11,465 PULAK Goyal: Deci, atunci când, de obicei, crezi că în termeni de tipuri, 620 00:28:11,465 --> 00:28:15,607 aceasta vă ajută să înțelegeți ceea ce este tip de valoarea pe care ar trebui să meargă acolo. 621 00:28:15,607 --> 00:28:17,940 Astfel încât să puteți exclude de obicei, o mulțime de aceste erori comune 622 00:28:17,940 --> 00:28:21,790 de gândire în termeni de tipuri. 623 00:28:21,790 --> 00:28:23,612 Lasă-mă să trec prin un pic mai multe diapozitive. 624 00:28:23,612 --> 00:28:26,070 Și putem obține întrebări de la sfârșitul secțiunii pointer. 625 00:28:26,070 --> 00:28:28,910 626 00:28:28,910 --> 00:28:32,290 OK, așa că avem un program de buggy aici. 627 00:28:32,290 --> 00:28:35,460 Și astfel nu poate spune cineva, cineva mi ce este în neregulă cu acest program? 628 00:28:35,460 --> 00:28:39,000 629 00:28:39,000 --> 00:28:40,820 Corect, așa că ceea ce suntem așteaptă să facă aici 630 00:28:40,820 --> 00:28:44,520 este-- ceea ce vrem să facem este să ia int variabila X 631 00:28:44,520 --> 00:28:48,350 și rotiți it-- face egal 5 în loc de 3 și apoi imprimați asta. 632 00:28:48,350 --> 00:28:49,640 Dar asta nu se întâmplă. 633 00:28:49,640 --> 00:28:50,950 Poate cineva să-mi spui de ce? 634 00:28:50,950 --> 00:28:51,934 Da? 635 00:28:51,934 --> 00:28:54,840 >> Audiența: Când funcția to_five ia X ca este argument, 636 00:28:54,840 --> 00:28:58,130 aceasta nu ia X în sine, ci în schimb creează o copie, o, de ea. 637 00:28:58,130 --> 00:29:00,115 Și aceasta face operații pe asta. 638 00:29:00,115 --> 00:29:02,614 Dar, din cauza asta, nu modifica valoarea reală a x. 639 00:29:02,614 --> 00:29:03,970 Din moment ce ești [neauzit]. 640 00:29:03,970 --> 00:29:07,950 >> PULAK Goyal: dreapta, Bine, asa ca atunci cand numim 641 00:29:07,950 --> 00:29:10,100 funcția to_five, ceea ce ce facem este de gândire, 642 00:29:10,100 --> 00:29:12,550 da-mi o copie a valoare această funcție. 643 00:29:12,550 --> 00:29:16,010 Această funcție, atunci, se va și de a face unele manipulări. 644 00:29:16,010 --> 00:29:21,260 Dar, odată ce se întoarce, e acum în de domeniul de aplicare al funcția principală de aici. 645 00:29:21,260 --> 00:29:24,750 Și așa x este încă, de fapt, egal cu 3, iar noi de imprimare 3. 646 00:29:24,750 --> 00:29:26,445 OK, deci hai sa vedem cum se intampla acest lucru. 647 00:29:26,445 --> 00:29:29,430 648 00:29:29,430 --> 00:29:31,180 >> OK, deci nu e nimic declarat. 649 00:29:31,180 --> 00:29:34,490 Apoi, aici, x este egal cu 3. 650 00:29:34,490 --> 00:29:40,820 Și acum este-- la poziția doi, un nu este încă în domeniul de aplicare. 651 00:29:40,820 --> 00:29:46,790 Și acum mergem la poziția trei, în cazul în care un asumă acum valoarea 3. 652 00:29:46,790 --> 00:29:49,380 La patru, am schimba acum o la 5. 653 00:29:49,380 --> 00:29:53,290 Dar acum, când ne sări înapoi la cinci, care este declarația de imprimare, 654 00:29:53,290 --> 00:29:55,380 o este acum în afara domeniului de aplicare. 655 00:29:55,380 --> 00:29:57,450 Și X este încă egal cu 3. 656 00:29:57,450 --> 00:29:59,700 Are acest sens pentru toată lumea? 657 00:29:59,700 --> 00:30:03,010 OK, deci acum hai sa vorbim despre cum putem folosi indicii pentru a rezolva acest lucru. 658 00:30:03,010 --> 00:30:06,140 Are cineva vreo idee cum am ar putea rezolva acest lucru prin utilizarea indicii? 659 00:30:06,140 --> 00:30:08,710 660 00:30:08,710 --> 00:30:11,490 >> Audiența: Iei într-o stea Int în loc de un întreg pentru to_five. 661 00:30:11,490 --> 00:30:12,530 >> PULAK Goyal: Ne pare rău, ați putea vorbi? 662 00:30:12,530 --> 00:30:15,266 >> Audiența: Iei într-o stea Int în loc de un întreg pentru to_five. 663 00:30:15,266 --> 00:30:16,140 PULAK Goyal: OK, da. 664 00:30:16,140 --> 00:30:20,250 Deci, haideți să pass-- loc de trecere doar valoarea, să-l treacă prin referință. 665 00:30:20,250 --> 00:30:21,690 Această nouă funcție, nu? 666 00:30:21,690 --> 00:30:25,210 Și astfel prin trecerea adresa din, am poate face manipulări pe adresa. 667 00:30:25,210 --> 00:30:27,400 Și așa suntem de fapt, De fapt, schimbarea de x. 668 00:30:27,400 --> 00:30:30,570 Deci, hai sa vedem cum care funcționează. 669 00:30:30,570 --> 00:30:32,950 >> OK, astfel încât în ​​acest exemplu l-am fixat. 670 00:30:32,950 --> 00:30:38,000 Ne-am schimbat semnătura noastră de to_five pentru a lua într-un int 671 00:30:38,000 --> 00:30:40,540 stele în loc de doar o Int aici. 672 00:30:40,540 --> 00:30:45,470 Apoi ne-am dereference acest o și atribuiți 5 la acesta. 673 00:30:45,470 --> 00:30:48,090 Și acum acest lucru va, de fapt, de imprimare 5. 674 00:30:48,090 --> 00:30:51,960 Deci, hai sa vedem cum pașii de lucru aici. 675 00:30:51,960 --> 00:30:55,200 >> Deci cu prima etapă, nu e nimic declarat încă. 676 00:30:55,200 --> 00:31:00,140 Deci, aici, cu cea de a doua etapă, am spus x este egal cu 3, 677 00:31:00,140 --> 00:31:03,970 dar este încă o afara domeniului de aplicare. 678 00:31:03,970 --> 00:31:08,100 Acum de linia a treia, avem x este încă egal cu trei. 679 00:31:08,100 --> 00:31:14,150 Și acum, am trecut in-- ceea ce este stocate într-o este acum adresa de x. 680 00:31:14,150 --> 00:31:16,760 Asta face sens pentru a toată lumea, cum am înțeles? 681 00:31:16,760 --> 00:31:21,470 Drept, avem amper-- așa am trecut un ampersand X la funcția 682 00:31:21,470 --> 00:31:23,040 to_five. 683 00:31:23,040 --> 00:31:30,330 Și apoi la următoarea linie, ceea ce facem, este am dereference o. 684 00:31:30,330 --> 00:31:36,120 >> Și de dereferencing o, suntem în măsură pentru a schimba valoarea lui x între 3 și 5. 685 00:31:36,120 --> 00:31:38,560 Deoarece X locuiește la acea adresă 0x12. 686 00:31:38,560 --> 00:31:42,440 687 00:31:42,440 --> 00:31:45,810 Și apoi, în cele din urmă, atunci când ne întoarcem înapoi la principal, 688 00:31:45,810 --> 00:31:50,570 deși acest lucru este acum o din domeniul de aplicare, am, de fapt, a schimbat de x. 689 00:31:50,570 --> 00:31:51,570 Și este de 5. 690 00:31:51,570 --> 00:31:55,160 Orice întrebări despre asta? 691 00:31:55,160 --> 00:31:56,036 Da? 692 00:31:56,036 --> 00:31:58,185 >> Audiența: Poți să-mi spui ceea ce ampersand X a fost? 693 00:31:58,185 --> 00:32:00,004 M-am gândit ampersand fost ca și. 694 00:32:00,004 --> 00:32:03,480 695 00:32:03,480 --> 00:32:07,210 >> PULAK Goyal: Da, asa ca am folosi la fel simbol pentru multe lucruri diferite. 696 00:32:07,210 --> 00:32:11,470 Deci, aici, atunci când have-- în acest caz, atunci când aveți, 697 00:32:11,470 --> 00:32:19,380 Am ghicesc în acest caz, atunci când ai de a face cu indicii, 698 00:32:19,380 --> 00:32:23,640 când ai pus ampersand in fata de un int, un int variabilă, sau un char, 699 00:32:23,640 --> 00:32:28,609 sau un flux, ceea ce spui este, da-mi adresa de acest lucru. 700 00:32:28,609 --> 00:32:31,900 Dar ce te gândeai de când altcineva ar trebui să utilizați ampersand este, să spunem, 701 00:32:31,900 --> 00:32:33,180 într-o declarație, dacă. 702 00:32:33,180 --> 00:32:39,256 Aveți un adevărat, iar unele variabile care să evalueze la unele Boolean, 703 00:32:39,256 --> 00:32:41,380 și alte variabile că validarea unele Boolean 704 00:32:41,380 --> 00:32:42,880 și doriți să obțineți și a celei. 705 00:32:42,880 --> 00:32:44,552 Atunci ar trebui să utilizați ampersand. 706 00:32:44,552 --> 00:32:47,510 SPEAKER 1: Da, așa că astăzi, ne-am a vorbit despre trei diferite intrebuintari 707 00:32:47,510 --> 00:32:48,250 de ampersand. 708 00:32:48,250 --> 00:32:51,040 Avem două and-urile, ceea ce este ce Pulak tocmai a descris. 709 00:32:51,040 --> 00:32:53,420 Avem un ampersand, care este ceea ce a descris Camille 710 00:32:53,420 --> 00:32:54,897 mai devreme, care este unul ampersand. 711 00:32:54,897 --> 00:32:56,685 Și asta e pentru nivel de bit AND. 712 00:32:56,685 --> 00:32:59,640 Și observați că atât si-- condiționată sau, îmi pare rău, 713 00:32:59,640 --> 00:33:04,180 logic AND și la nivel de bit ȘI, acestea au două numere, nu? 714 00:33:04,180 --> 00:33:07,354 A fost ceva ampersand ceva ampersand, 715 00:33:07,354 --> 00:33:09,350 ceva ceva ampersand. 716 00:33:09,350 --> 00:33:13,862 Aici, atunci când avem doar ampersand ceva, care este dereferencing. 717 00:33:13,862 --> 00:33:15,830 >> PULAK Goyal: Da, marea întrebare. 718 00:33:15,830 --> 00:33:16,677 Da. 719 00:33:16,677 --> 00:33:21,150 >> Audiența: De ce, în conformitate 5a și stele o să devină N / A? 720 00:33:21,150 --> 00:33:25,520 De ce nu doar un fel de reține aceleași valori de la linia anterioară? 721 00:33:25,520 --> 00:33:28,000 >> PULAK Goyal: Deoarece am ieșit din funcție. 722 00:33:28,000 --> 00:33:30,894 Și ce happens-- asa ca acum suntem what-- 723 00:33:30,894 --> 00:33:33,060 din domeniul de aplicare al acestei funcții, ceea ce se întâmplă de fapt 724 00:33:33,060 --> 00:33:37,770 este aceia sunt eliminate din memorie. 725 00:33:37,770 --> 00:33:38,808 Da. 726 00:33:38,808 --> 00:33:42,982 >> Audiența: Între 3 sau stele 4 este egal cu 5. 727 00:33:42,982 --> 00:33:43,690 PULAK Goyal: Da. 728 00:33:43,690 --> 00:33:45,575 Audiența: Ce are asta denotă exact? 729 00:33:45,575 --> 00:33:46,950 PULAK Goyal: Ce înseamnă asta? 730 00:33:46,950 --> 00:33:47,380 Audiența: Da. 731 00:33:47,380 --> 00:33:49,088 PULAK Goyal: Deci Întrebarea a fost, ceea ce este 732 00:33:49,088 --> 00:33:52,300 that-- ce faci on-line atunci când spunem, stele este egal cu 5? 733 00:33:52,300 --> 00:33:55,210 Deci amintesc steaua operator de dereference. 734 00:33:55,210 --> 00:33:58,640 Deci, atunci când o, în acest caz, este un pointer. 735 00:33:58,640 --> 00:34:00,030 Este un stea Int. 736 00:34:00,030 --> 00:34:03,710 Așa că atunci când am o dereference de folosind steaua, ce spunem 737 00:34:03,710 --> 00:34:11,250 este, du-te la tot ce este stocat la adresa, stocate în un-- astfel take-- astfel o, 738 00:34:11,250 --> 00:34:13,280 chiar acum, are unele Adresa stocate în ea. 739 00:34:13,280 --> 00:34:19,920 Du-te la cazul în care acest puncte adresa la, și acum schimba orice, care este de cinci. 740 00:34:19,920 --> 00:34:20,420 Da. 741 00:34:20,420 --> 00:34:23,390 >> Audiența: Poți să spui o în termeni mai simpli? 742 00:34:23,390 --> 00:34:27,360 Schimbarea adresa unui la 5. 743 00:34:27,360 --> 00:34:31,070 >> PULAK Goyal: Noi nu suntem schimbarea adresei unei a 5. 744 00:34:31,070 --> 00:34:36,340 O are unele adresa în ea, care este adresa variabilei de interes. 745 00:34:36,340 --> 00:34:39,570 Și așa mai departe ce spunem când dereference este, 746 00:34:39,570 --> 00:34:42,630 acum vrem să change-- suntem acum referire 747 00:34:42,630 --> 00:34:45,135 interes direct variabila de. 748 00:34:45,135 --> 00:34:48,499 Are care face sens? 749 00:34:48,499 --> 00:34:52,280 >> SPEAKER 1: Un alt mod de a gândi de se go-- astfel o este o adresă. 750 00:34:52,280 --> 00:34:55,310 Steaua spune că merge la adresa si uita-te la valoarea sa. 751 00:34:55,310 --> 00:34:58,000 Și acum stabilit valoarea de 5. 752 00:34:58,000 --> 00:35:00,920 Deci se spune, du-te la Adresa de x, care 753 00:35:00,920 --> 00:35:05,720 va fi ceea ce este stocat într-o și schimba la 5. 754 00:35:05,720 --> 00:35:06,470 PULAK Goyal: Da? 755 00:35:06,470 --> 00:35:10,817 Audiența: Deci poziția în cazul în care este indicatorul se întâmplă, adresa. 756 00:35:10,817 --> 00:35:14,270 Dar valoarea este un atribuită Valoarea pe baza adresei. 757 00:35:14,270 --> 00:35:15,020 PULAK Goyal: Da. 758 00:35:15,020 --> 00:35:18,076 759 00:35:18,076 --> 00:35:19,367 Orice alte întrebări despre asta? 760 00:35:19,367 --> 00:35:22,774 761 00:35:22,774 --> 00:35:23,940 Audiența: Am o întrebare. 762 00:35:23,940 --> 00:35:25,664 PULAK Goyal: Da, îmi pare rău. 763 00:35:25,664 --> 00:35:30,324 Audiența: Deci, atunci când atât de store-- dacă spui [neauzit] a. 764 00:35:30,324 --> 00:35:31,032 PULAK Goyal: Da. 765 00:35:31,032 --> 00:35:34,448 Audiența: Nu trebuie să stoca x cu un ampersand? 766 00:35:34,448 --> 00:35:37,376 De ce nu poți spune doar X înainte de a int ta [Inaudibil]? 767 00:35:37,376 --> 00:35:40,562 768 00:35:40,562 --> 00:35:41,270 PULAK Goyal: deci-- 769 00:35:41,270 --> 00:35:42,090 Audiența: [neauzit]. 770 00:35:42,090 --> 00:35:43,673 PULAK Goyal: Deci este question-- ta oh. 771 00:35:43,673 --> 00:35:47,160 772 00:35:47,160 --> 00:35:51,300 Deci, întrebarea dumneavoastră este, de ce nu se poate we-- la funcția to_five, de ce nu putem 773 00:35:51,300 --> 00:35:52,590 trece doar un X, nu? 774 00:35:52,590 --> 00:35:53,570 >> Audiența: dreapta. 775 00:35:53,570 --> 00:35:59,570 >> PULAK Goyal: OK, da, astfel încât această din nou merge înapoi la discuția noastră pe tipuri. 776 00:35:59,570 --> 00:36:06,080 Deci funcția to_five este acum așteaptă un tip de stea Int. 777 00:36:06,080 --> 00:36:07,660 Deci, ce este tipul de X? 778 00:36:07,660 --> 00:36:09,800 X este doar un Int. 779 00:36:09,800 --> 00:36:13,530 Dar ceea ce această funcție se așteaptă este o stea Int. 780 00:36:13,530 --> 00:36:16,910 Deci, se așteaptă o variabilă care are o adresă stocată în el. 781 00:36:16,910 --> 00:36:20,250 Deci așa Tu-- pus ampersand, și așa că e 782 00:36:20,250 --> 00:36:22,560 cum am pasa ce adresa, care este now-- 783 00:36:22,560 --> 00:36:25,120 și că interpretează ca ca o stea Int, da. 784 00:36:25,120 --> 00:36:26,700 Marea întrebare. 785 00:36:26,700 --> 00:36:29,300 Orice alte întrebări cu privire la asta? 786 00:36:29,300 --> 00:36:29,800 Bine, in regula. 787 00:36:29,800 --> 00:36:32,870 788 00:36:32,870 --> 00:36:37,020 >> OK, deci acum hai să vorbim despre pointer aritmetică. 789 00:36:37,020 --> 00:36:40,050 Deci, aici, adăugând și scăderea Am reglează indicatorul 790 00:36:40,050 --> 00:36:43,950 de i ori mai mare decât tipul de bytes indicatorul. 791 00:36:43,950 --> 00:36:46,170 Deci, să ne uităm la modul în care care arata ca. 792 00:36:46,170 --> 00:36:49,640 Deci, aici, ne-am declarat int x este egal cu 5. 793 00:36:49,640 --> 00:36:56,120 Și acum vom declara un pointer y, și să treacă în adresa lui x acolo. 794 00:36:56,120 --> 00:36:58,910 Deci avem asta. 795 00:36:58,910 --> 00:37:01,005 Deci x este stocat la 0x04. 796 00:37:01,005 --> 00:37:03,960 Deci, acum y este egal cu cel. 797 00:37:03,960 --> 00:37:12,260 Și poate cineva spune-mi ce crezi se va întâmpla când vom face y plus este egal cu 1? 798 00:37:12,260 --> 00:37:19,100 799 00:37:19,100 --> 00:37:19,771 Da? 800 00:37:19,771 --> 00:37:24,010 >> Audiența: Va schimba 0 ori 0 8? 801 00:37:24,010 --> 00:37:25,342 >> PULAK Goyal: Dimensiune și type-- 802 00:37:25,342 --> 00:37:27,789 >> Audiența: Te muți adresa. 803 00:37:27,789 --> 00:37:29,080 PULAK Goyal: Da-l asta-- da. 804 00:37:29,080 --> 00:37:31,130 Dreapta deci--. 805 00:37:31,130 --> 00:37:33,110 Deci, se va schimba la 0x08. 806 00:37:33,110 --> 00:37:38,750 Și așa because-- ai folosi acest formula, 1 ori mai mare indicatorul 807 00:37:38,750 --> 00:37:42,354 și pointerii sunt size-- 808 00:37:42,354 --> 00:37:44,050 >> [STUDENȚI MURMURUL] 809 00:37:44,050 --> 00:37:45,190 >> PULAK Goyal: dreapta. 810 00:37:45,190 --> 00:37:46,150 >> [STUDENȚI MURMURUL] 811 00:37:46,150 --> 00:37:49,230 >> SPEAKER 1: Deci, tipul care punctele de indicatorul sa-- 812 00:37:49,230 --> 00:37:51,862 >> PULAK Goyal: Este, da, Da, asta e de 4 bytes. 813 00:37:51,862 --> 00:37:53,930 >> SPEAKER 1: Deci int 4 bytes. 814 00:37:53,930 --> 00:38:01,260 >> PULAK Goyal: Deci, dacă am fi lăsați un-- lui spune că a declarat, cred, o char. 815 00:38:01,260 --> 00:38:06,830 Ce s-ar that-- Să spunem că au X char egale cu a sau ceva. 816 00:38:06,830 --> 00:38:14,400 Și am avut adresa de pe care la 0x04, ceea ce ar fi y plus este egal cu 1 fac acum? 817 00:38:14,400 --> 00:38:14,960 Ne pare rău, ce? 818 00:38:14,960 --> 00:38:16,099 >> Audiența: 0x05. 819 00:38:16,099 --> 00:38:17,140 PULAK Goyal: 0x05, dreapta. 820 00:38:17,140 --> 00:38:18,520 Are toată lumea vedea că? 821 00:38:18,520 --> 00:38:20,212 OK, și acum să zicem că e un float. 822 00:38:20,212 --> 00:38:20,962 Ce s-ar întâmpla? 823 00:38:20,962 --> 00:38:25,210 824 00:38:25,210 --> 00:38:26,130 Oricine? 825 00:38:26,130 --> 00:38:28,066 Deci, flotoare sunt câte bytes? 826 00:38:28,066 --> 00:38:28,860 >> Audiența: 4 bytes. 827 00:38:28,860 --> 00:38:29,651 >> PULAK Goyal: dreapta. 828 00:38:29,651 --> 00:38:32,661 Asa ca ar fi acelasi lucru ca aceasta. 829 00:38:32,661 --> 00:38:33,160 Misto. 830 00:38:33,160 --> 00:38:36,230 831 00:38:36,230 --> 00:38:40,180 OK, și acum hai să vorbim despre indicii și matrice. 832 00:38:40,180 --> 00:38:44,210 Deci ați văzut acest lucru pe două seturi p anterioare, 833 00:38:44,210 --> 00:38:48,570 unde putem treat-- matrice așa și indicii nu sunt același lucru. 834 00:38:48,570 --> 00:38:51,170 Dar putem trata tablouri ca indicii. 835 00:38:51,170 --> 00:38:55,550 Deci, aici, avem această matrice aici, care are trei sloturi. 836 00:38:55,550 --> 00:38:57,570 În primul rând vom slot-- au unul, doua, trei. 837 00:38:57,570 --> 00:39:00,930 >> Deci, dacă we-- astfel încât să putem atribui că prin a spune, ne-am matrice, 838 00:39:00,930 --> 00:39:02,080 dereference asta. 839 00:39:02,080 --> 00:39:04,579 Și apoi când am dereference că, ceea ce suntem de fapt face 840 00:39:04,579 --> 00:39:05,910 este referindu-se la același slot. 841 00:39:05,910 --> 00:39:09,230 Deci, matrice stele este egal cu 1. 842 00:39:09,230 --> 00:39:11,020 Am could- cum ar putea vom scrie that-- ce e 843 00:39:11,020 --> 00:39:13,404 un mod alternativ putem scrie asta? 844 00:39:13,404 --> 00:39:14,840 >> Audiența: Array 0 egal 1. 845 00:39:14,840 --> 00:39:17,100 >> PULAK Goyal: Exact, nu toată lumea poate vedea că? 846 00:39:17,100 --> 00:39:18,320 Deci, aceeași lucru cu aici. 847 00:39:18,320 --> 00:39:24,060 Asa ca atunci cand ne-am matrice plus 1, am do-- așa even-- 848 00:39:24,060 --> 00:39:28,890 amintiți-vă cu aritmetica pe care le doar a vorbit despre, atunci când facem plus 1 849 00:39:28,890 --> 00:39:32,120 sau muta de către 4 octeți, chiar. 850 00:39:32,120 --> 00:39:33,170 Are toată lumea vedea că? 851 00:39:33,170 --> 00:39:35,753 Și acea parte, atunci când am dereference care, putem stabili că, pentru a 2. 852 00:39:35,753 --> 00:39:37,710 Și așa ne-am stabilit următorul bloc la 2. 853 00:39:37,710 --> 00:39:41,640 Și astfel o modalitate alternativă de a scrie care ar fi, de asemenea, suport matrice 854 00:39:41,640 --> 00:39:44,436 0 suport egal cu 1. 855 00:39:44,436 --> 00:39:47,070 >> Audiența: Ai nevoie de paranteze? 856 00:39:47,070 --> 00:39:50,840 >> PULAK Goyal: Da, pentru că ești dereferencing întreaga cantitate 857 00:39:50,840 --> 00:39:53,460 matrice plus 1. 858 00:39:53,460 --> 00:39:56,829 OK, și același lucru pentru matrice plus 2. 859 00:39:56,829 --> 00:39:57,870 Orice întrebări despre asta? 860 00:39:57,870 --> 00:39:58,369 Da. 861 00:39:58,369 --> 00:40:01,340 Audiența: Deci array este setat automat la 0? 862 00:40:01,340 --> 00:40:03,054 >> PULAK Goyal: Array este-- Ne pare rău, ce? 863 00:40:03,054 --> 00:40:03,962 >> Audiența: Array este 0. 864 00:40:03,962 --> 00:40:07,140 Adresa de matrice este doar 0. 865 00:40:07,140 --> 00:40:10,200 >> PULAK Goyal: Deci, întrebarea a fost, este adresa de matrice doar 0? 866 00:40:10,200 --> 00:40:11,950 Deci, nu, matrice are unele adresa. 867 00:40:11,950 --> 00:40:14,930 Asa ca atunci cand am dereference o, that's-- astfel încât să puteți gândi about-- 868 00:40:14,930 --> 00:40:18,230 literalmente ca o indicare pointer la începutul unui tablou. 869 00:40:18,230 --> 00:40:19,390 Astfel încât are unele adresa. 870 00:40:19,390 --> 00:40:20,580 Nu știm ce este. 871 00:40:20,580 --> 00:40:24,170 Dar când am dereference o, știm care este la începutul matrice. 872 00:40:24,170 --> 00:40:25,980 Și așa că atunci când vom trece prin 1, noi suntem doar în mișcare 873 00:40:25,980 --> 00:40:29,090 în raport cu cazul în care această adresă a fost. 874 00:40:29,090 --> 00:40:30,480 Orice alte întrebări? 875 00:40:30,480 --> 00:40:31,419 Da? 876 00:40:31,419 --> 00:40:35,559 >> Audiența: Deci, dacă faci Suport matrice plus 1-- 877 00:40:35,559 --> 00:40:37,350 PULAK Goyal: Ne pare rău, Eu-- ai putea vorbi? 878 00:40:37,350 --> 00:40:41,174 Audiența: Da, dacă faci Suport array [neauzit]. 879 00:40:41,174 --> 00:40:45,227 Deci, apoi, dacă ai pus pointer-- 880 00:40:45,227 --> 00:40:46,810 PULAK Goyal: Ne pare rău, nu te pot auzi. 881 00:40:46,810 --> 00:40:48,100 Poți să-l încă o dată spun? 882 00:40:48,100 --> 00:40:49,470 >> Audiența: Ești OK. 883 00:40:49,470 --> 00:40:50,870 >> PULAK Goyal: OK, îmi pare rău. 884 00:40:50,870 --> 00:40:51,420 Bine, in regula. 885 00:40:51,420 --> 00:40:52,200 Any-- da. 886 00:40:52,200 --> 00:40:55,710 Așa că atunci când te duci în suport matrice 3-- 887 00:40:55,710 --> 00:40:56,570 >> PULAK Goyal: Da. 888 00:40:56,570 --> 00:40:59,832 >> Audiența: --isn't there-- nu ar acesta este de patru locuri, cum ar fi 0, 1, 2, și 3? 889 00:40:59,832 --> 00:41:02,630 De ce este nu int matrice 2? 890 00:41:02,630 --> 00:41:07,850 >> PULAK Goyal: Nu, asa ca Convenția C este-- atunci când declara matrice, 891 00:41:07,850 --> 00:41:12,010 we-- numărul am pus acolo este cât de mulți sloturi vrem. 892 00:41:12,010 --> 00:41:16,970 Dar indicii matrice sunt de fapt matrice 0, 1 matrice, și matrice 2. 893 00:41:16,970 --> 00:41:19,780 Deci e doar Convenția de modul în care declararea tablouri. 894 00:41:19,780 --> 00:41:20,880 Da, orice alte întrebări? 895 00:41:20,880 --> 00:41:21,380 Da. 896 00:41:21,380 --> 00:41:23,750 Audiența: Deci suntem încă vorbesc despre indicii, nu? 897 00:41:23,750 --> 00:41:24,500 PULAK Goyal: Da. 898 00:41:24,500 --> 00:41:28,600 Audiența: Ai putea face în continuare Star pentru array 0 este egal cu 1? 899 00:41:28,600 --> 00:41:32,870 PULAK Goyal: Nu, nu, deci-- OK, astfel încât întrebarea era putea 900 00:41:32,870 --> 00:41:37,370 faci doar suport matrice stele zero, iar apoi spun că egală cu 1. 901 00:41:37,370 --> 00:41:40,000 Deci, nu, ce spunem aici este că putem think-- 902 00:41:40,000 --> 00:41:42,600 putem trata tablouri ca indicii. 903 00:41:42,600 --> 00:41:44,970 Deci, ne-am have-- ce suntem spune este că avem două moduri 904 00:41:44,970 --> 00:41:47,370 pentru a face referire acum la același bloc. 905 00:41:47,370 --> 00:41:52,270 Deci, dacă aveți doing-- matrice de zero, tipul de care este acum un int. 906 00:41:52,270 --> 00:41:55,264 Și dacă luați steaua care, veți obține un lucru invalid. 907 00:41:55,264 --> 00:41:57,680 Deci, ceea ce spunem aici, este există două moduri alternative 908 00:41:57,680 --> 00:41:59,100 pentru a se referi la același bloc. 909 00:41:59,100 --> 00:42:01,860 Puteți face, fie matrice suport 0 este egal cu 1. 910 00:42:01,860 --> 00:42:06,420 Sau puteți face dereference matrice, și au ca egal cu 0. 911 00:42:06,420 --> 00:42:08,621 Deci, doar două moduri de face același lucru. 912 00:42:08,621 --> 00:42:09,120 Da. 913 00:42:09,120 --> 00:42:15,270 >> Audiența: De ce nu este mărimea Int 1 pentru a adăuga sa-- 914 00:42:15,270 --> 00:42:17,650 >> PULAK Goyal: Mărimea Int 1. 915 00:42:17,650 --> 00:42:19,900 >> Audiența: Pentru că se deplasează unul în afara. 916 00:42:19,900 --> 00:42:23,620 >> PULAK Goyal: Pentru că asta e doar modul C funcționează. 917 00:42:23,620 --> 00:42:26,460 E doar un fel indicatorul aritmetică este definită. 918 00:42:26,460 --> 00:42:27,854 Va lua indicatorul. 919 00:42:27,854 --> 00:42:30,020 Și apoi tot ce adăugați să-l, acesta va multiplica că 920 00:42:30,020 --> 00:42:34,770 de mărimea indiferent magazin pointer este, da. 921 00:42:34,770 --> 00:42:35,480 Da. 922 00:42:35,480 --> 00:42:39,595 >> Audiența: Deci spui putem trata indicii și tablouri la fel, 923 00:42:39,595 --> 00:42:40,720 dar că acestea sunt diferite. 924 00:42:40,720 --> 00:42:41,950 Deci, ceea ce le face diferit? 925 00:42:41,950 --> 00:42:45,070 Ce putem face cu nu unul, dar nu de alta? 926 00:42:45,070 --> 00:42:52,390 >> PULAK Goyal: În sensul prezentei clasă, eu cred că ceea ce fac it's-- Tu-- 927 00:42:52,390 --> 00:42:56,270 >> SPEAKER 1: Deci, we-- OK, deci, pentru exemplu, dacă aloca memorie 928 00:42:56,270 --> 00:42:59,680 și aveți un pointer la un număr întreg, de exemplu. 929 00:42:59,680 --> 00:43:01,890 Dacă ați încercat să începeți face pointer aritmetică 930 00:43:01,890 --> 00:43:05,890 și du-te dincolo de cantitatea de memorie pe care ai alocat, ai rula în erori. 931 00:43:05,890 --> 00:43:08,250 Știm cu tablouri, am spune înainte de timp, OK, am 932 00:43:08,250 --> 00:43:11,400 doresc să allocate-- acest esență spune, vreau să aloce 933 00:43:11,400 --> 00:43:13,490 spațiu suficient pentru trei numere întregi. 934 00:43:13,490 --> 00:43:17,820 Și așa acum putem trata memorie ca și cum avem toate trei dintre aceste numere întregi. 935 00:43:17,820 --> 00:43:19,460 Are acest tip de sens? 936 00:43:19,460 --> 00:43:22,042 >> PULAK Goyal: Da. 937 00:43:22,042 --> 00:43:22,542 Da. 938 00:43:22,542 --> 00:43:24,778 >> Audiența: Deci, o stea matrice, este că atribuirea de 1 939 00:43:24,778 --> 00:43:26,657 la indicele de matrice 0? 940 00:43:26,657 --> 00:43:27,365 PULAK Goyal: Da. 941 00:43:27,365 --> 00:43:31,160 942 00:43:31,160 --> 00:43:34,439 >> Audiența: Deci, ce este după Următoarele două linii în ceea ce privește the-- I 943 00:43:34,439 --> 00:43:36,980 Înțeleg că sunteți încercarea de pentru a folosi indicatorul aritmetică aici, 944 00:43:36,980 --> 00:43:39,355 dar, din nou, eu nu înțeleg ce indicatorul aritmetică este. 945 00:43:39,355 --> 00:43:43,869 Deci matrice plus 1, ești spunând că ești acum 946 00:43:43,869 --> 00:43:47,540 O să vreau să vorbesc despre primul indice în matrice. 947 00:43:47,540 --> 00:43:50,050 >> PULAK Goyal: dreapta, și astfel motiv pentru care lucrează este matrice, 948 00:43:50,050 --> 00:43:52,970 aici, ne putem gândi la o stea Int ca. 949 00:43:52,970 --> 00:43:56,110 Și așa că atunci când facem pointer aritmetică pe ea, amintiți-vă formula unde 950 00:43:56,110 --> 00:43:59,020 luăm the-- cred orice adresa actuală este, 951 00:43:59,020 --> 00:44:02,100 și apoi, când adăugăm 1 decât atât, se fapt 952 00:44:02,100 --> 00:44:06,620 multiplica 1 de mărimea lucru ne manipulare. 953 00:44:06,620 --> 00:44:09,090 Deci, în acest caz, de dimensiunea unui Int. 954 00:44:09,090 --> 00:44:11,634 Și apoi vom muta transmite de atât de mult. 955 00:44:11,634 --> 00:44:14,419 >> SPEAKER 1: Deci pretinde aveți stele b matrice. 956 00:44:14,419 --> 00:44:15,335 PULAK Goyal: OK, da. 957 00:44:15,335 --> 00:44:16,005 SPEAKER 1: Cu mâna. 958 00:44:16,005 --> 00:44:16,505 Du-te aici. 959 00:44:16,505 --> 00:44:18,350 PULAK Goyal: Sau pot doar-- da. 960 00:44:18,350 --> 00:44:23,660 OK Deci here--, astfel încât matrice la începând, este doar aici. 961 00:44:23,660 --> 00:44:29,155 Așa că atunci când ne-am dereference matrice, am fost se referă numai la prima blocul aici. 962 00:44:29,155 --> 00:44:36,620 Dar acum, când fac matrice plus 1, care este-- că săgeata este acum aici. 963 00:44:36,620 --> 00:44:38,250 Are care face sens? 964 00:44:38,250 --> 00:44:46,690 Dreapta, pentru că acest bloc este de int size, care este de 4 octeți. 965 00:44:46,690 --> 00:44:53,540 Și astfel, ceea ce facem este că suntem mișcare care indicatorul de 4 octeți peste. 966 00:44:53,540 --> 00:44:56,080 Ori de câte ori facem aritmetică pe el, el va fi întotdeauna 967 00:44:56,080 --> 00:44:59,730 mutați-l cu câte 4 octeți. 968 00:44:59,730 --> 00:45:01,902 Deoarece acest lucru este ca o stea Int. 969 00:45:01,902 --> 00:45:04,970 Are sens? 970 00:45:04,970 --> 00:45:05,470 BINE. 971 00:45:05,470 --> 00:45:07,770 >> Audiența: Deci lucrurile din matrice au fost 5 bytes, am muta 5 bytes-- 972 00:45:07,770 --> 00:45:10,853 >> PULAK Goyal: dreapta, asa ca daca am avut o stele char, am muta doar 1 octet. 973 00:45:10,853 --> 00:45:13,670 Deci, în cazul de stele char, că ar fi doar mutați de către un. 974 00:45:13,670 --> 00:45:15,420 Audiența: Pentru a obține următor aveți nevoie de o stea. 975 00:45:15,420 --> 00:45:18,099 PULAK Goyal: Da, da, nu că are sens? 976 00:45:18,099 --> 00:45:19,890 SPEAKER 1: Putem vorbi despre asta mai târziu. 977 00:45:19,890 --> 00:45:21,530 PULAK Goyal: Da, da, sigur. 978 00:45:21,530 --> 00:45:23,214 Bine, in regula. 979 00:45:23,214 --> 00:45:24,630 Să trecem la secțiunea următoare. 980 00:45:24,630 --> 00:45:27,182 981 00:45:27,182 --> 00:45:28,140 SPEAKER 1: Oh, OK rece. 982 00:45:28,140 --> 00:45:29,205 Da, eu sunt. 983 00:45:29,205 --> 00:45:30,330 Bine, minunat. 984 00:45:30,330 --> 00:45:35,064 OK, rece, asa ca acum suntem pe un pic mai multe informații generale despre memorie. 985 00:45:35,064 --> 00:45:37,730 De asemenea, apreciez faptul că mergeau destul de repede. 986 00:45:37,730 --> 00:45:40,230 Este o mulțime de material pentru a obține prin într-o oră și jumătate. 987 00:45:40,230 --> 00:45:42,880 Dar dacă există subiecte pe care vreau să merg mai în profunzime în, 988 00:45:42,880 --> 00:45:44,630 vom avea ore de birou în această săptămână 989 00:45:44,630 --> 00:45:46,340 în cazul în care puteți discuta cu noi de unu la unu. 990 00:45:46,340 --> 00:45:49,240 Sau ai putea veni doar până la încheia și vom discuta despre lucruri. 991 00:45:49,240 --> 00:45:52,130 Și, ca întotdeauna, se simt libertatea de a pune întrebări. 992 00:45:52,130 --> 00:45:52,695 Incredibil. 993 00:45:52,695 --> 00:45:55,820 Deci, aici e imaginea noastră de memorie care am văzut în curs de un miliard de ori. 994 00:45:55,820 --> 00:45:58,610 Și știm că această stivă crește de jos în sus 995 00:45:58,610 --> 00:46:00,214 și grămada crește în jos. 996 00:46:00,214 --> 00:46:03,380 Și ceea ce este diferența dintre lucrurile că păstrăm pe heap și lucruri 997 00:46:03,380 --> 00:46:05,981 că păstrăm pe stiva? 998 00:46:05,981 --> 00:46:07,397 Cineva arunca ceva acolo. 999 00:46:07,397 --> 00:46:10,806 1000 00:46:10,806 --> 00:46:11,780 Da. 1001 00:46:11,780 --> 00:46:14,215 >> Audiența: Este stivă pentru lucruri care sunt doar 1002 00:46:14,215 --> 00:46:18,095 variabile instabile că suntem doar declarare folosind anumite funcții? 1003 00:46:18,095 --> 00:46:19,220 SPEAKER 1: Frumos, da. 1004 00:46:19,220 --> 00:46:23,007 Deci, în orice moment în cazul în care, să spune că suntem într-o funcție, 1005 00:46:23,007 --> 00:46:24,590 și avem doar unele variabile locale. 1006 00:46:24,590 --> 00:46:26,214 Cei care sunt de gând să se încheie până pe stiva. 1007 00:46:26,214 --> 00:46:30,020 Dacă, în schimb, o numim malloc și de fapt să aloce memorie, 1008 00:46:30,020 --> 00:46:32,290 care vine întotdeauna din grămada. 1009 00:46:32,290 --> 00:46:35,100 Deci, da cool? 1010 00:46:35,100 --> 00:46:38,672 >> Și amintiți-vă că orice astfel de memorie pe care le aloca utilizarea malloc, 1011 00:46:38,672 --> 00:46:40,130 care va ajunge pe heap. 1012 00:46:40,130 --> 00:46:42,019 Și dacă ați uitat să l gratuit, computer anii 1013 00:46:42,019 --> 00:46:43,810 Nu o să știe că ai terminat cu ea. 1014 00:46:43,810 --> 00:46:45,560 Deci, este doar de gând să stau acolo în memorie. 1015 00:46:45,560 --> 00:46:47,412 Și tu ești în esență, scurgeri că memoria. 1016 00:46:47,412 --> 00:46:48,120 Ești o pierde. 1017 00:46:48,120 --> 00:46:51,840 Pentru că nu ți-a spus calculator, hei Am terminat-o folosind, nu ezitați să utilizați, 1018 00:46:51,840 --> 00:46:53,632 a pus alte lucruri acolo. 1019 00:46:53,632 --> 00:46:54,470 Misto. 1020 00:46:54,470 --> 00:46:55,928 Orice întrebări acolo? 1021 00:46:55,928 --> 00:46:56,428 Da. 1022 00:46:56,428 --> 00:46:58,808 >> Audiența: Deci, ce fel de memorie este stiva? 1023 00:46:58,808 --> 00:46:59,974 Hrana pentru animale non dinamic, delegat? 1024 00:46:59,974 --> 00:47:01,200 Ce-ai numi? 1025 00:47:01,200 --> 00:47:03,870 >> SPEAKER 1: Sigur, așa ai putea cred că de ea ca variabile locale. 1026 00:47:03,870 --> 00:47:10,137 Apeluri reale la funcții vor să se adune. 1027 00:47:10,137 --> 00:47:10,720 Altceva? 1028 00:47:10,720 --> 00:47:11,220 Da? 1029 00:47:11,220 --> 00:47:14,627 Audiența: Ce părere aveți liber memoria ați adăugat la the-- 1030 00:47:14,627 --> 00:47:17,710 SPEAKER 1: Sigur, astfel încât atunci când aloca memorie pe heap, te sun malloc. 1031 00:47:17,710 --> 00:47:20,543 Și așa, atunci, care vă oferă o înapoi indicatorul la unele adresa în memorie. 1032 00:47:20,543 --> 00:47:22,630 Deci, spune-ai sunat ca indicatorul, nu? 1033 00:47:22,630 --> 00:47:24,970 Apoi, ai spus pointer gratuit. 1034 00:47:24,970 --> 00:47:27,351 Și că eliberează memoria. 1035 00:47:27,351 --> 00:47:27,850 Misto. 1036 00:47:27,850 --> 00:47:28,660 Alte întrebări? 1037 00:47:28,660 --> 00:47:28,880 Da. 1038 00:47:28,880 --> 00:47:30,838 >> Audiența: Ce alocate dinamic înseamnă? 1039 00:47:30,838 --> 00:47:32,345 1040 00:47:32,345 --> 00:47:35,381 >> SPEAKER 1: alocate dinamic înseamnă, în cursul programului. 1041 00:47:35,381 --> 00:47:37,630 Deci, atunci când apelați malloc în mijlocul programului, 1042 00:47:37,630 --> 00:47:40,510 la începutul programului, nu există nici o memorie alocată. 1043 00:47:40,510 --> 00:47:42,600 Și, după cum computerul pas prin codul, 1044 00:47:42,600 --> 00:47:44,280 se va aloca memorie. 1045 00:47:44,280 --> 00:47:46,507 Deci, asta e ceea ce înțelegem prin dinamic. 1046 00:47:46,507 --> 00:47:47,090 Buna intrebare. 1047 00:47:47,090 --> 00:47:48,309 Da? 1048 00:47:48,309 --> 00:47:50,809 Audiența: Când definiți o matrice cu paranteze pătrate, 1049 00:47:50,809 --> 00:47:54,154 face asta încă [Inaudibil]? 1050 00:47:54,154 --> 00:47:55,570 SPEAKER 1: Aceasta este o întrebare bună. 1051 00:47:55,570 --> 00:48:00,320 Cred că atunci când aloca o matrice, este de fapt o pune pe stiva. 1052 00:48:00,320 --> 00:48:03,008 Eu nu sunt pozitive despre că, așa că nu mă citez. 1053 00:48:03,008 --> 00:48:04,430 >> SPEAKER 2: Cred că da it-- îl pune pe stiva. 1054 00:48:04,430 --> 00:48:05,763 >> SPEAKER 1: se pune pe stivă. 1055 00:48:05,763 --> 00:48:07,044 OK, rece, a confirmat. 1056 00:48:07,044 --> 00:48:07,710 Alte întrebări? 1057 00:48:07,710 --> 00:48:08,030 Da? 1058 00:48:08,030 --> 00:48:10,946 >> Audiența: Când delege malloc, nu computerul automat 1059 00:48:10,946 --> 00:48:12,910 aloca memorie pentru variabilele tale? 1060 00:48:12,910 --> 00:48:14,660 SPEAKER 1: Da, pentru variabilele locale, 1061 00:48:14,660 --> 00:48:16,724 se pune în mod automat memorie pe stiva. 1062 00:48:16,724 --> 00:48:18,640 Audiența: Deci, ce-i punctul de a folosi malloc? 1063 00:48:18,640 --> 00:48:19,840 SPEAKER 1: Care este punctul de a folosi malloc? 1064 00:48:19,840 --> 00:48:22,850 Deci, am văzut o grămadă de exemple, cum ar fi, de exemplu, folosind schimb, 1065 00:48:22,850 --> 00:48:25,690 în cazul în care ne-o dorim domeniul de aplicare al variabila să fie ceva 1066 00:48:25,690 --> 00:48:27,940 dincolo de doar apelul funcției. 1067 00:48:27,940 --> 00:48:29,875 Și vrem ceva că putem trece în jurul valorii de 1068 00:48:29,875 --> 00:48:31,750 și că putem accesa din diferite locuri. 1069 00:48:31,750 --> 00:48:33,791 Asta e unde am vrea să pus de memorie pe heap. 1070 00:48:33,791 --> 00:48:37,835 Astfel încât toate aceste diferite Funcțiile pot accesa. 1071 00:48:37,835 --> 00:48:40,510 >> Audiența: Poți să explici asta? 1072 00:48:40,510 --> 00:48:44,770 >> SPEAKER 1: Deci o opțiune este-- astfel încât Întrebarea a fost, putem doar allocate-- 1073 00:48:44,770 --> 00:48:47,660 Ne pare rău, putem declara o variabilă globală, în esență. 1074 00:48:47,660 --> 00:48:48,560 Acesta este o opțiune. 1075 00:48:48,560 --> 00:48:50,893 Dar cu o mulțime de cei care, cei care au tendința de a obține cu adevărat murdar. 1076 00:48:50,893 --> 00:48:52,847 Și, în general, credem că de care de design la fel de rău. 1077 00:48:52,847 --> 00:48:53,821 Da. 1078 00:48:53,821 --> 00:48:56,580 Rece, orice alte întrebări? 1079 00:48:56,580 --> 00:48:57,140 Incredibil. 1080 00:48:57,140 --> 00:48:58,789 OK, se deplasează pe. 1081 00:48:58,789 --> 00:49:00,580 Deci aceasta este de fapt cum ne-am aloca memorie. 1082 00:49:00,580 --> 00:49:02,670 Am vorbit despre asta un pic. 1083 00:49:02,670 --> 00:49:04,240 Noi folosim această funcție numită malloc. 1084 00:49:04,240 --> 00:49:07,850 Și ai spune câte octeți în memorie, astfel încât de multe bytes pe cât de heap, 1085 00:49:07,850 --> 00:49:08,610 tu vrei. 1086 00:49:08,610 --> 00:49:13,120 Si va reveni la adresa, astfel un pointer la, o bucată de memorie 1087 00:49:13,120 --> 00:49:14,500 că este alocat pentru tine. 1088 00:49:14,500 --> 00:49:17,080 Deci, tipul va fi stele anulate. 1089 00:49:17,080 --> 00:49:21,310 O să fie un pointer la Orice ai decide să pună în acolo. 1090 00:49:21,310 --> 00:49:23,530 De fiecare dată când suna malloc, am spus deja 1091 00:49:23,530 --> 00:49:25,640 trebuie să-l elibereze asa ca am nu au pierderi de memorie. 1092 00:49:25,640 --> 00:49:27,170 >> Care e alt lucru pe care le absolut 1093 00:49:27,170 --> 00:49:29,185 au de a face fiecare timp te sun malloc? 1094 00:49:29,185 --> 00:49:31,210 1095 00:49:31,210 --> 00:49:32,210 OK, trebuie să-l elibereze. 1096 00:49:32,210 --> 00:49:34,010 Care e celălalt lucru? 1097 00:49:34,010 --> 00:49:35,890 Verificați null, frumos. 1098 00:49:35,890 --> 00:49:38,850 Deci, da, e chiar acolo sus pe bord. 1099 00:49:38,850 --> 00:49:42,120 Dacă v-ar încerca să aloce memorie și ați lăsat nici o memorie, 1100 00:49:42,120 --> 00:49:44,940 computerul va spune, N-am nimic să-ți dau. 1101 00:49:44,940 --> 00:49:47,650 Și vă oferă înapoi nul. 1102 00:49:47,650 --> 00:49:48,400 Întrebări cu privire la asta? 1103 00:49:48,400 --> 00:49:49,290 Da. 1104 00:49:49,290 --> 00:49:52,995 >> Audiența: De ce ai vrea vreodată să declara un pointer cu un anumit tip 1105 00:49:52,995 --> 00:49:56,329 atunci când stele void pot ocupa toate tipurile pointer Oricum? 1106 00:49:56,329 --> 00:49:57,370 SPEAKER 1: Bună întrebare. 1107 00:49:57,370 --> 00:50:00,590 De ce ne-ar spune stele Int spre deosebire de a anula stele 1108 00:50:00,590 --> 00:50:03,740 atunci când stele void pot ocupa totul? 1109 00:50:03,740 --> 00:50:06,390 Deci nu vrem să vreodată exprimate în mod explicit indicii. 1110 00:50:06,390 --> 00:50:07,940 E doar practica rau. 1111 00:50:07,940 --> 00:50:11,850 Dar vom vorbi despre stele int la fel cum o înțelegere a, 1112 00:50:11,850 --> 00:50:14,195 acest lucru este un pointer la un întreg. 1113 00:50:14,195 --> 00:50:14,850 >> Audiența: OK. 1114 00:50:14,850 --> 00:50:17,558 >> SPEAKER 1: Da, și permite să manipuleze valorile din ea 1115 00:50:17,558 --> 00:50:18,667 ca numere întregi. 1116 00:50:18,667 --> 00:50:20,008 >> Audiența: Oh, OK. 1117 00:50:20,008 --> 00:50:22,250 Și stele nule nu ar lăsa să faci asta? 1118 00:50:22,250 --> 00:50:25,070 >> SPEAKER 1: Depinde de context Da, așa că nu vă faceți griji 1119 00:50:25,070 --> 00:50:28,460 nu vă faceți griji prea mult despre tipul de acolo. 1120 00:50:28,460 --> 00:50:32,620 Știu doar că, în general, malloc returnează un pointer la ceva. 1121 00:50:32,620 --> 00:50:33,520 Buna intrebare. 1122 00:50:33,520 --> 00:50:37,260 >> Audiența: De ce crezi multiplica IT Times 10? [Neauzit]. 1123 00:50:37,260 --> 00:50:40,150 >> SPEAKER 1: Sigur, așa că am fost doar faci exemplu aleatoriu aici în cazul în care 1124 00:50:40,150 --> 00:50:42,840 Am vrut să aloce suficient cameră pentru a stoca 10 numere întregi. 1125 00:50:42,840 --> 00:50:44,320 Doar o alegere aleatorie. 1126 00:50:44,320 --> 00:50:45,250 Da. 1127 00:50:45,250 --> 00:50:45,440 Da, ce sa întâmplat? 1128 00:50:45,440 --> 00:50:47,440 >> Audiența: Ce părere aveți Adică prin verificarea pentru nul? 1129 00:50:47,440 --> 00:50:51,351 Vrei să verificați pointer pentru nul sau malloc? 1130 00:50:51,351 --> 00:50:52,350 SPEAKER 1: Da, exact. 1131 00:50:52,350 --> 00:50:54,599 Deci întrebarea era, ce înțelegem prin cec de nul? 1132 00:50:54,599 --> 00:50:57,880 Ne dorim sa-- oricând numim malloc si suntem returnat un pointer, 1133 00:50:57,880 --> 00:51:01,110 vrem să spunem, este pointer egal cu null? 1134 00:51:01,110 --> 00:51:02,610 Deci, literalmente PTR. 1135 00:51:02,610 --> 00:51:05,620 PTR este egal cu NULL. 1136 00:51:05,620 --> 00:51:06,958 Da. 1137 00:51:06,958 --> 00:51:08,832 Audiența: Deci, am fost un fel de întrebam, dacă 1138 00:51:08,832 --> 00:51:14,013 inițializa indicatorul în malloc, nu se indică începutul malloc? 1139 00:51:14,013 --> 00:51:15,097 Pentru că dacă e un array-- 1140 00:51:15,097 --> 00:51:16,554 SPEAKER 1: Aceasta este o întrebare mare. 1141 00:51:16,554 --> 00:51:19,200 Da, dacă suni malloc, The pointer care it-- să spunem, 1142 00:51:19,200 --> 00:51:21,700 Deci, aici am aloca 10 bytes de memorie. 1143 00:51:21,700 --> 00:51:23,830 Deci, îmi pare rău, destul de camerei timp de 10 numere întregi, 1144 00:51:23,830 --> 00:51:28,220 vom obține adresa de că prima piesă a memoriei. 1145 00:51:28,220 --> 00:51:29,880 Asta-i o întrebare bună. 1146 00:51:29,880 --> 00:51:30,481 Da. 1147 00:51:30,481 --> 00:51:34,810 >> Audiența: Prin alocarea 10 numere întregi pe scară largă, 1148 00:51:34,810 --> 00:51:38,177 ai putea folosi de fapt că pointer ca like-- aproape 1149 00:51:38,177 --> 00:51:39,372 ca o serie de numere întregi? 1150 00:51:39,372 --> 00:51:41,830 SPEAKER 1: Da, așa poți să-l utilizați ca o serie de numere întregi? 1151 00:51:41,830 --> 00:51:45,970 Da, exact, aceasta este ceea ce Pulak doar arătat tu on-- un cuplu alunecă în urmă, 1152 00:51:45,970 --> 00:51:48,680 în cazul în care spunem, OK, aceasta este într-adevăr doar un fel de-- noi 1153 00:51:48,680 --> 00:51:50,805 pot gândi la ea ca la o serie de 10 numere întregi. 1154 00:51:50,805 --> 00:51:52,222 Se întâmplă să fie pe heap. 1155 00:51:52,222 --> 00:51:54,971 Audiența: Dar nu au putut accesa cu notație suport pătrat? 1156 00:51:54,971 --> 00:51:58,220 SPEAKER 1: Tu de fapt putut accesa cu notație suport pătrat, da. 1157 00:51:58,220 --> 00:52:00,221 Aveți posibilitatea să le trateze la fel. 1158 00:52:00,221 --> 00:52:00,720 Da. 1159 00:52:00,720 --> 00:52:02,420 >> Audiența: De ce ar pointer fi vreodată nul? 1160 00:52:02,420 --> 00:52:04,170 >> SPEAKER 1: De ce ar fi pointer fi vreodată nul? 1161 00:52:04,170 --> 00:52:06,570 Dacă vă va folosi la toate memoria de pe grămada de. 1162 00:52:06,570 --> 00:52:09,141 În cazul în care programul este mananca, consumă, consumă memorie, 1163 00:52:09,141 --> 00:52:11,890 și nu e nimic din stânga, apoi malloc va say-- dacă spui, 1164 00:52:11,890 --> 00:52:14,760 Vreau mai mult de 100 de bytes, se va să spun, nu am 100 de bytes. 1165 00:52:14,760 --> 00:52:15,740 Iată null. 1166 00:52:15,740 --> 00:52:18,780 Asta înseamnă că, nu am reușit. 1167 00:52:18,780 --> 00:52:20,516 Da. 1168 00:52:20,516 --> 00:52:22,830 >> Audiența: În acest caz, null nu este nimic, nu? 1169 00:52:22,830 --> 00:52:24,110 >> SPEAKER 1: Da, în acest caz, null este nimic. 1170 00:52:24,110 --> 00:52:24,943 Nu ai nici o adresă. 1171 00:52:24,943 --> 00:52:28,065 Nu există nici o memorie. 1172 00:52:28,065 --> 00:52:31,500 Bine, se deplasează pe. 1173 00:52:31,500 --> 00:52:34,976 OK, hai să vorbim foarte repede despre buffer overflow. 1174 00:52:34,976 --> 00:52:38,210 Când s-ar putea întâlnim buffer overflow? 1175 00:52:38,210 --> 00:52:42,980 Să presupunem că avem un-- noi aloca o bucată de memorie, 1176 00:52:42,980 --> 00:52:44,720 si vom scrie șirul în. 1177 00:52:44,720 --> 00:52:47,240 Și vom să spun, OK, am de gând să aloce 1178 00:52:47,240 --> 00:52:49,320 spațiu suficient pentru șase caractere. 1179 00:52:49,320 --> 00:52:51,680 Și am de gând să întreb utilizatorul pentru unele de intrare. 1180 00:52:51,680 --> 00:52:54,470 Și intrările de utilizator, de exemplu, salut. 1181 00:52:54,470 --> 00:52:56,430 Și care se potrivește perfect bine că avem 1182 00:52:56,430 --> 00:53:00,790 cameră pentru toate caracterele de salut, și caracterul de terminare nul. 1183 00:53:00,790 --> 00:53:02,840 O multime de cameră, nici o problema. 1184 00:53:02,840 --> 00:53:08,010 >> Dar dacă am da posibilitatea pentru un utilizator rău de a utiliza programul nostru, 1185 00:53:08,010 --> 00:53:13,152 și tip în șase caractere nu, sau nu cinci personaje, dar un milion. 1186 00:53:13,152 --> 00:53:15,860 Țin dactilografiere, și dactilografiere, și dactilografiere, ce se va întâmpla? 1187 00:53:15,860 --> 00:53:18,220 Ei bine, ne-am da doar enough-- calculator sau rău, 1188 00:53:18,220 --> 00:53:23,350 am dat doar acest șir spațiu suficient pentru 5 caractere. 1189 00:53:23,350 --> 00:53:28,300 Deci, vom obține ceva de genul acest, în cazul în care persoana care e rău 1190 00:53:28,300 --> 00:53:31,750 tastarea în intrare poate suprascrie dimensiunea tamponului, 1191 00:53:31,750 --> 00:53:35,922 și poate merge de fapt, pe lângă suma că este alocat inițial. 1192 00:53:35,922 --> 00:53:38,380 Și apoi ce puteți face, The lucru foarte rău care le puteți face, 1193 00:53:38,380 --> 00:53:40,260 este suprascrie adresa de retur. 1194 00:53:40,260 --> 00:53:42,010 Ceea ce înseamnă, practic, puteți lua un fel de 1195 00:53:42,010 --> 00:53:45,110 controlul comportamentului programului. 1196 00:53:45,110 --> 00:53:47,880 Deci, la un nivel foarte ridicat buffer overflow este atunci când 1197 00:53:47,880 --> 00:53:49,960 ai aloca o anumită cantitate de memorie. 1198 00:53:49,960 --> 00:53:53,060 Și apoi Tu-- asta pentru că ești luând introduse de utilizator sau ceva 1199 00:53:53,060 --> 00:53:57,190 ca that-- te duci peste limitele de ceea ce ați alocat inițial 1200 00:53:57,190 --> 00:53:59,955 și începe încurc programul. 1201 00:53:59,955 --> 00:54:00,455 Da? 1202 00:54:00,455 --> 00:54:03,220 >> Audiența: De ce nu ar fi ca doar returnează o eroare de segmentare? 1203 00:54:03,220 --> 00:54:05,594 >> SPEAKER 1: De ce nu ar fi că returnează o eroare de segmentare? 1204 00:54:05,594 --> 00:54:06,570 Ar putea. 1205 00:54:06,570 --> 00:54:10,030 Uneori compilator sau în timpul uneia dintre rulării dvs. 1206 00:54:10,030 --> 00:54:11,430 este, de fapt de gând să verifice asta. 1207 00:54:11,430 --> 00:54:13,890 Dacă anumite lucruri se întâmplă, și acest este un fel de nivel inferior, 1208 00:54:13,890 --> 00:54:15,610 atunci trebuie să știți. 1209 00:54:15,610 --> 00:54:18,820 Dar, dacă nu de design aceste sisteme în mod corespunzător, 1210 00:54:18,820 --> 00:54:21,170 atunci ai sansa de nu-l prinde și doar 1211 00:54:21,170 --> 00:54:24,844 permițând computerul take-- persoană rău pentru a controla computerul. 1212 00:54:24,844 --> 00:54:25,344 Da. 1213 00:54:25,344 --> 00:54:26,260 >> Audiența: [inaudibil]? 1214 00:54:26,260 --> 00:54:28,934 1215 00:54:28,934 --> 00:54:29,600 SPEAKER 1: Sigur. 1216 00:54:29,600 --> 00:54:33,800 Oh, când spun tampon, vreau sa spun doar cantitate de memorie pe care le-ați alocat. 1217 00:54:33,800 --> 00:54:39,090 Deci, aici i-am spus, oh, am alocat șase char-- suficient loc pentru șase caractere. 1218 00:54:39,090 --> 00:54:42,880 Și eu numesc asta tampon meu în cazul în care s-ar putea scrie informații. 1219 00:54:42,880 --> 00:54:44,390 Da. 1220 00:54:44,390 --> 00:54:46,791 Orice alte întrebări cu privire la asta? 1221 00:54:46,791 --> 00:54:47,290 Da. 1222 00:54:47,290 --> 00:54:49,150 >> Audiența: Cum opri? 1223 00:54:49,150 --> 00:54:50,274 Cum te opri? 1224 00:54:50,274 --> 00:54:51,440 SPEAKER 1: întrebare minunat. 1225 00:54:51,440 --> 00:54:52,240 Cum te opri? 1226 00:54:52,240 --> 00:54:54,110 Cum a face tu a preveni buffer overflow? 1227 00:54:54,110 --> 00:54:59,160 Ei bine, o modalitate de a face acest lucru este ceva de genul GetString, unde în mod constant crește 1228 00:54:59,160 --> 00:55:03,200 cantitatea de memorie pe care le aloca în cazul în care utilizatorul introduce o mulțime de text. 1229 00:55:03,200 --> 00:55:07,570 Un alt lucru este, dacă numai vreau șase caractere, face o verificare rapidă. 1230 00:55:07,570 --> 00:55:11,220 Spune doar de intrare șase caractere. 1231 00:55:11,220 --> 00:55:12,444 Da. 1232 00:55:12,444 --> 00:55:14,360 Deci, să spunem că au fost lucru on-- vom 1233 00:55:14,360 --> 00:55:16,985 pentru a merge la lucruri web un pic mai târziu, în course-- dar sa 1234 00:55:16,985 --> 00:55:21,422 spune lucrați pe un formular, ar trebui să doar limita cat de mult ar putea predat. 1235 00:55:21,422 --> 00:55:22,378 Da. 1236 00:55:22,378 --> 00:55:24,768 >> Audiența: getString trage memorie de stivă, nu? 1237 00:55:24,768 --> 00:55:25,444 Doar pentru a clarifica? 1238 00:55:25,444 --> 00:55:26,485 SPEAKER 1: Încă o dată? 1239 00:55:26,485 --> 00:55:28,400 Audiența: Are getString ia de memorie din stivă? 1240 00:55:28,400 --> 00:55:31,210 SPEAKER 1: Cred Getm-- get Int ia de memorie din heap 1241 00:55:31,210 --> 00:55:32,911 pentru că o numește alloc. 1242 00:55:32,911 --> 00:55:33,452 Audiența: Oh. 1243 00:55:33,452 --> 00:55:33,951 BINE. 1244 00:55:33,951 --> 00:55:35,750 SPEAKER 1: Da, malloc și realloc. 1245 00:55:35,750 --> 00:55:37,120 Alte întrebări? 1246 00:55:37,120 --> 00:55:37,803 Da. 1247 00:55:37,803 --> 00:55:40,650 >> Audiența: Deci, prin definirea dimensiunea tamponarea, 1248 00:55:40,650 --> 00:55:42,733 vă împiedice pe cineva de la fiind capabil să injecteze cod 1249 00:55:42,733 --> 00:55:45,700 care poate aluneca pe lângă [neauzit]. 1250 00:55:45,700 --> 00:55:48,130 >> SPEAKER 1: Deci, prin definirea dimensiunea tamponului, 1251 00:55:48,130 --> 00:55:50,760 ai spus, OK aici cum de mult de memorie putem folosi. 1252 00:55:50,760 --> 00:55:55,550 Dacă ați permite utilizatorului să scrie peste el, atunci ai de gând să o problemă. 1253 00:55:55,550 --> 00:55:57,930 Are sens. 1254 00:55:57,930 --> 00:55:59,370 Incredibil. 1255 00:55:59,370 --> 00:56:00,640 Să mergem de-a lungul. 1256 00:56:00,640 --> 00:56:02,320 In regula. 1257 00:56:02,320 --> 00:56:06,652 Vorbind de erori, aici sunt unele mesaje de eroare comune 1258 00:56:06,652 --> 00:56:09,860 care ar fi putut apărut în timp ce au fost codificare, de lucru pe seturi de probleme. 1259 00:56:09,860 --> 00:56:12,320 Șansă bună ca unul dintre aceste spectacole pe testul 1260 00:56:12,320 --> 00:56:15,090 dacă ultimii ani sunt vreun indiciu. 1261 00:56:15,090 --> 00:56:17,580 Deci, răspunsurile sunt un fel de aici pe bord. 1262 00:56:17,580 --> 00:56:19,510 Dar nu ezitați să strige ceva mai mult. 1263 00:56:19,510 --> 00:56:21,280 >> De ce s-ar putea întâmpla o eroare de segmentare? 1264 00:56:21,280 --> 00:56:24,279 De ce s-ar putea să obțineți un defect de segmentare atunci când rulați programul? 1265 00:56:24,279 --> 00:56:26,760 1266 00:56:26,760 --> 00:56:28,230 >> Audiența: [neauzit]. 1267 00:56:28,230 --> 00:56:29,500 >> SPEAKER 1: Bun. 1268 00:56:29,500 --> 00:56:32,820 Da, dacă vom încerca să acces memorie care nu ne-a dat. 1269 00:56:32,820 --> 00:56:34,610 Dacă vom dereference un pointer nul. 1270 00:56:34,610 --> 00:56:38,610 De exemplu, dacă o numim malloc, și uitați să verificați dacă este nul, 1271 00:56:38,610 --> 00:56:42,250 și ne-am încercați să utilizați o, a computerului O să ne dea o eroare de segmentare. 1272 00:56:42,250 --> 00:56:42,750 Bine. 1273 00:56:42,750 --> 00:56:46,680 Ce despre implicit declarație de funcție? 1274 00:56:46,680 --> 00:56:48,589 Ce inseamna? 1275 00:56:48,589 --> 00:56:51,380 Audiența: Încerci să utilizați o funcție care nu ați definit. 1276 00:56:51,380 --> 00:56:52,130 SPEAKER 1: Bun. 1277 00:56:52,130 --> 00:56:54,504 Încerci să utilizați o funcție că nu ați definit. 1278 00:56:54,504 --> 00:56:56,000 Deci, care ar putea fi unul din două lucruri. 1279 00:56:56,000 --> 00:56:59,320 Poate a fost ca exemplul Camille-ai arătat mai devreme. 1280 00:56:59,320 --> 00:57:02,330 Și aveți o funcție principală care solicită ceva numit cub. 1281 00:57:02,330 --> 00:57:04,371 Și să spunem că ai uitat pentru a scrie acest prototip. 1282 00:57:04,371 --> 00:57:07,540 Ai uitat să spui, hei calculator, Am această funcție numită cub. 1283 00:57:07,540 --> 00:57:09,380 Veți vedea mai târziu. 1284 00:57:09,380 --> 00:57:12,440 Să spunem că a uitat să scrie prototip, s-ar putea obține această eroare. 1285 00:57:12,440 --> 00:57:14,820 Un alt lucru este, să spunem ai încercat să folosească printf, 1286 00:57:14,820 --> 00:57:16,880 și a uitat să includă biblioteca standard, 1287 00:57:16,880 --> 00:57:20,240 apoi va spune implicit declarație de funcție. 1288 00:57:20,240 --> 00:57:22,800 Și nu în ultimul rând, identificator nedeclarat. 1289 00:57:22,800 --> 00:57:23,300 Da. 1290 00:57:23,300 --> 00:57:24,841 >> Audiența: Ai un domeniu de aplicare problemă. 1291 00:57:24,841 --> 00:57:28,728 Ca poate încerci să apela o variabilă locală care este 1292 00:57:28,728 --> 00:57:30,884 într-un alt fel de zonă. 1293 00:57:30,884 --> 00:57:33,550 SPEAKER 1: Mare, deci, dacă aveți o variabilă care nu este în domeniul de aplicare, 1294 00:57:33,550 --> 00:57:36,890 și încerci să-l folosească, ai de gând să intre în bucluc. 1295 00:57:36,890 --> 00:57:40,960 Și mai general, să spunem încercați să utilizați X, cu tot spunând Int 1296 00:57:40,960 --> 00:57:45,140 X este egal cu 5, atunci esti merge pentru a rula în probleme. 1297 00:57:45,140 --> 00:57:47,640 Scuză-mă, întrebări cu privire la acest lucru? 1298 00:57:47,640 --> 00:57:49,330 Awesome, lucrând de-a lungul dreapta. 1299 00:57:49,330 --> 00:57:55,692 >> OK, recursivitate, de ce să might-- see-- Mi-am pierdut sch-- oh aici vom merge, 1300 00:57:55,692 --> 00:57:57,400 doar asigurați-vă că suntem aproximativ la timp. 1301 00:57:57,400 --> 00:57:59,060 Bine, rece. 1302 00:57:59,060 --> 00:58:03,150 OK, recursivitate, ideea generală de recursivitate, o funcție recursive 1303 00:58:03,150 --> 00:58:05,380 este o funcție care se numește. 1304 00:58:05,380 --> 00:58:08,170 OK, deci asta e ceea ce am înseamnă un concept de program de 1305 00:58:08,170 --> 00:58:11,130 prin care o funcție în sine apeluri. 1306 00:58:11,130 --> 00:58:16,210 Ce s-ar fi ceea ce este un some-- motiv bun de a utiliza recursivitate? 1307 00:58:16,210 --> 00:58:17,550 Când ar putea fi de folos? 1308 00:58:17,550 --> 00:58:20,926 Sau ce este un program care într-adevăr se pretează la recursivitate? 1309 00:58:20,926 --> 00:58:22,330 >> Audiența: căutare binară. 1310 00:58:22,330 --> 00:58:25,500 >> SPEAKER 1: căutare binară se pretează la recursivitate, 1311 00:58:25,500 --> 00:58:29,060 pentru că aveți această problemă pe care le poate descompune în bucăți mai mici, 1312 00:58:29,060 --> 00:58:32,330 și de a efectua în mod continuu același algoritm pe ea. 1313 00:58:32,330 --> 00:58:37,790 Aceasta duce la, în multe cazuri, mai cod elegant care e mai precis. 1314 00:58:37,790 --> 00:58:40,500 Doar suntem exemplul de căutare binară. 1315 00:58:40,500 --> 00:58:43,100 Un alt exemplu este merge sort. 1316 00:58:43,100 --> 00:58:45,920 Uneori, atunci când vă gândiți la un algoritm, cum ar fi factorial, 1317 00:58:45,920 --> 00:58:47,410 doar se simte recursiv, nu? 1318 00:58:47,410 --> 00:58:52,440 Pentru ca stim ca factorialului de 5 este un factorial 4 ori 5. 1319 00:58:52,440 --> 00:58:56,080 Și așa, atunci când configurați o problemă în acest fel, doar simte recursiv. 1320 00:58:56,080 --> 00:58:58,530 Deci, care ar fi o mod minunat de a scrie. 1321 00:58:58,530 --> 00:58:59,425 Întrebări? 1322 00:58:59,425 --> 00:59:00,395 Da. 1323 00:59:00,395 --> 00:59:01,850 >> Audiența: Ce este un caz de bază? 1324 00:59:01,850 --> 00:59:02,770 >> SPEAKER 1: Oh, ce este un caz de bază? 1325 00:59:02,770 --> 00:59:04,680 I-am spus, nu uita pentru a include un caz de bază. 1326 00:59:04,680 --> 00:59:07,690 Să spunem că am fost scris o funcție factorial, 1327 00:59:07,690 --> 00:59:09,620 și făceam factorial de 5. 1328 00:59:09,620 --> 00:59:12,352 Și știm un factorial de 5 este de 5 ori un factorial de 4, 1329 00:59:12,352 --> 00:59:13,310 bla, bla, bla, bla. 1330 00:59:13,310 --> 00:59:14,360 Cum știm când să se oprească? 1331 00:59:14,360 --> 00:59:16,276 Cum știm că am de fapt, au un număr? 1332 00:59:16,276 --> 00:59:20,180 Pentru că dacă ne-am păstrat de asteptare factorial, atunci nu ne-ar primi un răspuns, nu? 1333 00:59:20,180 --> 00:59:24,470 Așa că atunci când știm cum să opri în exemplul factorialului. 1334 00:59:24,470 --> 00:59:25,460 Oricine, da. 1335 00:59:25,460 --> 00:59:27,764 >> Audiența: Când 1 factorialului este 1. 1336 00:59:27,764 --> 00:59:28,430 SPEAKER 1: Bun. 1337 00:59:28,430 --> 00:59:29,530 Deci, noi știm. 1338 00:59:29,530 --> 00:59:33,400 Putem lua de la sine că 1 factorial este egal cu 1. 1339 00:59:33,400 --> 00:59:36,570 Deci, dacă vom ajunge în punctul în care suntem apel factoriale la 1, 1340 00:59:36,570 --> 00:59:38,050 du-te mai departe și să se întoarcă 1. 1341 00:59:38,050 --> 00:59:39,180 Și asta e cazul dumneavoastră de bază. 1342 00:59:39,180 --> 00:59:45,040 Pentru că știm o dată ne-am lovit ca și Noi întotdeauna va lovi că, vom never-- 1343 00:59:45,040 --> 00:59:48,800 nu vom ține doar merge pentru totdeauna. 1344 00:59:48,800 --> 00:59:50,700 Orice alte întrebări cu privire la recursivitate? 1345 00:59:50,700 --> 00:59:51,630 Da. 1346 00:59:51,630 --> 00:59:54,420 >> Audiența: Deci, atunci când te vei întoarce 1, doar în mod automat 1347 00:59:54,420 --> 00:59:56,290 se va opri programul, nu? 1348 00:59:56,290 --> 00:59:59,390 >> SPEAKER 1: Da, astfel încât atunci când apel de întoarcere 1, if-- să spunem, 1349 00:59:59,390 --> 01:00:04,480 să spunem factorial de 2 apeluri factorial de 1, factorial din 1 1350 01:00:04,480 --> 01:00:06,120 va preda doar din spate 1. 1351 01:00:06,120 --> 01:00:12,790 Și acum factorial de 2 vor spune OK, 2 ori 1 este 2, și să se întoarcă acest răspuns. 1352 01:00:12,790 --> 01:00:14,260 Da. 1353 01:00:14,260 --> 01:00:16,710 >> Audiența: Avem să vă faceți griji despre domeniul de aplicare în recursivitate 1354 01:00:16,710 --> 01:00:20,150 atunci când te duci într-un algoritm? 1355 01:00:20,150 --> 01:00:21,880 >> SPEAKER 1: Ah, da. 1356 01:00:21,880 --> 01:00:25,060 Da, tu nu trebuie să vă faceți griji cu privire la domeniul de aplicare în contextul recursivitate. 1357 01:00:25,060 --> 01:00:29,820 Deci, numai variabilele definite în care se execută a funcției 1358 01:00:29,820 --> 01:00:32,170 vor fi utile. 1359 01:00:32,170 --> 01:00:33,792 Da, bine întrebare. 1360 01:00:33,792 --> 01:00:35,250 Bine, hai să ne mișcăm de-a lungul. 1361 01:00:35,250 --> 01:00:37,320 Pentru că avem o mulțime de materiale pentru a obține prin intermediul. 1362 01:00:37,320 --> 01:00:41,080 Dar, așa cum am spus, nu ezitați să lovit ore de birou, sau ne după fapt. 1363 01:00:41,080 --> 01:00:42,850 >> Acesta este doar un diapozitiv foarte repede. 1364 01:00:42,850 --> 01:00:45,150 Am învățat multe despre căutări și felul. 1365 01:00:45,150 --> 01:00:47,400 Te rog, te rog, te rog, aceste secțiuni sunt on-line, 1366 01:00:47,400 --> 01:00:51,240 Cred că la cs50.net/quizzes. 1367 01:00:51,240 --> 01:00:53,762 Deci, du-te să ia această diagramă și pune-l pe foaie ta, 1368 01:00:53,762 --> 01:00:55,470 pentru că nu va fi o întrebare pe această. 1369 01:00:55,470 --> 01:00:56,682 Vă rugăm să nu-l greșit. 1370 01:00:56,682 --> 01:00:58,390 Doar foarte repede, ce înseamnă această diagramă, 1371 01:00:58,390 --> 01:01:04,370 este o vorbeste despre mare, pe care știm să fie limita superioară a unei algoritmi 1372 01:01:04,370 --> 01:01:05,150 timpul pentru alergat. 1373 01:01:05,150 --> 01:01:08,080 Si ne-am omega, care este O să fie limita inferioară 1374 01:01:08,080 --> 01:01:10,290 de execuție algoritmi. 1375 01:01:10,290 --> 01:01:10,840 OK? 1376 01:01:10,840 --> 01:01:12,480 >> Audiența: [neauzit]. 1377 01:01:12,480 --> 01:01:12,800 >> SPEAKER 1: Da, ceea ce este ultimul lucru? 1378 01:01:12,800 --> 01:01:13,380 Ce-i teta? 1379 01:01:13,380 --> 01:01:16,850 Este dacă we-- vom doar la pasă de în această clasă, în cazul 1380 01:01:16,850 --> 01:01:19,381 în cazul în care limita superioară și nostru limită inferioară nostru sunt la fel. 1381 01:01:19,381 --> 01:01:22,005 Da, asta e singura dată este va veni în această clasă. 1382 01:01:22,005 --> 01:01:23,320 OK, am de gând să continui. 1383 01:01:23,320 --> 01:01:26,490 Dacă nu ați luat poza, Promit acestea vor fi on-line. 1384 01:01:26,490 --> 01:01:28,220 >> OK, minunat, structs. 1385 01:01:28,220 --> 01:01:29,810 De ce s-ar putea vrem structs? 1386 01:01:29,810 --> 01:01:34,110 Ce este un motiv util am putea dori structs. 1387 01:01:34,110 --> 01:01:36,277 Cineva striga ceva. 1388 01:01:36,277 --> 01:01:38,110 Ei bine, să ne uităm la exemplu de pe placa. 1389 01:01:38,110 --> 01:01:41,090 Să presupunem că avem de-a face cu toate aceste elevi. 1390 01:01:41,090 --> 01:01:44,900 Dacă facem un program pentru CS50, există ca 800 de persoane. 1391 01:01:44,900 --> 01:01:47,890 Avem nevoie de a write-- vom trebuie să se ocupe de o mulțime de informații 1392 01:01:47,890 --> 01:01:49,020 despre elevi. 1393 01:01:49,020 --> 01:01:50,990 Ar fi frumos dacă am putea fel de grup 1394 01:01:50,990 --> 01:01:54,460 astea-- toate informațiile pe care are de a face cu un anumit elev 1395 01:01:54,460 --> 01:01:56,027 într-un singur tip de date. 1396 01:01:56,027 --> 01:01:58,360 Dar noi știm nu există date tip numit, Student, nu? 1397 01:01:58,360 --> 01:02:01,890 Avem un număr întreg, avem o float, avem un șir de caractere, sau o stea char, 1398 01:02:01,890 --> 01:02:03,920 dar nu avem, un student. 1399 01:02:03,920 --> 01:02:08,680 >> Deci, ce putem face este, de fapt un fel de a defini propria noastră structură, numesc elev, 1400 01:02:08,680 --> 01:02:12,440 și putem asocia unele diferite domenii cu care struct. 1401 01:02:12,440 --> 01:02:14,410 Deci, în acest caz, să spune ca avem un student. 1402 01:02:14,410 --> 01:02:17,350 Și lucrurile pe care le pasă despre reprezintă numărul de student ID-ul 1403 01:02:17,350 --> 01:02:19,500 și numele elevului. 1404 01:02:19,500 --> 01:02:24,175 Și acum putem asocia acest ID și acest nume cu un anumit elev. 1405 01:02:24,175 --> 01:02:25,300 Să vedem câteva exemple. 1406 01:02:25,300 --> 01:02:28,860 1407 01:02:28,860 --> 01:02:33,490 >> OK, deci aici spun, OK, hai să spune că doresc să facă un student. 1408 01:02:33,490 --> 01:02:35,050 L chem elev 1. 1409 01:02:35,050 --> 01:02:38,850 Și numărul de ID-ul, în acest caz, putem accesa 1410 01:02:38,850 --> 01:02:45,200 de a face doar numele studentului dot domeniul vrem să acceseze. 1411 01:02:45,200 --> 01:02:49,110 Deci, acest lucru va fi doar de student 1 punct ID, și ne-am stabilit o egală cu 1. 1412 01:02:49,110 --> 01:02:52,300 Pentru că amintiți-vă, am spus că ID va fi un număr întreg. 1413 01:02:52,300 --> 01:02:56,540 Și foarte similar, putem spune, acest Numele studentului va fi Davin, 1414 01:02:56,540 --> 01:02:57,760 de exemplu. 1415 01:02:57,760 --> 01:03:01,420 Astfel încât să putem accesa doar domeniul o struct folosind acest punct. 1416 01:03:01,420 --> 01:03:03,098 Întrebări cu privire la asta? 1417 01:03:03,098 --> 01:03:03,598 Da. 1418 01:03:03,598 --> 01:03:05,582 >> Audiența: Există vreo modalitate pentru a proteja variabilele? 1419 01:03:05,582 --> 01:03:08,560 Există vreo modalitate de a proteja variabile de a fi accesate din exterior? 1420 01:03:08,560 --> 01:03:10,726 >> SPEAKER 1: Există oricum pentru a proteja variabilele 1421 01:03:10,726 --> 01:03:12,680 de la a fi accesat din exterior? 1422 01:03:12,680 --> 01:03:13,750 Nu în domeniul de aplicare al CS50. 1423 01:03:13,750 --> 01:03:16,680 1424 01:03:16,680 --> 01:03:17,977 Alte întrebări? 1425 01:03:17,977 --> 01:03:18,476 Da. 1426 01:03:18,476 --> 01:03:18,942 >> Audiența: Ce este typedef struct? 1427 01:03:18,942 --> 01:03:20,192 Ce înseamnă fiecare componentă? 1428 01:03:20,192 --> 01:03:22,937 1429 01:03:22,937 --> 01:03:24,520 SPEAKER 1: Ah, ce este typedef struct? 1430 01:03:24,520 --> 01:03:26,240 Ce face fiecare componentă Adică de acest tip? 1431 01:03:26,240 --> 01:03:26,850 >> Audiența: Da. 1432 01:03:26,850 --> 01:03:27,683 >> SPEAKER 1: OK, rece. 1433 01:03:27,683 --> 01:03:31,200 Deci acest spune, hei calculator, am doriți să creați o nouă structură. 1434 01:03:31,200 --> 01:03:34,970 Și am de gând pentru a defini o definiție pentru ea, astfel încât am putut folosi 1435 01:03:34,970 --> 01:03:37,520 ca și cum ar fi un tip de de-a lungul programul meu. 1436 01:03:37,520 --> 01:03:39,300 OK, așa că vreau să definească o structură. 1437 01:03:39,300 --> 01:03:41,650 Iar eu acum o să fie capabil să-l folosească ca un tip. 1438 01:03:41,650 --> 01:03:43,400 Iar numele său este elev. 1439 01:03:43,400 --> 01:03:45,730 Și aici sunt domeniile sale. 1440 01:03:45,730 --> 01:03:48,130 >> Audiența: Deci este că typedef struct [Inaudibil]? 1441 01:03:48,130 --> 01:03:50,592 1442 01:03:50,592 --> 01:03:53,800 SPEAKER 1: Dacă doriți să fie în măsură să utiliza acest struct pe tot parcursul programului, 1443 01:03:53,800 --> 01:03:57,910 și, în cele mai multe cazuri în CS50 noi face, trebuie să spunem de tip Def. 1444 01:03:57,910 --> 01:04:01,190 Și care îi permite să-l folosească la fel mod pe care le folosim ca Int sau float. 1445 01:04:01,190 --> 01:04:04,168 Computerul va știu întotdeauna ce este. 1446 01:04:04,168 --> 01:04:04,668 Da. 1447 01:04:04,668 --> 01:04:06,560 >> Audiența: Putem scrie acest lucru în fișierul header? 1448 01:04:06,560 --> 01:04:07,060 >> SPEAKER 1: Oh, îmi pare rău. 1449 01:04:07,060 --> 01:04:08,600 Nu ne-am scrie acest lucru în fișierul header? 1450 01:04:08,600 --> 01:04:11,410 Ai putea scrie acest lucru la partea de sus a dvs. Programul, în partea de sus a programului de c. 1451 01:04:11,410 --> 01:04:13,010 Da, asta ar fi cel mai loc rezonabil pentru aceasta. 1452 01:04:13,010 --> 01:04:13,509 Acolo. 1453 01:04:13,509 --> 01:04:15,704 Audiența: aceeași întrebare, astfel încât înainte de principal? 1454 01:04:15,704 --> 01:04:18,870 SPEAKER 1: dreapta, ai nevoie de acest lucru să fie undeva că oricine poate accesa. 1455 01:04:18,870 --> 01:04:20,612 Deci, înainte de principal în cazul dumneavoastră, da. 1456 01:04:20,612 --> 01:04:23,820 Audiența: Există o diferență între punerea elev în partea de sus și în partea de jos? 1457 01:04:23,820 --> 01:04:25,810 SPEAKER 1: Ah, există o diferență între elev punerea 1458 01:04:25,810 --> 01:04:26,840 pe partea de sus sau în partea de jos? 1459 01:04:26,840 --> 01:04:29,650 Let-- salva această întrebare, și când ajungem la liste legate, 1460 01:04:29,650 --> 01:04:31,020 vom vedea că, bine? 1461 01:04:31,020 --> 01:04:32,750 Deci, stai în acest timp de o secundă. 1462 01:04:32,750 --> 01:04:37,080 Ultimul lucru pe care vreau să menționez aici, este loc de a avea o structură, 1463 01:04:37,080 --> 01:04:41,180 avem un pointer la o structură, ne putem schimba notatia nostru 1464 01:04:41,180 --> 01:04:42,480 să fie un pic mai frumos. 1465 01:04:42,480 --> 01:04:45,810 >> Putem spune, să zicem că avem o pointer la un elev, mai degrabă decât doar 1466 01:04:45,810 --> 01:04:47,040 un student. 1467 01:04:47,040 --> 01:04:52,460 Dacă vrem acces la un domeniu, în loc de Făcând, bine du-te dereference indicatorul, 1468 01:04:52,460 --> 01:04:54,100 și apoi a accesa numele câmpului. 1469 01:04:54,100 --> 01:04:57,310 Această notație arată un pic murdar cu steaua în acest punct. 1470 01:04:57,310 --> 01:05:00,790 Total corect, dar un fel de cale curat a face acest lucru, 1471 01:05:00,790 --> 01:05:03,280 este doar de a spune numele pointer săgeată. 1472 01:05:03,280 --> 01:05:11,460 Și care combină de fapt dereferencing și accesarea într-un simbol frumos. 1473 01:05:11,460 --> 01:05:12,470 Întrebări cu privire la asta? 1474 01:05:12,470 --> 01:05:13,760 >> Audiența: spun doar că o dată. 1475 01:05:13,760 --> 01:05:14,480 >> SPEAKER 1: Să presupunem că o dată. 1476 01:05:14,480 --> 01:05:16,021 >> Audiența: Exact ce ai spus. 1477 01:05:16,021 --> 01:05:17,870 SPEAKER 1: Sigur, exact ceea ce tocmai am spus. 1478 01:05:17,870 --> 01:05:21,580 Dacă avem un pointer la un student mai degrabă decât studentul în sine, 1479 01:05:21,580 --> 01:05:25,410 am can-- o modalitate prin care putem accesa câmp este de dereference ea, și apoi 1480 01:05:25,410 --> 01:05:27,110 Numele acces. 1481 01:05:27,110 --> 01:05:29,040 Un alt, mod mai frumos am poate face acest lucru, care este doar 1482 01:05:29,040 --> 01:05:33,550 un pic de zahăr sintactic, este doar pentru a face indicatorul nume săgeată. 1483 01:05:33,550 --> 01:05:38,190 Și asta este de gând să combine dereferencing și accesarea. 1484 01:05:38,190 --> 01:05:40,400 Da, destul de rece. 1485 01:05:40,400 --> 01:05:41,260 In regula. 1486 01:05:41,260 --> 01:05:44,390 >> Deci, hai sa vorbim despre cealaltă întrebare. 1487 01:05:44,390 --> 01:05:46,520 Să sari la noduri, care vom pentru a utiliza 1488 01:05:46,520 --> 01:05:49,120 în legătură liste în doar o secundă. 1489 01:05:49,120 --> 01:05:53,580 Deci, aici, veți observa că nu există este nodul cuvântul atât pe partea de jos, 1490 01:05:53,580 --> 01:05:55,160 și pe partea de sus. 1491 01:05:55,160 --> 01:05:59,040 Înainte, când am fost definirea de student, am avut doar elev pe partea de jos. 1492 01:05:59,040 --> 01:06:00,470 Noi nu am avut elev pe partea de sus. 1493 01:06:00,470 --> 01:06:01,902 Oricine știe de ce ar putea fi? 1494 01:06:01,902 --> 01:06:02,860 Ce diferenta este? 1495 01:06:02,860 --> 01:06:03,360 Da. 1496 01:06:03,360 --> 01:06:06,212 Audiența: Deci folosiți nod este definiția nodului, 1497 01:06:06,212 --> 01:06:08,254 deci este un lucru recursiv? 1498 01:06:08,254 --> 01:06:08,920 SPEAKER 1: Bun. 1499 01:06:08,920 --> 01:06:13,230 Da, avem nevoie de noduri noastre trebuie pointer la alte noduri. 1500 01:06:13,230 --> 01:06:17,640 Deci, din moment ce vom folosi acest tip înainte de a fi de fapt definite, 1501 01:06:17,640 --> 01:06:20,613 avem nevoie să-l pună la partea de sus doar așa că știe ce este. 1502 01:06:20,613 --> 01:06:22,446 Audiența: Deci încă nevoie de ea în partea de jos? 1503 01:06:22,446 --> 01:06:23,338 SPEAKER 1: Da. 1504 01:06:23,338 --> 01:06:24,754 Audiența: Deci întotdeauna în partea de jos. 1505 01:06:24,754 --> 01:06:26,090 SPEAKER 1: întotdeauna în partea de jos. 1506 01:06:26,090 --> 01:06:29,410 Deci, toate de-a ta va au o la partea de jos. 1507 01:06:29,410 --> 01:06:30,720 Orice alte întrebări? 1508 01:06:30,720 --> 01:06:33,511 Bine, de fapt, vorbim speram despre legat liste foarte repede. 1509 01:06:33,511 --> 01:06:36,510 Deci, liste legate are-- le folosi în loc de matrice în unele cazuri, 1510 01:06:36,510 --> 01:06:40,030 pentru că știm că sunt o matrice lungime fixă, în timp ce listele legate 1511 01:06:40,030 --> 01:06:42,670 putem crește și reduce ca ne-o dorim. 1512 01:06:42,670 --> 01:06:45,790 Deci acesta este un exemplu de ceea ce o listă legată s-ar putea arata. 1513 01:06:45,790 --> 01:06:48,590 Ceea ce avem nevoie pentru a vedea este capul listei. 1514 01:06:48,590 --> 01:06:50,330 Deci, unde lista începe. 1515 01:06:50,330 --> 01:06:53,010 Și apoi nod, fiecare nod ulterioară, este 1516 01:06:53,010 --> 01:06:55,880 responsabil pentru cunoașterea în cazul în care nodul următor este. 1517 01:06:55,880 --> 01:07:00,950 Deci, în acest caz, nodul care stochează 1 este responsabil pentru cunoașterea în cazul în care 3 este. 1518 01:07:00,950 --> 01:07:04,540 Persoana care stochează 3 este responsabil pentru cunoașterea unde 9 este. 1519 01:07:04,540 --> 01:07:06,230 Și 9 are nimeni altcineva pentru a indica. 1520 01:07:06,230 --> 01:07:08,750 E sfârșitul listei, așa că doar spune nul. 1521 01:07:08,750 --> 01:07:09,250 OK? 1522 01:07:09,250 --> 01:07:10,530 >> Audiența: Care este punctul de acest lucru? 1523 01:07:10,530 --> 01:07:11,480 >> SPEAKER 1: Care este punctul de acest lucru? 1524 01:07:11,480 --> 01:07:12,105 >> Audiența: Da. 1525 01:07:12,105 --> 01:07:15,390 SPEAKER 1: Pentru că, să spun că avem unele date. 1526 01:07:15,390 --> 01:07:18,480 Și nu știm exact cum multe date ne dorim înainte de timp. 1527 01:07:18,480 --> 01:07:22,479 Deci, cu o serie, să spunem unde ne doresc să conta oameni în primul rând. 1528 01:07:22,479 --> 01:07:24,020 Sansele sunt nu se va schimba. 1529 01:07:24,020 --> 01:07:28,120 Putem spune doar, OK, am doresc o serie de dimensiuni șase. 1530 01:07:28,120 --> 01:07:30,120 Dar dacă vrem ceva că se va schimba. 1531 01:07:30,120 --> 01:07:32,900 >> De exemplu, să spunem că am fost încercarea de pentru a ține evidența studenților 1532 01:07:32,900 --> 01:07:35,330 ca au venit in camera pentru sesiunea de reexaminare. 1533 01:07:35,330 --> 01:07:38,420 Nu am nici o idee despre cât de multe dintre voi oamenii sunt de gând să apară. 1534 01:07:38,420 --> 01:07:43,094 Așa că s-ar putea dori o structură de date că pot extinde și micșora. 1535 01:07:43,094 --> 01:07:45,510 Deoarece poate cineva va lăsa, poate cineva va veni. 1536 01:07:45,510 --> 01:07:48,386 Și astfel, în orice moment, ne-am Puteți adăuga sau elimina noduri. 1537 01:07:48,386 --> 01:07:49,771 Rece, marea întrebare. 1538 01:07:49,771 --> 01:07:50,270 Da. 1539 01:07:50,270 --> 01:07:52,311 >> Audiența: Dacă puteți folosi ceva de genul getString 1540 01:07:52,311 --> 01:07:55,750 care ține permițându-vă să obțineți mai multe date ca aveți nevoie de ea, de ce ai nevoie de acest lucru prea? 1541 01:07:55,750 --> 01:07:57,625 >> SPEAKER 1: De ce ar fi Folosești listă atunci când legate de 1542 01:07:57,625 --> 01:07:59,440 aveți posibilitatea să utilizați ceva de genul getString? 1543 01:07:59,440 --> 01:08:01,640 Asta-i o întrebare bună. 1544 01:08:01,640 --> 01:08:04,240 Amintiți-vă că unul dintre Get-- scaderi de getString 1545 01:08:04,240 --> 01:08:06,750 este că nu am făcut-o foarte bun loc de muncă de a elibera acea memorie, 1546 01:08:06,750 --> 01:08:09,320 si am introdus o grămadă de memorie scurgeri în programul tău? 1547 01:08:09,320 --> 01:08:15,037 Ai putea lua un static matrice de dimensiuni si continua sa creasca-l. 1548 01:08:15,037 --> 01:08:16,870 Dar v-ar trebui să găsească locuri noi în memorie. 1549 01:08:16,870 --> 01:08:18,359 Ar fi doar o mulțime de deasupra capului. 1550 01:08:18,359 --> 01:08:21,050 >> Unul dintre lucrurile frumoase despre legată liste, spre deosebire de matrice, matrice este 1551 01:08:21,050 --> 01:08:22,830 sunt toate în aceeași locație în memorie. 1552 01:08:22,830 --> 01:08:25,540 Trebuie să fie continuu bucăți de memorie. 1553 01:08:25,540 --> 01:08:29,920 Întrucât listele legate de, 2 și 3 pot fie în totalitate în locații diferite. 1554 01:08:29,920 --> 01:08:31,880 Ca 2 este aici, și 3 este aici. 1555 01:08:31,880 --> 01:08:34,421 Și atâta timp cât acestea au un pointer la un altul, e în regulă. 1556 01:08:34,421 --> 01:08:35,830 Știm că puteți găsi. 1557 01:08:35,830 --> 01:08:37,084 Întrebare acolo? 1558 01:08:37,084 --> 01:08:40,563 >> Audiența: getString este o funcție în bibliotecă CS50, nu? 1559 01:08:40,563 --> 01:08:42,060 Ea nu există în programe reale. 1560 01:08:42,060 --> 01:08:42,851 >> SPEAKER 1: Corect. 1561 01:08:42,851 --> 01:08:44,130 Corect, asta e alt lucru. 1562 01:08:44,130 --> 01:08:47,210 GetString nu există în afara contextului de CS50. 1563 01:08:47,210 --> 01:08:47,710 Da. 1564 01:08:47,710 --> 01:08:54,556 >> Audiența: Deci, nu faptul că două ar putea fi într-adevăr departe unul de altul, 1565 01:08:54,556 --> 01:08:59,859 are ca impact eficiența accesarea elementelor de pe lista? 1566 01:08:59,859 --> 01:09:01,359 SPEAKER 1: Aceasta este o întrebare mare. 1567 01:09:01,359 --> 01:09:04,278 Întrebarea a fost, nu-i asa impact eficiența accesare 1568 01:09:04,278 --> 01:09:05,819 aceste elemente diferite în listă. 1569 01:09:05,819 --> 01:09:06,930 De fapt, da. 1570 01:09:06,930 --> 01:09:09,569 Pentru ca stim if-- să spune că vrea să acceseze 1571 01:09:09,569 --> 01:09:14,520 al doilea element de matrice, știm putem face doar suport matrice 1, dreapta. 1572 01:09:14,520 --> 01:09:16,630 Este întotdeauna o să fie în aceeași locație. 1573 01:09:16,630 --> 01:09:20,720 Dar dacă vrem să ajungem la 3, nu putem spune pur și simplu, du-te ca 3. 1574 01:09:20,720 --> 01:09:24,009 Trebuie să spunem, OK, încep de la începutul listei, 1575 01:09:24,009 --> 01:09:26,050 iar acum avem de fapt să se plimbe prin până când vom 1576 01:09:26,050 --> 01:09:28,149 găsi numărul suntem interesati de. 1577 01:09:28,149 --> 01:09:30,790 >> Deci, în acest caz spunem, OK acesta este primul număr. 1578 01:09:30,790 --> 01:09:32,207 Deci, în esență, asta e indicele 0. 1579 01:09:32,207 --> 01:09:33,790 Acum trebuie să găsim al doilea număr. 1580 01:09:33,790 --> 01:09:34,740 Asta e index 1. 1581 01:09:34,740 --> 01:09:39,180 Așa că de fapt merge doar sa-- accesarea, este de gând să ia timp N. 1582 01:09:39,180 --> 01:09:42,027 Rece N., mare vechi Da. 1583 01:09:42,027 --> 01:09:43,903 >> Audiența: Care sunt fiecare dintre listele? 1584 01:09:43,903 --> 01:09:45,401 Sunt fiecare matrice, sau ce? 1585 01:09:45,401 --> 01:09:46,859 SPEAKER 1: Aceasta este o întrebare mare. 1586 01:09:46,859 --> 01:09:48,950 Care sunt fiecare dintre structuri care am trase? 1587 01:09:48,950 --> 01:09:51,649 Ele sunt noduri. 1588 01:09:51,649 --> 01:09:53,720 Deci fiecare dintre aceste mici Structura are două părți. 1589 01:09:53,720 --> 01:09:55,264 Ea are un număr întreg care deține. 1590 01:09:55,264 --> 01:09:57,180 Asta e datele efective că ține pe. 1591 01:09:57,180 --> 01:09:58,770 Asta e genul de partea util. 1592 01:09:58,770 --> 01:10:00,820 Și, asta este ceea ce face o listă legată, 1593 01:10:00,820 --> 01:10:03,690 are un pointer la nodul următor. 1594 01:10:03,690 --> 01:10:05,260 Întrebare minunat. 1595 01:10:05,260 --> 01:10:11,320 Bine, deci să ne uităm foarte uita-te repede la câteva exemple de ceea ce 1596 01:10:11,320 --> 01:10:12,820 am putea face cu liste legate. 1597 01:10:12,820 --> 01:10:16,920 >> Deci, un exemplu foarte rapid este, să presupunem că vrem să facem o căutare. 1598 01:10:16,920 --> 01:10:20,240 Ce fel de căutare nu poate facem pe listele legate? 1599 01:10:20,240 --> 01:10:21,150 >> Audiența: Binary. 1600 01:10:21,150 --> 01:10:21,900 >> SPEAKER 1: binar. 1601 01:10:21,900 --> 01:10:23,408 De ce nu putem folosi de căutare binară? 1602 01:10:23,408 --> 01:10:25,181 >> Audiența: [neauzit]. 1603 01:10:25,181 --> 01:10:28,180 SPEAKER 1: dreapta, deoarece cu binar căutare, a trebuit să se bazeze pe faptul 1604 01:10:28,180 --> 01:10:31,300 că am putea sări doar în matrice în orice moment. 1605 01:10:31,300 --> 01:10:33,420 Am putea spune doar, du-te la elementul din mijloc. 1606 01:10:33,420 --> 01:10:35,550 Cu aici, așa cum am spus un pic mai devreme, 1607 01:10:35,550 --> 01:10:37,270 nu putem sări doar pentru a elementul de mijloc. 1608 01:10:37,270 --> 01:10:38,978 În scopul de a găsi orice Element, am de fapt, 1609 01:10:38,978 --> 01:10:40,780 Trebuie să se plimbe prin toată lista noastră. 1610 01:10:40,780 --> 01:10:43,910 >> Deci, dacă am vrut să facem o de căutare, cel mai bun putem face este doar o căutare liniară. 1611 01:10:43,910 --> 01:10:45,910 Începem de la cap, am check-- să spunem că suntem 1612 01:10:45,910 --> 01:10:47,790 cauta 9-- vom începe de la cap. 1613 01:10:47,790 --> 01:10:49,200 Noi spunem, este aceasta 9? 1614 01:10:49,200 --> 01:10:49,710 Nu. 1615 01:10:49,710 --> 01:10:50,430 Este 9? 1616 01:10:50,430 --> 01:10:50,930 Nu. 1617 01:10:50,930 --> 01:10:51,620 Este 9? 1618 01:10:51,620 --> 01:10:53,730 Da, l-am găsit. 1619 01:10:53,730 --> 01:10:56,350 OK, asta e tot ce. 1620 01:10:56,350 --> 01:10:57,940 Aici e un pic de pseudo-cod. 1621 01:10:57,940 --> 01:11:01,420 Am de gând să plece acest lucru pentru tine voi să putinei peste pe cont propriu, 1622 01:11:01,420 --> 01:11:04,370 doar pentru că nu mai avem un pic scurt la timp. 1623 01:11:04,370 --> 01:11:05,610 >> Vă permite să vorbesc despre inserare. 1624 01:11:05,610 --> 01:11:08,644 Am văzut un demo foarte misto de acest lucru în curs în cazul în care am spus, 1625 01:11:08,644 --> 01:11:11,560 OK, avem această listă legată unde toată lumea arătând spre un altul, 1626 01:11:11,560 --> 01:11:13,400 și cineva vine pe scena. 1627 01:11:13,400 --> 01:11:17,050 Cum putem introduce ca persoană în lista noastră legată? 1628 01:11:17,050 --> 01:11:20,150 Ei bine, un mod greșit de a face, care este Cred că ceea ce am văzut în primul rând, 1629 01:11:20,150 --> 01:11:22,740 este atunci când persoana în în mod automat din față 1630 01:11:22,740 --> 01:11:25,270 a subliniat noul persoana. 1631 01:11:25,270 --> 01:11:29,057 Și apoi ne-am cam abandonat a doua jumătate a listei, nu? 1632 01:11:29,057 --> 01:11:31,390 Pentru că noi nu știm unde ea mai este în memorie. 1633 01:11:31,390 --> 01:11:34,750 Deci, să fie foarte atent cu privire la ordinea în care ne introduce lucruri. 1634 01:11:34,750 --> 01:11:37,860 >> Deci, aici, să spunem vrem să pune 1 la partea din față a lista noastră. 1635 01:11:37,860 --> 01:11:42,190 În primul rând, avem 1 punct la în al doilea rând element-- sau elementul 1636 01:11:42,190 --> 01:11:44,170 care conține 1. 1637 01:11:44,170 --> 01:11:47,210 Deci, vom face asta, doar ca nu suntem va pierde a doua jumătate. 1638 01:11:47,210 --> 01:11:51,020 Și acum, putem avea punctul cap la 1. 1639 01:11:51,020 --> 01:11:52,930 Deci, din nou, aceasta este doar ca nivel Super High. 1640 01:11:52,930 --> 01:11:55,290 Acesta este modul în care ne-ar introduce un nod. 1641 01:11:55,290 --> 01:11:57,337 Avem o mulțime de pseudo-cod here-- pare rău, 1642 01:11:57,337 --> 01:11:59,170 Nu știu de ce sunt numindu-l pseudo-cod. 1643 01:11:59,170 --> 01:12:00,350 E codul actual. 1644 01:12:00,350 --> 01:12:02,570 Puteți merge verifica-l mai târziu. 1645 01:12:02,570 --> 01:12:04,870 >> Bine, hai să foarte quickly-- alte întrebări 1646 01:12:04,870 --> 01:12:07,120 pe liste legate înainte de a mă muta pe un alt cuplu de date 1647 01:12:07,120 --> 01:12:08,450 structuri în ultimele noastre 10 minute. 1648 01:12:08,450 --> 01:12:10,340 >> Audiența: Avem nevoie acum cum să-l scrie pe un test? 1649 01:12:10,340 --> 01:12:11,040 >> SPEAKER 1: Nu avem nevoie să știm cum sa-- 1650 01:12:11,040 --> 01:12:12,030 >> Audiența: Scrie-l pe un test. 1651 01:12:12,030 --> 01:12:14,071 >> SPEAKER 1: Avem nevoie sa-- ar trebui să fie pregătit 1652 01:12:14,071 --> 01:12:18,870 pentru a scrie, se introduce, eliminați, și caută liste legate la testul. 1653 01:12:18,870 --> 01:12:21,480 Asta este ceva ce noi ar putea aștepta să faci. 1654 01:12:21,480 --> 01:12:22,750 Du-te peste el. 1655 01:12:22,750 --> 01:12:26,460 Dacă aveți orice întrebări cu privire la cod, trage TF dvs. un e-mail, 1656 01:12:26,460 --> 01:12:27,750 vin la ore de birou. 1657 01:12:27,750 --> 01:12:30,041 Există încă o mulțime de timp pentru a studia, pentru a nu vă faceți griji. 1658 01:12:30,041 --> 01:12:32,290 Bine, orice alta întrebări despre liste legate? 1659 01:12:32,290 --> 01:12:32,986 Da. 1660 01:12:32,986 --> 01:12:37,360 >> Audiența: Deci, dacă nu utilizați pointer pentru a merge la cel din dreapta 1661 01:12:37,360 --> 01:12:41,308 înainte de a utiliza indicatorul pentru cel din stânga, care este 1662 01:12:41,308 --> 01:12:43,211 echivalentul a șterge totul, nu? 1663 01:12:43,211 --> 01:12:43,877 SPEAKER 1: Da. 1664 01:12:43,877 --> 01:12:44,820 Audiența: [neauzit]. 1665 01:12:44,820 --> 01:12:47,570 SPEAKER 1: dreapta, din moment ce nu putem -l, este de fapt chiar mai rau. 1666 01:12:47,570 --> 01:12:50,690 Deoarece nu numai că nu știm în cazul în care este, nu mai putem folosi, 1667 01:12:50,690 --> 01:12:53,580 dar we've-- nu suntem eliberarea că memoria mai. 1668 01:12:53,580 --> 01:12:58,570 Deci, e doar agățat în jurul și nu fi util pentru că nu putem găsi. 1669 01:12:58,570 --> 01:12:59,580 Da, întrebarea rece. 1670 01:12:59,580 --> 01:13:01,280 >> Bine, hai sa vorbim despre stive. 1671 01:13:01,280 --> 01:13:03,230 Am văzut stive foarte repede. 1672 01:13:03,230 --> 01:13:06,280 Ei sunt prima dată în ultimul structuri de date din. 1673 01:13:06,280 --> 01:13:10,664 Deci, ne gândim la stive în Annenberg de tăvi unde stiva lucrurile pe partea de sus. 1674 01:13:10,664 --> 01:13:12,580 Și dacă ai de gând să vin obține o tavă, ești 1675 01:13:12,580 --> 01:13:15,870 întotdeauna o să ia cea de pe top, care este cel mai recently-- 1676 01:13:15,870 --> 01:13:18,840 care este lucrul care avem cea mai mare recent pus pe partea de sus a stivei. 1677 01:13:18,840 --> 01:13:22,680 Astfel încât să puteți fel de cred că de acest tip de vizual atunci când te gândești de stive. 1678 01:13:22,680 --> 01:13:26,010 Și apoi, mi-a venit ceva am pe partea de sus a stivei. 1679 01:13:26,010 --> 01:13:29,850 >> Dacă ne are-- oh, și cuvintele pe care le utilizați atunci când vorbim despre aceste date 1680 01:13:29,850 --> 01:13:32,680 structuri este de obicei, dacă am a pus ceva pe stiva, 1681 01:13:32,680 --> 01:13:34,550 ne spune că suntem o împinge pe stiva. 1682 01:13:34,550 --> 01:13:38,450 Și dacă luăm ceva de pe stivă, ne spune că suntem popping de pe stivă. 1683 01:13:38,450 --> 01:13:41,470 Dacă ai de gând să pună în aplicare o stack-- care eu cu siguranta 1684 01:13:41,470 --> 01:13:44,840 recomandăm să încercați out-- esti de gând să doriți pentru a urmări, 1685 01:13:44,840 --> 01:13:46,669 să presupunem că utilizați un tablou. 1686 01:13:46,669 --> 01:13:48,960 Știu că în curs am vorbit despre utilizarea atât tablouri 1687 01:13:48,960 --> 01:13:51,120 sau liste legate de punerea în aplicare a unei stive. 1688 01:13:51,120 --> 01:13:53,490 Dacă utilizați un matrice, aveți nevoie pentru a keep-- 1689 01:13:53,490 --> 01:13:56,750 scuză mine-- avem nevoie pentru a urmări de mărimea și capacitatea. 1690 01:13:56,750 --> 01:14:00,820 Deci numărul maxim că stiva noastră poate deține. 1691 01:14:00,820 --> 01:14:03,240 Întrebări cu privire la stive? 1692 01:14:03,240 --> 01:14:05,657 >> Audiența: Care este diferența între dimensiunea și capacitatea? 1693 01:14:05,657 --> 01:14:08,573 SPEAKER 1: Diferența dintre dimensiunea și capacitatea, întrebarea minunat. 1694 01:14:08,573 --> 01:14:10,330 Deci, să spunem că suntem folosind o matrice, iar noi 1695 01:14:10,330 --> 01:14:13,340 aloca suficient loc pentru 10 numere întregi. 1696 01:14:13,340 --> 01:14:15,050 Și vom începe să umple asta. 1697 01:14:15,050 --> 01:14:17,330 Și ne-am împinge lucrurile mai departe, și ne-am pop lucruri pe. 1698 01:14:17,330 --> 01:14:21,060 Vrem pentru a urmări maxim Numărul putem ține, asta e capacitatea. 1699 01:14:21,060 --> 01:14:24,790 Și vrem să păstreze evidența numărul curent, avem, asta e dimensiunea. 1700 01:14:24,790 --> 01:14:26,530 Buna intrebare. 1701 01:14:26,530 --> 01:14:28,720 Orice altceva pe stive? 1702 01:14:28,720 --> 01:14:31,260 Bine, hai să vorbim despre surpriza, cozi. 1703 01:14:31,260 --> 01:14:37,034 >> Spre deosebire de stive, care sunt pentru prima dată în ultimul out, acestea sunt în primul rând intrat, primul ieșit. 1704 01:14:37,034 --> 01:14:38,450 Deci, aceasta este like-- cred că o linie. 1705 01:14:38,450 --> 01:14:41,530 Gândiți-vă de garnitură de până la Apple Magazin pentru a obține orice produs. 1706 01:14:41,530 --> 01:14:44,540 Și prima persoană în linie ar trebui să fi prima persoana care a ajutat. 1707 01:14:44,540 --> 01:14:48,270 Deci primul lucru care a impins este acest primul lucru care mi-a venit a. 1708 01:14:48,270 --> 01:14:49,460 Misto? 1709 01:14:49,460 --> 01:14:52,890 Foarte similarly-- oh, cuvintele pe care vom folosi în loc de împingere și pop-- 1710 01:14:52,890 --> 01:14:55,060 care l-am folosit doar, Sunt sorry-- este spunem, 1711 01:14:55,060 --> 01:14:58,170 dacă ne pune ceva în coada, am spune că enqueued. 1712 01:14:58,170 --> 01:15:00,795 Dacă luăm ceva din coada, spunem noi dequeued. 1713 01:15:00,795 --> 01:15:01,950 Aceasta. 1714 01:15:01,950 --> 01:15:05,454 I se poate pronunța pe cei greșit, dar ai prins ideea. 1715 01:15:05,454 --> 01:15:08,370 Și apoi din nou, la fel ca stive, dacă suntem de punere în aplicare acest lucru ca matrice, 1716 01:15:08,370 --> 01:15:12,350 avem nevoie pentru a ține evidența mărimea, capacitatea, și capul. 1717 01:15:12,350 --> 01:15:13,570 Ce vreau să spun prin cap? 1718 01:15:13,570 --> 01:15:15,278 De ce avem nevoie pentru a păstra evidența cap? 1719 01:15:15,278 --> 01:15:18,549 1720 01:15:18,549 --> 01:15:21,685 >> Audiența: Pentru că este în cazul în care la începutul listei este. 1721 01:15:21,685 --> 01:15:24,810 SPEAKER 1: Da, de fapt capul este în cazul în care la începutul coada noastră este. 1722 01:15:24,810 --> 01:15:29,460 Pentru ca stim, spre deosebire de stive, which-- Am de gând să încerc să se confrunte cu această way-- 1723 01:15:29,460 --> 01:15:33,570 știm că este întotdeauna o să psihiatru în acest fel și să crească în acest fel. 1724 01:15:33,570 --> 01:15:37,840 Cozi, oamenii vin pe la sfârșitul și se lasă de la început, 1725 01:15:37,840 --> 01:15:40,620 așa că trebuie să țină evidența de unde la început este. 1726 01:15:40,620 --> 01:15:43,540 Asta e ceea ce vreau să spun prin avem nevoie pentru a urmări în cazul în care capul este. 1727 01:15:43,540 --> 01:15:45,190 Misto? 1728 01:15:45,190 --> 01:15:46,440 In regula. 1729 01:15:46,440 --> 01:15:49,250 Opt minute, cuplu mai multe topicuri, o putem face. 1730 01:15:49,250 --> 01:15:51,240 >> Bine, tabel hash. 1731 01:15:51,240 --> 01:15:53,095 Am vorbit foarte pe scurt despre tabele de dispersie. 1732 01:15:53,095 --> 01:15:55,720 Pentru testul, trebuie doar să să înțeleagă la un nivel ridicat. 1733 01:15:55,720 --> 01:15:58,330 Ideea de bază este ai aceste date. 1734 01:15:58,330 --> 01:16:02,570 Și vrem să-l acceseze, în momentul în care este mai repede decât ceva ca o legătură 1735 01:16:02,570 --> 01:16:03,070 listă. 1736 01:16:03,070 --> 01:16:05,290 Pentru că am spus, dacă ar fi căutarea printr-o listă legată, 1737 01:16:05,290 --> 01:16:06,248 care ar putea avea nevoie de timp N. 1738 01:16:06,248 --> 01:16:08,810 Chiar accesarea poate lua Timp N într-o listă legată. 1739 01:16:08,810 --> 01:16:12,930 Tabele de dispersie să ne dea un mod care putem acces la mai multe lucruri repede, și mai mult 1740 01:16:12,930 --> 01:16:16,970 căuta rapid lucruri, fără având restricțiile de o serie 1741 01:16:16,970 --> 01:16:19,030 în cazul în care ne-am stabilit dimensiuni. 1742 01:16:19,030 --> 01:16:23,950 >> Deci, ne gândim la o structură de date în cazul în care, în cazul în care ne-am pus-o în structura de date 1743 01:16:23,950 --> 01:16:26,620 este dependentă de această funcție hash magic. 1744 01:16:26,620 --> 01:16:30,630 Deci, în acest caz, hash magic Funcția este doar a lua un cuvânt, 1745 01:16:30,630 --> 01:16:34,027 verificarea ceea ce este prima literă, și atunci doar de sortare în ordine alfabetică. 1746 01:16:34,027 --> 01:16:36,110 Asa ca am pus, în esență, le- în diferite găleți. 1747 01:16:36,110 --> 01:16:39,510 Când vom vedea banane, spunem noi, OK, hai să pună în găleată B. 1748 01:16:39,510 --> 01:16:41,820 Când vom vedea Apple, hai pune-l în o găleată. 1749 01:16:41,820 --> 01:16:44,744 Dacă am văzut de caise, să a pus în o găleată. 1750 01:16:44,744 --> 01:16:45,600 OK? 1751 01:16:45,600 --> 01:16:51,090 >> Deci, să presupunem că am fost în căutarea for-- I Nu știu, ce e un alt fruct? 1752 01:16:51,090 --> 01:16:52,920 Să presupunem că am fost în căutarea pentru Orange. 1753 01:16:52,920 --> 01:16:55,340 În cazul în care ar trebui să mă uit? 1754 01:16:55,340 --> 01:16:56,420 În găleată O. 1755 01:16:56,420 --> 01:17:01,450 Da, există doar un singur loc că Orange ar fi, bine? 1756 01:17:01,450 --> 01:17:05,370 Așa că am spus mai devreme ce se intampla if-- bine am spus mai devreme, 1757 01:17:05,370 --> 01:17:10,030 să spunem că ne-am pus de caise in-- dar am aborda într-adevăr faptul că, oh nu, 1758 01:17:10,030 --> 01:17:14,990 dacă ar fi să pun boabe de, e O să intre în conflict cu banane. 1759 01:17:14,990 --> 01:17:20,160 În cazul în care am pus-o în cazul în care nu există deja ceva in masa noastră? 1760 01:17:20,160 --> 01:17:22,760 Ei bine, avem câteva opțiuni. 1761 01:17:22,760 --> 01:17:26,160 >> Numărul opțiune unul este liniar sondare, ceea ce înseamnă, practic, 1762 01:17:26,160 --> 01:17:28,690 Să spunem că doriți să încercați să pune Berry, și văd, oh nu, 1763 01:17:28,690 --> 01:17:31,170 banane deja acolo, Eu spun doar OK, hai 1764 01:17:31,170 --> 01:17:33,810 mă uit pentru următorul loc disponibil. 1765 01:17:33,810 --> 01:17:36,744 Așa că am mers în jos, eu spun, oh, nu e nimic în găleată D. 1766 01:17:36,744 --> 01:17:39,410 Nu mă pot gândi cu adevărat la orice fructe care încep cu litera D, 1767 01:17:39,410 --> 01:17:41,620 așa că am doar de gând să pună Berry acolo. 1768 01:17:41,620 --> 01:17:42,650 Durian. 1769 01:17:42,650 --> 01:17:44,590 OK, deci din moment ce nu e nimic acolo încă, 1770 01:17:44,590 --> 01:17:47,020 S-ar putea la fel de bine folosi doar că la fața locului. 1771 01:17:47,020 --> 01:17:48,805 Care este dezavantajul de asta? 1772 01:17:48,805 --> 01:17:49,300 >> Audiența: E în ordine. 1773 01:17:49,300 --> 01:17:50,008 >> SPEAKER 1: Ne pare rău? 1774 01:17:50,008 --> 01:17:51,280 Audiența: E în ordine. 1775 01:17:51,280 --> 01:17:53,113 >> SPEAKER 1: E out-- Bine, s-ar putea ajunge 1776 01:17:53,113 --> 01:17:56,380 cu lucruri care nu sunt in-- stocate în găleți în modul 1777 01:17:56,380 --> 01:17:57,790 care ne așteptăm să fie. 1778 01:17:57,790 --> 01:18:00,670 Deci, dacă am fost în căutarea pentru Berry, înainte de a ne-a declarat, 1779 01:18:00,670 --> 01:18:02,000 oh ne putem uita într-o găleată. 1780 01:18:02,000 --> 01:18:03,650 Ar putea fi într-o singură găleată. 1781 01:18:03,650 --> 01:18:07,380 Dar acum, într-adevăr, ar putea fi în toate galeti, nu? 1782 01:18:07,380 --> 01:18:10,400 >> OK, aici e altă opțiune, chaining-- separat 1783 01:18:10,400 --> 01:18:16,630 care este ideea că vom pentru a utiliza un pic mai târziu, în P set 5. 1784 01:18:16,630 --> 01:18:19,340 Mai degrabă decât doar au un spațiu în fiecare compartiment, 1785 01:18:19,340 --> 01:18:23,610 de ce nu ne-am fiecare compartiment fie un pointer la o listă legată? 1786 01:18:23,610 --> 01:18:28,570 În cazul în care spunem, OK, există o găleată pentru tot ceea ce incepe cu A. 1787 01:18:28,570 --> 01:18:31,990 Și nu doar va fi o legătură Listă de fructe care incep cu A. 1788 01:18:31,990 --> 01:18:36,240 Deci, dacă vom obține un nou fruct, să spunem am get-- noi avocado, avem mere, 1789 01:18:36,240 --> 01:18:39,530 să spunem ne caise, cum ne-ar pune pe lista? 1790 01:18:39,530 --> 01:18:43,330 Ei bine, ne-ar merge la cupă 0, și ne-am doar introduceți-l în lista noastră a placut, 1791 01:18:43,330 --> 01:18:45,320 simplu ca asta. 1792 01:18:45,320 --> 01:18:47,160 >> Acum am tot spun găleată. 1793 01:18:47,160 --> 01:18:49,470 Am putea pune în aplicare această într-un număr de moduri. 1794 01:18:49,470 --> 01:18:52,040 O modalitate tipic că acest un fel de imagine sugereaza, 1795 01:18:52,040 --> 01:18:55,580 este, poate, având o serie de pointeri la liste legate. 1796 01:18:55,580 --> 01:18:58,174 Asta e un fel putem punerea în aplicare a unui tabel hash. 1797 01:18:58,174 --> 01:19:01,090 Audiența: Ai nevoie de un alt Lista deoarece banane si fructe sunt în afara 1798 01:19:01,090 --> 01:19:01,591 de ordine? 1799 01:19:01,591 --> 01:19:03,298 SPEAKER 1: Ați need-- ah, ai 1800 01:19:03,298 --> 01:19:06,310 nevoie de un alt listă deoarece banana si fructe sunt în afara de ordine? 1801 01:19:06,310 --> 01:19:09,880 În acest caz, funcția noastră hash, care ne spune unde să pună lucrurile 1802 01:19:09,880 --> 01:19:11,647 nu-i pasă de-a doua scrisoare. 1803 01:19:11,647 --> 01:19:14,730 Ea nu-i pasa despre Alfabetizarea, ea îi pasă doar de prima literă. 1804 01:19:14,730 --> 01:19:15,672 Întrebare? 1805 01:19:15,672 --> 01:19:18,947 >> Audiența: Care este definiția pe care funcție, și ce nu-l arata ca? 1806 01:19:18,947 --> 01:19:19,780 SPEAKER 1: Ah, bun. 1807 01:19:19,780 --> 01:19:22,450 OK, așa că nu trebuie să vă faceți griji prea mult pentru acest test. 1808 01:19:22,450 --> 01:19:23,700 Așa că nu am pus în slide-uri. 1809 01:19:23,700 --> 01:19:26,320 Vom fi introduse să-l pentru a seta P 5. 1810 01:19:26,320 --> 01:19:31,520 Dar în esență, se spune, dat o element nou, în cazul în care ar trebui să spun? 1811 01:19:31,520 --> 01:19:35,450 Sau, să spunem că caut un element, în cazul în care s-ar putea să fie? 1812 01:19:35,450 --> 01:19:37,860 Da, marea întrebare. 1813 01:19:37,860 --> 01:19:40,870 >> OK, foarte repede, copaci și încearcă. 1814 01:19:40,870 --> 01:19:44,779 Deci, un copac este doar un fel de structură de date organizate. 1815 01:19:44,779 --> 01:19:47,820 Și vom vedea o mulțime de imagini care va face acest super-clar. 1816 01:19:47,820 --> 01:19:51,180 Și un trie, pe care am văzut-o în clasă, este un fel foarte special de copac 1817 01:19:51,180 --> 01:19:53,440 care, în esență, funcționează ca un tabel hash pe mai multe niveluri. 1818 01:19:53,440 --> 01:19:54,390 E super cool. 1819 01:19:54,390 --> 01:19:56,030 Vom vedea în doar o secundă. 1820 01:19:56,030 --> 01:19:57,821 Bine, deci haideți să vorbesc despre copaci primul. 1821 01:19:57,821 --> 01:20:01,040 Deci acest lucru este într-adevăr exemplu tipic de un copac, în cazul în care avem o ierarhie. 1822 01:20:01,040 --> 01:20:03,220 Veți vedea că unul este la foarte de sus, nu? 1823 01:20:03,220 --> 01:20:06,190 Și pot să spun că există top în mod clar o comanda pentru ca am 1824 01:20:06,190 --> 01:20:08,260 au aceste săgeți merge în jos. 1825 01:20:08,260 --> 01:20:11,740 Așa că, un lucru la partea de sus, Eu numesc asta nodul rădăcină. 1826 01:20:11,740 --> 01:20:13,080 Deci unul este nodul rădăcină. 1827 01:20:13,080 --> 01:20:17,330 Și lucrurile de la partea de jos, care nu au nimic să iasă de pe ei, 1828 01:20:17,330 --> 01:20:18,783 Eu spun acestea sunt nodurile frunză. 1829 01:20:18,783 --> 01:20:22,730 Deci 8,9 5, 6, 7, OK. 1830 01:20:22,730 --> 01:20:27,740 Și, de obicei, WE terminologie pot să spun este, o este părinte 3 lui. 1831 01:20:27,740 --> 01:20:30,740 Deci, este un lucru care vine o nivel deasupra ei, și puncte de la ea. 1832 01:20:30,740 --> 01:20:32,710 Și 3 este un copil. 1833 01:20:32,710 --> 01:20:34,505 Este lucrul pe care 1 puncte pentru a. 1834 01:20:34,505 --> 01:20:35,005 Întrebare? 1835 01:20:35,005 --> 01:20:36,414 >> Audiența: Poți să te întorci la diapozitivul anterior, te rog? 1836 01:20:36,414 --> 01:20:37,388 >> SPEAKER 1: Pot să mă întorc la diapozitivul anterior? 1837 01:20:37,388 --> 01:20:37,888 Sigur. 1838 01:20:37,888 --> 01:20:40,640 1839 01:20:40,640 --> 01:20:41,390 Întrebări cu privire la aceasta? 1840 01:20:41,390 --> 01:20:42,764 Sau ai vrut doar să se uite la ea? 1841 01:20:42,764 --> 01:20:44,650 Audiența: Eu doar nu am primit prin ea. 1842 01:20:44,650 --> 01:20:47,100 >> SPEAKER 1: OK, rece, da. 1843 01:20:47,100 --> 01:20:49,846 Acestea vor fi tot online, astfel nu vă faceți griji despre obținerea fiecare cuvânt. 1844 01:20:49,846 --> 01:20:51,720 Și în interesul timp, am de gând să meargă. 1845 01:20:51,720 --> 01:20:53,270 Este ok? 1846 01:20:53,270 --> 01:20:53,790 Incredibil. 1847 01:20:53,790 --> 01:20:55,720 Bine, in regula. 1848 01:20:55,720 --> 01:20:57,790 Deci, hai sa vorbim despre o kind-- foarte specifice 1849 01:20:57,790 --> 01:20:59,710 așa că avem aceste generală Structura de copaci, 1850 01:20:59,710 --> 01:21:02,876 care este doar ceva care ne permite la fel de rang lucruri ierarhic. 1851 01:21:02,876 --> 01:21:06,000 1852 01:21:06,000 --> 01:21:11,110 >> Arbori binari sunt lucruri în cazul în care fiecare nod are cel mult doi copii. 1853 01:21:11,110 --> 01:21:11,690 OK? 1854 01:21:11,690 --> 01:21:14,560 Și i-am spus, bine, pentru ca pare pentru a se potrivi această descriere. 1855 01:21:14,560 --> 01:21:16,830 I-am spus nod, nu un arbore binar de căutare. 1856 01:21:16,830 --> 01:21:19,720 Ce este un arbore binar de căutare? 1857 01:21:19,720 --> 01:21:20,440 E sortate. 1858 01:21:20,440 --> 01:21:22,890 Astfel încât să știți că, în un arbore binar de căutare, 1859 01:21:22,890 --> 01:21:26,580 totul la tree-- totul la nodurile stanga este mai mic, 1860 01:21:26,580 --> 01:21:28,830 și tot ceea ce a noduri drept este mai mare. 1861 01:21:28,830 --> 01:21:30,620 Deci, acest lucru nu este un arbore binar de căutare. 1862 01:21:30,620 --> 01:21:32,770 Acesta este doar un arbore binar. 1863 01:21:32,770 --> 01:21:35,910 Deci avem mare categorie de copaci, categoria ușor mai mici 1864 01:21:35,910 --> 01:21:40,106 de arbori binari, căutare de un-- arbori de căutare binară. 1865 01:21:40,106 --> 01:21:41,540 Misto? 1866 01:21:41,540 --> 01:21:44,410 In regula. 1867 01:21:44,410 --> 01:21:47,380 >> Și acum, cel mai distractiv de toate, ne-am încearcă noastre. 1868 01:21:47,380 --> 01:21:49,500 Voi văzut această imagine în curs? 1869 01:21:49,500 --> 01:21:51,790 Da, ar trebui să arate foarte familiar. 1870 01:21:51,790 --> 01:21:54,252 Să ne uităm la modul în care am putea punerea în aplicare a acestui fapt. 1871 01:21:54,252 --> 01:21:56,210 Sau de fapt, să vedem, nu care vin chiar până? 1872 01:21:56,210 --> 01:21:56,731 Nu. 1873 01:21:56,731 --> 01:21:59,480 Bine, nu avem chiar vă faceți griji despre chestiile nivel scăzut. 1874 01:21:59,480 --> 01:22:02,320 Vom avea o multime de timp pentru a aborda apoi P set 5. 1875 01:22:02,320 --> 01:22:05,780 Dar pentru moment, la nivel doar foarte mare, ne-am știu că acest lucru este ceea ce pare. 1876 01:22:05,780 --> 01:22:08,530 Am descris ca un fel de un tabel hash pe mai multe niveluri 1877 01:22:08,530 --> 01:22:12,264 where-- ce face acest magazin? 1878 01:22:12,264 --> 01:22:14,430 Aceasta stochează nume de oamenii de stiinta pe care le putem de fapt 1879 01:22:14,430 --> 01:22:20,690 uita-te prin doar un fel de a urma diferite tabele de dispersie jos, bine? 1880 01:22:20,690 --> 01:22:24,730 >> Și scopul este, în teorie, acestea oferă constantă de timp uite în sus. 1881 01:22:24,730 --> 01:22:29,630 Deci, dacă vreau pentru a verifica dacă, De exemplu, cine e someone-- 1882 01:22:29,630 --> 01:22:33,410 că Mandel în acest trie, aș putea foarte repede 1883 01:22:33,410 --> 01:22:36,260 în linear-- Îmi pare rău, în constantă de timp, dau seama 1884 01:22:36,260 --> 01:22:39,010 dacă este sau nu este în trie. 1885 01:22:39,010 --> 01:22:41,500 Dar un con, este uita-te la cât de mare este. 1886 01:22:41,500 --> 01:22:44,120 Nici măcar te stocarea că date mult, și este foarte mare. 1887 01:22:44,120 --> 01:22:47,950 Deci, o mare con este faptul că foloseste o cantitate mare de memorie. 1888 01:22:47,950 --> 01:22:48,746 Da. 1889 01:22:48,746 --> 01:22:50,610 >> Audiența: De ce nu-l oferă constantă de timp, mai exact? 1890 01:22:50,610 --> 01:22:51,376 >> SPEAKER 1: Încă o dată? 1891 01:22:51,376 --> 01:22:53,360 >> Audiența: Care este intuiția pentru ce ofera timp constant? 1892 01:22:53,360 --> 01:22:54,610 >> SPEAKER 1: Excelent întrebare. 1893 01:22:54,610 --> 01:22:56,030 De ce nu-l oferă timp constant? 1894 01:22:56,030 --> 01:22:59,280 Deci, ce putem face este, sa spune că sunteți în căutarea pentru Mandel. 1895 01:22:59,280 --> 01:23:02,830 Știm că vrem să înceapă în primul nivel la M. 1896 01:23:02,830 --> 01:23:06,890 Știm vrem să-l urmeze la E. Deci asta e să ia un pas, doi pași, nu? 1897 01:23:06,890 --> 01:23:10,710 Am urmați de N. Am urmat pentru D. Am urmați de E. Am urmat pentru L. 1898 01:23:10,710 --> 01:23:15,100 Și apoi următorul lucru vom verifica says-- acest delta spune Da, asta e 1899 01:23:15,100 --> 01:23:15,990 în tabelul nostru. 1900 01:23:15,990 --> 01:23:16,880 Acesta este un cuvânt. 1901 01:23:16,880 --> 01:23:19,900 Aceasta este o intrare valabilă în trie nostru. 1902 01:23:19,900 --> 01:23:22,450 Deci vrei să spui, OK, care a avut șapte pași. 1903 01:23:22,450 --> 01:23:27,200 Dar dacă am adaugat ca o catralioane mai oamenii de stiinta de la această structură de date, 1904 01:23:27,200 --> 01:23:29,470 nu am avea de a verifica o catralioane mai multe lucruri. 1905 01:23:29,470 --> 01:23:33,580 Vom doar vreodată de gând să trebuie să ia șapte pași, lungimea persoanei 1906 01:23:33,580 --> 01:23:35,260 nume. 1907 01:23:35,260 --> 01:23:39,350 >> Deci, ne place sa credem de rulare ca, presupunem 1908 01:23:39,350 --> 01:23:42,340 vom crește dimensiunea noastră structură de date, cât de mult mai mult 1909 01:23:42,340 --> 01:23:44,580 se merge să ia? 1910 01:23:44,580 --> 01:23:47,372 În acest caz, dacă adăugăm o mulțime mulți oameni de știință, nu contează. 1911 01:23:47,372 --> 01:23:49,413 Este încă de gând să ia aceeași cantitate de timp. 1912 01:23:49,413 --> 01:23:50,350 E timpul constant. 1913 01:23:50,350 --> 01:23:50,850 Da. 1914 01:23:50,850 --> 01:23:53,557 >> Audiența: Cum știu pentru a scana peste celelalte numere? 1915 01:23:53,557 --> 01:23:54,932 SPEAKER 1: Cum știu cât de sa-- 1916 01:23:54,932 --> 01:23:58,236 Audiența: Ca cum stii te duci direct de la M la E și să nu M la A? 1917 01:23:58,236 --> 01:23:59,069 SPEAKER 1: Oh, sigur. 1918 01:23:59,069 --> 01:24:01,620 Pentru că am știut că a fost cauta cuvântul Mandel, 1919 01:24:01,620 --> 01:24:04,195 și eu doar știu că e M-E. Deci that-- Da, dă-i drumul. 1920 01:24:04,195 --> 01:24:06,528 Audiența: Nu ar trebuie să se uite la celelalte litere 1921 01:24:06,528 --> 01:24:07,870 în restul [neauzit]? 1922 01:24:07,870 --> 01:24:10,020 >> SPEAKER 1: Ah, nu aș avea să se uite la the-- OK, mare. 1923 01:24:10,020 --> 01:24:10,790 Aceasta este o întrebare mare. 1924 01:24:10,790 --> 01:24:12,170 Depinde cum o pună în aplicare. 1925 01:24:12,170 --> 01:24:15,350 Dacă am pune în aplicare ca doar ca o serie de matrice 1926 01:24:15,350 --> 01:24:18,100 în cazul în care știm că E este întotdeauna la poziția 0, 1927 01:24:18,100 --> 01:24:21,270 Nu știu, orice Indicele număr este la. 1928 01:24:21,270 --> 01:24:24,901 Da, putem face doar constant timp, nu, nu, nu, nu. 1929 01:24:24,901 --> 01:24:25,400 Misto. 1930 01:24:25,400 --> 01:24:27,556 Întrebare acolo? 1931 01:24:27,556 --> 01:24:30,927 >> Audiența: Este timp constant același lucru ca și în timp real? 1932 01:24:30,927 --> 01:24:33,260 SPEAKER 1: Este timp constant același lucru este în timp real? 1933 01:24:33,260 --> 01:24:34,799 Nu sunt foarte sigur în timp real este. 1934 01:24:34,799 --> 01:24:36,965 Audiența: timp Ca și faptul că literalmente progreseaza de-al doilea 1935 01:24:36,965 --> 01:24:40,150 de-al doilea, spre deosebire de a fi o variabilă independentă. 1936 01:24:40,150 --> 01:24:42,960 >> SPEAKER 1: Oh, da, pot gândi în acest fel. 1937 01:24:42,960 --> 01:24:46,240 Cu alte cuvinte, nu este dependent de mărimea structurii datelor. 1938 01:24:46,240 --> 01:24:48,310 Asta e un mod de a gândi de ea. 1939 01:24:48,310 --> 01:24:50,510 Orice alte întrebări? 1940 01:24:50,510 --> 01:24:53,120 Poate in prima dată în istorie, am terminat la timp. 1941 01:24:53,120 --> 01:24:57,080 Dacă aveți orice întrebări, simt liberi să vină cere noi, du-te la secțiunea, 1942 01:24:57,080 --> 01:25:00,190 vorbesc cu dumneavoastră TFS, birou ore sunt 08:00 și 08:30 1943 01:25:00,190 --> 01:25:03,985 11:00 luni și marți, așa e un pic diferit de timp, 1944 01:25:03,985 --> 01:25:05,110 astfel încât asigurați-vă că rețineți că. 1945 01:25:05,110 --> 01:25:06,048 Da. 1946 01:25:06,048 --> 01:25:08,673 >> Audiența: Nu trebuie să știm chestii de genul argumente în linia de comandă, 1947 01:25:08,673 --> 01:25:10,360 ls linie, lovești orice? 1948 01:25:10,360 --> 01:25:11,840 >> SPEAKER 1: Linia de comandă argumente, și comenzi Linux, 1949 01:25:11,840 --> 01:25:13,010 da, trebuie să știți cele. 1950 01:25:13,010 --> 01:25:18,234 Very-- e ca un fel de nivel chestii am acoperit în secțiunea 0, 1951 01:25:18,234 --> 01:25:19,400 în măsura în care comenzi Linux du-te. 1952 01:25:19,400 --> 01:25:20,942 >> Audiența: Sunt de ore în Annenberg? 1953 01:25:20,942 --> 01:25:23,525 SPEAKER 1: ore de birou, nu sunt totalitate sigur unde sunt. 1954 01:25:23,525 --> 01:25:25,980 Dar puteți verifica site-ul, și vă va spune. 1955 01:25:25,980 --> 01:25:27,499