1 00:00:00,000 --> 00:00:03,269 >> [Speel van musiek] 2 00:00:03,269 --> 00:00:05,391 3 00:00:05,391 --> 00:00:06,640 CAMILLE REKHSON: Hi, almal. 4 00:00:06,640 --> 00:00:10,120 Welkom by die CS50 quiz zero hersiening sessie. 5 00:00:10,120 --> 00:00:10,770 Ek is Camille. 6 00:00:10,770 --> 00:00:13,140 En ek gaan om te gaan oor 'n paar onderwerpe met jou 7 00:00:13,140 --> 00:00:16,890 ouens vandag om jou te help voor te berei vir die toets. 8 00:00:16,890 --> 00:00:20,840 So hier is ons nie volledig lys van onderwerpe wat jy 9 00:00:20,840 --> 00:00:23,210 vertroud is met die quiz moet wees. 10 00:00:23,210 --> 00:00:25,740 Hierdie is direk geneem van die leerplan. 11 00:00:25,740 --> 00:00:26,990 Ek weet dit lyk soos 'n baie. 12 00:00:26,990 --> 00:00:30,870 Maar glo my, het jy al geleer hierdie dinge in die afgelope paar weke. 13 00:00:30,870 --> 00:00:33,210 >> So ons sal beslis gaan oor 'n groot deel van hierdie vandag. 14 00:00:33,210 --> 00:00:35,825 Maar ook 'n tyd neem op jou eie aan hierdie dinge te hersien. 15 00:00:35,825 --> 00:00:38,450 En as jy vertroud is met was nie wat sommige van hierdie dinge is, 16 00:00:38,450 --> 00:00:42,400 maak seker dat jy een van ons te vra. 17 00:00:42,400 --> 00:00:45,985 Ook vir die amptelike woord op die quiz, gaan na hierdie skakel. 18 00:00:45,985 --> 00:00:48,860 Dit sal al die inligting waarmee kamer wat jy nodig om in te gaan, 19 00:00:48,860 --> 00:00:52,960 verdeel alfabeties, en ook 'n paar wenke oor watter materiaal 20 00:00:52,960 --> 00:00:56,470 jy moet studeer, en watter soort van quiz vrae wat jy kan verwag. 21 00:00:56,470 --> 00:01:01,090 So maak seker dat jy check dat uit. 22 00:01:01,090 --> 00:01:03,810 >> Ook 'n paar wenke vir wanneer jy voor te berei vir die eksamen. 23 00:01:03,810 --> 00:01:05,730 Oefen kodering op papier. 24 00:01:05,730 --> 00:01:09,280 Ek weet jy het gekry wat gebruik word om met die IDE tjek vir jou foute vir jou, 25 00:01:09,280 --> 00:01:12,280 en it's-- wanneer jy tik dit op, dit is 'n bietjie anders as om 26 00:01:12,280 --> 00:01:13,113 om dinge uit te skryf. 27 00:01:13,113 --> 00:01:14,560 So oefen doen 'n paar kodering. 28 00:01:14,560 --> 00:01:17,910 'N paar goeie funksies uit te oefen doen is StrLen en atoi, 29 00:01:17,910 --> 00:01:20,450 sien as jy kan skryf diegene wat nie op jou eie. 30 00:01:20,450 --> 00:01:21,970 Vertroud te wees met die probleem stelle. 31 00:01:21,970 --> 00:01:24,200 Die meeste jaar is daar vrae wat verband hou 32 00:01:24,200 --> 00:01:25,700 sommige van die probleem stel materiaal. 33 00:01:25,700 --> 00:01:30,480 So maak seker dat jy verstaan hoe om al die probleem stelle te doen. 34 00:01:30,480 --> 00:01:35,240 >> Probeer 'n paar van die ou vasvrae doen onder die 75 minute tydsbeperking. 35 00:01:35,240 --> 00:01:37,290 Daar is baie van die vasvrae kan soort van lank wees. 36 00:01:37,290 --> 00:01:39,680 So dit is 'n goeie manier om te gee jouself 'n paar praktyk, 37 00:01:39,680 --> 00:01:41,650 en hoe lank dit sal neem jou, en hoe jy 38 00:01:41,650 --> 00:01:45,360 moet jou tyd te verdeel om seker te maak jy alles klaar teen die einde. 39 00:01:45,360 --> 00:01:49,690 En ook, 'n een bladsy te kry jou, twee ledig verwysing vel 40 00:01:49,690 --> 00:01:52,962 wat jy kan skryf alles wat jy wil op te gebruik tydens die quiz. 41 00:01:52,962 --> 00:01:54,670 So wanneer jy skep dat dit is ook 42 00:01:54,670 --> 00:01:57,860 werklik 'n groot manier om te studeer, want jy soort hersien dinge 43 00:01:57,860 --> 00:01:59,610 as jy dit te skryf. 44 00:01:59,610 --> 00:02:05,421 >> So 'n algemene vrae oor die quiz, of hoe dit werk? 45 00:02:05,421 --> 00:02:05,921 Ja. 46 00:02:05,921 --> 00:02:09,167 >> GEHOOR: Sal die lys van onderwerpe dat jy net gewys tot ons beskikking wees 47 00:02:09,167 --> 00:02:09,820 aanlyn? 48 00:02:09,820 --> 00:02:12,736 >> CAMILLE REKHSON: Hierdie hele slide show sal gepos word aan die webwerf. 49 00:02:12,736 --> 00:02:16,040 Ook die video van vandag se resensie sessie sal wees op die webwerf. 50 00:02:16,040 --> 00:02:19,250 So moenie te veel bekommer oor skryf dinge neer regdeur. 51 00:02:19,250 --> 00:02:20,437 Dit sal daar wees nie. 52 00:02:20,437 --> 00:02:21,270 Enige ander vrae? 53 00:02:21,270 --> 00:02:23,810 54 00:02:23,810 --> 00:02:26,960 OK, so laat ons begin. 55 00:02:26,960 --> 00:02:30,860 >> So een ding om vertroud is met is nie die verskillende tipes data en die grootte 56 00:02:30,860 --> 00:02:32,486 dat hulle op. 57 00:02:32,486 --> 00:02:35,360 Dit kan ook 'n groot ding om te wees skryf neer op jou verwysing vel, 58 00:02:35,360 --> 00:02:37,240 net om seker te maak jy Onthou al hierdie. 59 00:02:37,240 --> 00:02:39,200 But-- so karakters is 1 byte. 60 00:02:39,200 --> 00:02:40,700 SY is 4 grepe. 61 00:02:40,700 --> 00:02:44,450 'N lang, lang, wat is basies meer ruimte vir 'n heelgetal is, is 8 grepe. 62 00:02:44,450 --> 00:02:46,560 A float is 4 grepe. 63 00:02:46,560 --> 00:02:50,620 'N dubbel, wat basies gee jou meer ruimte om 'n float slaan, is 8 grepe. 64 00:02:50,620 --> 00:02:54,210 En dan is ook 'n wyser 8 grepe. 65 00:02:54,210 --> 00:02:56,270 Enige vrae oor hierdie? 66 00:02:56,270 --> 00:03:00,380 67 00:03:00,380 --> 00:03:05,580 >> So program is 'n ander onderwerp wat ons het bedek 'n bietjie hierdie semester. 68 00:03:05,580 --> 00:03:07,910 So laat doen 'n paar oefen met die omskakeling 69 00:03:07,910 --> 00:03:10,000 tussen die binêre en desimale. 70 00:03:10,000 --> 00:03:13,950 So iemand enige idee wat dat die eerste een wees? 71 00:03:13,950 --> 00:03:32,840 72 00:03:32,840 --> 00:03:34,860 Iemand? 73 00:03:34,860 --> 00:03:36,270 Ja, dit is 42. 74 00:03:36,270 --> 00:03:39,200 So as jy onthou, elke van die plekke in binêre 75 00:03:39,200 --> 00:03:41,860 is basies soos 2 aan bewind se plek. 76 00:03:41,860 --> 00:03:43,750 >> Sodat die eerste plek is 2 tot die 0 krag. 77 00:03:43,750 --> 00:03:46,710 En ons het 0 daar, so niks anders nie. 78 00:03:46,710 --> 00:03:48,700 Die volgende plek is 2 tot die eerste krag. 79 00:03:48,700 --> 00:03:51,220 En ons het 'n 1 daar so dit is basies 'n 2. 80 00:03:51,220 --> 00:03:53,642 Die volgende plek is 2 tot die tweede, wat is 4. 81 00:03:53,642 --> 00:03:54,850 Ons het niks daar te hê. 82 00:03:54,850 --> 00:03:59,390 Die volgende plek oor is 2 tot die derde, wat 8 sou wees. 83 00:03:59,390 --> 00:04:02,230 En ons het nie een daar. 84 00:04:02,230 --> 00:04:03,470 En ons hou. 85 00:04:03,470 --> 00:04:07,720 Dit last-- die verste van die gelaat een is waar ons 32. 86 00:04:07,720 --> 00:04:13,437 En so het ons basies 32 plus 8 plus 2 te kry 42. 87 00:04:13,437 --> 00:04:14,020 Enige vrae? 88 00:04:14,020 --> 00:04:15,820 >> GEHOOR: Wat is die onderskrif vir? 89 00:04:15,820 --> 00:04:17,399 >> CAMILLE REKHSON: Die onderskrif vertel ons basies dit binêre. 90 00:04:17,399 --> 00:04:18,230 So is daar 'n 2 daar. 91 00:04:18,230 --> 00:04:20,579 As daar in die volgende like-- een, of wanneer ons die omskakeling desimale 92 00:04:20,579 --> 00:04:24,350 binêre, daar is 'n 10 wys ons dat hierdie nommer is oorspronklik in desimaal. 93 00:04:24,350 --> 00:04:25,194 >> GEHOOR: Dankie. 94 00:04:25,194 --> 00:04:26,110 >> CAMILLE REKHSON: Ja. 95 00:04:26,110 --> 00:04:28,790 Enige ander vrae oor wat 'n mens? 96 00:04:28,790 --> 00:04:31,110 OK, so kom ons probeer die volgende een dan desimale binêre. 97 00:04:31,110 --> 00:04:35,034 So neem 50 en om dat binêre. 98 00:04:35,034 --> 00:04:35,950 Hoe sou jy dit doen? 99 00:04:35,950 --> 00:04:44,331 100 00:04:44,331 --> 00:04:45,317 Ja. 101 00:04:45,317 --> 00:04:49,754 >> GEHOOR: 110010. 102 00:04:49,754 --> 00:04:50,760 >> CAMILLE REKHSON: Ja. 103 00:04:50,760 --> 00:04:54,410 So one-- 'n maklike manier om te dink oor omskakeling van desimale binêre 104 00:04:54,410 --> 00:04:57,950 is aan- dikwels help om uit te skryf wat die verskillende magte van 2 is. 105 00:04:57,950 --> 00:05:01,460 En dan gaan deur dit, en sien Wat ook al die hoogste een van daardie 106 00:05:01,460 --> 00:05:05,320 is dat jy in kan sit om die desimale getal sonder om meer as dit. 107 00:05:05,320 --> 00:05:09,040 >> So in hierdie geval, een van die magte van 2 is 32. 108 00:05:09,040 --> 00:05:10,560 So 32 gaan in 50. 109 00:05:10,560 --> 00:05:14,100 Maar die volgende mag sou wees 64, wat natuurlik nie pas in 50. 110 00:05:14,100 --> 00:05:16,343 So het die hoogste ons het, is die 32. 111 00:05:16,343 --> 00:05:17,343 Die volgende een af ​​na 16. 112 00:05:17,343 --> 00:05:20,140 En 32 plus 16 is slegs 48. 113 00:05:20,140 --> 00:05:21,350 So wat nog pas in 50. 114 00:05:21,350 --> 00:05:22,722 So het ons 1 in beide van hulle. 115 00:05:22,722 --> 00:05:25,180 En dan as ons gaan sit, die enigste ding wat ons nodig gelaat 116 00:05:25,180 --> 00:05:27,510 is 2 meer te kry 48-50. 117 00:05:27,510 --> 00:05:31,860 So dan het ons 'n 1 in daardie posisie, en 'n 0 in die laaste posisie. 118 00:05:31,860 --> 00:05:35,371 Want daar is niks in die 2 tot die 0-ste plek. 119 00:05:35,371 --> 00:05:37,120 Vrae oor die omskakeling desimale binêre? 120 00:05:37,120 --> 00:05:40,830 121 00:05:40,830 --> 00:05:44,100 >> So nou laat ons probeer doen sommige binêre byvoeging. 122 00:05:44,100 --> 00:05:47,235 Hoe wanneer jy daardie twee optel? 123 00:05:47,235 --> 00:05:47,735 Ja. 124 00:05:47,735 --> 00:05:51,130 >> GEHOOR: 11.100. 125 00:05:51,130 --> 00:05:52,110 >> CAMILLE REKHSON: Ja. 126 00:05:52,110 --> 00:05:55,540 So doen toevoeging in binêre is redelik baie dieselfde as om dit te doen in desimaal. 127 00:05:55,540 --> 00:05:59,390 Behalwe as jy twee 1 se wese bymekaar getel, 1 plus 1 is 2, 128 00:05:59,390 --> 00:06:02,980 maar 2 in binêre is 1 0. 129 00:06:02,980 --> 00:06:07,090 So jy het om uit te voer die 1, en hou dra dit vir diegene paar kolomme. 130 00:06:07,090 --> 00:06:10,260 En behalwe dit, voeg net normaalweg. 131 00:06:10,260 --> 00:06:13,125 Enige vrae oor dit? 132 00:06:13,125 --> 00:06:13,625 Ja. 133 00:06:13,625 --> 00:06:16,487 >> GEHOOR: Jammer, wat is die laaste plek? 134 00:06:16,487 --> 00:06:18,475 Daar is ses nommers. 135 00:06:18,475 --> 00:06:23,260 So die linker kolom watter waarde is dit? 136 00:06:23,260 --> 00:06:24,760 CAMILLE REKHSON: Op hierdie onderste een? 137 00:06:24,760 --> 00:06:26,340 GEHOOR: Op die top een, vir 50. 138 00:06:26,340 --> 00:06:27,340 CAMILLE REKHSON: Vir 50? 139 00:06:27,340 --> 00:06:29,040 O, so die linker een is 32. 140 00:06:29,040 --> 00:06:29,760 >> GEHOOR: 32? 141 00:06:29,760 --> 00:06:36,770 >> CAMILLE REKHSON: Ja, so dit sou wees 32, 16, dan 8, 4, 2, 0-- of 1. 142 00:06:36,770 --> 00:06:39,380 Wel, dit is die 2 nulde, wat is 1. 143 00:06:39,380 --> 00:06:41,110 Ja. 144 00:06:41,110 --> 00:06:43,834 Enige ander vrae oor hierdie? 145 00:06:43,834 --> 00:06:47,420 OK, so dan moet ons gaan doen 'n bietjie met heksadesimale. 146 00:06:47,420 --> 00:06:49,570 So dit kan 'n bietjie minder bekende, 147 00:06:49,570 --> 00:06:51,680 want ek weet wat ons gedoen het 'n baie meer met binêre. 148 00:06:51,680 --> 00:06:54,050 Maar 'n baie goeie manier om dink oor heksadesimale 149 00:06:54,050 --> 00:06:57,540 is om te breek 'n binêre die nommer in 4 bietjie stukke. 150 00:06:57,540 --> 00:07:00,950 Want elke 4 stukkies van 'n binêre getal is basies 151 00:07:00,950 --> 00:07:04,560 een van die heksadesimale getalle. 152 00:07:04,560 --> 00:07:07,420 >> So as ons hierdie eerste een, ons het basies agt 1 se. 153 00:07:07,420 --> 00:07:08,620 So diegene kan verdeel up-- 154 00:07:08,620 --> 00:07:09,600 >> GEHOOR: 255. 155 00:07:09,600 --> 00:07:10,933 >> CAMILLE REKHSON: Sê dat weer. 156 00:07:10,933 --> 00:07:13,772 GEHOOR: 255 in desimale, of 0xFF in heksadesimaal. 157 00:07:13,772 --> 00:07:14,980 CAMILLE REKHSON: Ja, dit is. 158 00:07:14,980 --> 00:07:18,860 So, as jy verdeel wat tot in twee 4-bit stukke, 159 00:07:18,860 --> 00:07:20,950 ons het basies vier stelle van 1. 160 00:07:20,950 --> 00:07:22,880 Wat is die maximum-- basies die maksimum 161 00:07:22,880 --> 00:07:24,329 ons kan kry met 4-stukkies in binêre. 162 00:07:24,329 --> 00:07:27,120 En die maksimum wat ons kon kry wat in heksadesimaal sou 'n F. wees 163 00:07:27,120 --> 00:07:30,290 So sal ons twee F se. 164 00:07:30,290 --> 00:07:31,800 Enige vrae oor dit? 165 00:07:31,800 --> 00:07:32,490 Ja? 166 00:07:32,490 --> 00:07:35,184 >> GEHOOR: Kan jy dit herhaal. 167 00:07:35,184 --> 00:07:36,100 CAMILLE REKHSON: Natuurlik. 168 00:07:36,100 --> 00:07:39,160 So elk, basies, plek van heksadesimaal is 169 00:07:39,160 --> 00:07:42,570 gelykstaande aan die 4-stukkies van 'n binêre. 170 00:07:42,570 --> 00:07:46,830 So die maklikste manier om dit te doen, is om dit op te breek in 4-bit stukke. 171 00:07:46,830 --> 00:07:48,690 So in hierdie geval, het ons agt 1 se. 172 00:07:48,690 --> 00:07:51,010 So as ons verdeel die in twee 4-bit stukke, 173 00:07:51,010 --> 00:07:54,350 sou ons twee stelle vier 1 se. 174 00:07:54,350 --> 00:07:57,181 En elkeen van daardie is gelykstaande aan F. 175 00:07:57,181 --> 00:07:58,930 As jy dink about-- Ek weet ons brein is 176 00:07:58,930 --> 00:08:00,415 soort bedraad om te dink meer deur desimale, 177 00:08:00,415 --> 00:08:01,831 want dit is wat ons gewoond is. 178 00:08:01,831 --> 00:08:06,030 So een manier wat jy kan dink dat dit as die vier 1 se is gelyk aan 15 in desimaal. 179 00:08:06,030 --> 00:08:12,960 En 15 in heksadesimaal is F. So dit is 'n ander manier wat jy kan dink deur dit. 180 00:08:12,960 --> 00:08:13,459 Ja. 181 00:08:13,459 --> 00:08:14,790 >> GEHOOR: Wat is die 0x vir? 182 00:08:14,790 --> 00:08:18,240 >> CAMILLE REKHSON: Die 0x dui dat dit heksadesimale. 183 00:08:18,240 --> 00:08:21,900 So ons sit net dat voorvoegsel daar gewoonlik. 184 00:08:21,900 --> 00:08:24,396 Ander vrae oor daardie. 185 00:08:24,396 --> 00:08:27,100 OK, so kom ons probeer gaan die ander kant dan. 186 00:08:27,100 --> 00:08:28,712 In hierdie geval have-- ons jammer? 187 00:08:28,712 --> 00:08:29,628 GEHOOR: [onhoorbaar]. 188 00:08:29,628 --> 00:08:32,095 189 00:08:32,095 --> 00:08:33,720 CAMILLE REKHSON: Ons gaan binêre. 190 00:08:33,720 --> 00:08:36,039 So, gaan die ander kant. 191 00:08:36,039 --> 00:08:42,090 Maar in hierdie geval, ons het 5 en A. So as ons dink oor hierdie, 192 00:08:42,090 --> 00:08:46,260 As elkeen van die 5 those-- en die A is beide gaan 'n 4-bit stuk verteenwoordig, 193 00:08:46,260 --> 00:08:49,003 hoe sou jy sê 5 in binêre? 194 00:08:49,003 --> 00:08:51,120 >> GEHOOR: 0101. 195 00:08:51,120 --> 00:08:53,100 >> CAMILLE REKHSON: Ja, So wat is die 0101 deel. 196 00:08:53,100 --> 00:08:55,250 En dan hoe sou jy sê 'n in-- 197 00:08:55,250 --> 00:08:56,910 >> GEHOOR: 10. 198 00:08:56,910 --> 00:08:58,243 CAMILLE REKHSON: Sê it-- jammer? 199 00:08:58,243 --> 00:08:58,990 GEHOOR: 10. 200 00:08:58,990 --> 00:09:02,052 CAMILLE REKHSON: Ja, so dit is die tweede deel van dit. 201 00:09:02,052 --> 00:09:04,010 En dan, as jy sit daardie twee saam, dis 202 00:09:04,010 --> 00:09:06,440 hoe jy die volle binêre vir die heksadesimale. 203 00:09:06,440 --> 00:09:06,940 Ja? 204 00:09:06,940 --> 00:09:10,620 >> GEHOOR: Om te weet dat A 1010, het jy om dit te memoriseer? 205 00:09:10,620 --> 00:09:12,460 Of kan jy like-- 206 00:09:12,460 --> 00:09:14,380 >> CAMILLE REKHSON: So as you-- die differe-- so 207 00:09:14,380 --> 00:09:16,790 wanneer jy gaan deur binêre, basies binêre 208 00:09:16,790 --> 00:09:20,550 het 0 tot 9 en dan 'n deur F as sy 16 dinge. 209 00:09:20,550 --> 00:09:25,420 So as al die pad tot 0 9-- as you-- 9 en dan A, basies 210 00:09:25,420 --> 00:09:29,640 as ons omskep dit desimaal, A sou wees soos 10, sou B wees soos 11. 211 00:09:29,640 --> 00:09:35,616 En as jy dink oor die binêre 1010 is 8 en 2, 212 00:09:35,616 --> 00:09:37,990 want dit is die twee plekke wat optel tot 10, wat 213 00:09:37,990 --> 00:09:41,820 is presies wat 'n gelykstaande is aan. 214 00:09:41,820 --> 00:09:45,114 So dit is soort van 'n eenvoudige manier om te dink oor dit. 215 00:09:45,114 --> 00:09:46,405 Ander vrae oor heksadesimale. 216 00:09:46,405 --> 00:09:50,510 217 00:09:50,510 --> 00:09:56,870 >> OK, so nou is ons gaan neem 'n blik op bis operateurs. 218 00:09:56,870 --> 00:09:58,882 So dit kan beslis kom op die quiz. 219 00:09:58,882 --> 00:10:00,590 Ek weet ons het nie saam met hulle 'n baie. 220 00:10:00,590 --> 00:10:02,756 Maar ons is maar net gaan om te doen 'n bietjie hersiening van hierdie. 221 00:10:02,756 --> 00:10:05,490 So hopelik dit sal 'n bietjie meer bekend aan jou. 222 00:10:05,490 --> 00:10:10,220 So het die ses bis operateurs dat ons hier gelys. 223 00:10:10,220 --> 00:10:13,340 En hulle ons laat manipuleer individuele stukkies. 224 00:10:13,340 --> 00:10:16,676 So die EN operateur is 'n enkele ampersand. 225 00:10:16,676 --> 00:10:18,550 Verwar nie dat ons met die dubbele ampersand, 226 00:10:18,550 --> 00:10:21,840 wat is die logiese EN dat laat ons twee dinge met mekaar vergelyk. 227 00:10:21,840 --> 00:10:25,860 >> Die enkel-en hoe ons kan dinge bis manipuleer. 228 00:10:25,860 --> 00:10:29,910 So dit gee ons die resultaat van 1 indien beide van die argumente wat ons vergelyk 229 00:10:29,910 --> 00:10:32,440 is die same-- of 1. 230 00:10:32,440 --> 00:10:39,370 En die vertikale bar, OR, gee ons 1 indien minstens een van hulle is 1. 231 00:10:39,370 --> 00:10:41,460 So basies presies wat die woorde impliseer. 232 00:10:41,460 --> 00:10:46,640 En as die twee stukkies is 1, 1 en 1 gee vir ons 1. 233 00:10:46,640 --> 00:10:51,769 Maar met die OR, as dit 0 of 1 of 1 of 1, in beide gevalle, 234 00:10:51,769 --> 00:10:53,060 Ons het 1 as een van hulle. 235 00:10:53,060 --> 00:10:54,101 So dan sou ons 'n 1 te kry. 236 00:10:54,101 --> 00:10:56,320 GEHOOR: Wat bedoel jy wat dit sê dit gee 1? 237 00:10:56,320 --> 00:10:58,236 >> CAMILLE REKHSON: Die gevolg. Soort, soos jy 238 00:10:58,236 --> 00:11:05,060 would-- as jy het 0 en 1, die gevolg van dit sou 1-- of 0 wees 239 00:11:05,060 --> 00:11:08,920 en 1 met die uitslag van dit sou wees 0, jammer. 240 00:11:08,920 --> 00:11:12,190 Ja, dit was soort van die gevolg van die uitdrukking. 241 00:11:12,190 --> 00:11:16,520 En dan, hierdie kappie simbool is die XOR, of eksklusiewe OF. 242 00:11:16,520 --> 00:11:21,920 So dit beteken uitsluitlik een of presies een van die twee argumente is gelyk aan 1. 243 00:11:21,920 --> 00:11:24,210 En dan sou dit gee jou 1. 244 00:11:24,210 --> 00:11:27,370 >> Die klein kronkel lyn is die NIE operateur. 245 00:11:27,370 --> 00:11:31,940 So anders as die res van hulle, wat werk op 'n paar van die stukkies, 246 00:11:31,940 --> 00:11:34,930 die NIE operateur neem slegs 'n bietjie, en dit sal draai. 247 00:11:34,930 --> 00:11:37,640 So as jy give-- as jy NIE 0, sou dit gee jou 1. 248 00:11:37,640 --> 00:11:40,248 En as jy nie 1, dit sal jy gee 0. 249 00:11:40,248 --> 00:11:40,748 Ja? 250 00:11:40,748 --> 00:11:41,150 >> GEHOOR: Wat is die verskil tussen die OR met 'n lyn 251 00:11:41,150 --> 00:11:41,983 en die OR met twee? 252 00:11:41,983 --> 00:11:44,430 253 00:11:44,430 --> 00:11:46,930 CAMILLE REKHSON: So het die OR met twee lyne is die logiese OR. 254 00:11:46,930 --> 00:11:52,430 So dit is vir die vergelyking twee volle heelgetalle, of two-- 255 00:11:52,430 --> 00:11:53,730 om te sien of dinge gelyk. 256 00:11:53,730 --> 00:11:58,340 Of soos om dit te doen, is gelyk aan die, Of is gelyk aan dié soort ding. 257 00:11:58,340 --> 00:12:04,090 Terwyl die enkele bar OF, is om dit te doen dinge bis. 258 00:12:04,090 --> 00:12:04,590 Ja. 259 00:12:04,590 --> 00:12:06,680 >> GEHOOR: Wat bedoel jy deur bis? 260 00:12:06,680 --> 00:12:10,330 >> CAMILLE REKHSON: So bis werk direk met die stukkies in binêre. 261 00:12:10,330 --> 00:12:11,596 >> GEHOOR: O, ek sien. 262 00:12:11,596 --> 00:12:15,000 >> CAMILLE REKHSON: Ja, so werk met 0 en 1 se. 263 00:12:15,000 --> 00:12:18,310 Ons sal 'n paar voorbeelde van dit te doen na, net so is dit nie te verwarrend. 264 00:12:18,310 --> 00:12:20,970 En dan die laaste twee is die links skuif en die reg skof. 265 00:12:20,970 --> 00:12:23,970 Wat is basies twee minder as tekens of twee groter as tekens. 266 00:12:23,970 --> 00:12:26,294 En hulle verskuif na bietjie die gegewe aantal plekke 267 00:12:26,294 --> 00:12:27,710 dat jy dit gee in die rigting. 268 00:12:27,710 --> 00:12:29,980 So sou dit óf skuif dit aan die linkerkant, of na regs. 269 00:12:29,980 --> 00:12:30,480 Ja? 270 00:12:30,480 --> 00:12:32,470 GEHOOR: Wat is die sintaksis vir hardloop? 271 00:12:32,470 --> 00:12:33,950 >> CAMILLE REKHSON: Ons gaan gaan deur 'n voorbeeld in 'n tweede. 272 00:12:33,950 --> 00:12:35,680 So hopelik wat sal help. 273 00:12:35,680 --> 00:12:41,060 Enige vrae oor net wat is hier, before-- OK. 274 00:12:41,060 --> 00:12:43,821 So gaan deur 'n paar voorbeelde. 275 00:12:43,821 --> 00:12:45,070 Kom ons begin met die EN kinders. 276 00:12:45,070 --> 00:12:47,880 Wat sou ons as ons gedoen het 0 en 1? 277 00:12:47,880 --> 00:12:48,899 >> GEHOOR: 0. 278 00:12:48,899 --> 00:12:50,690 CAMILLE REKHSON: OK, en as ons gedoen het 1 EN 1? 279 00:12:50,690 --> 00:12:51,622 GEHOOR: 1. 280 00:12:51,622 --> 00:12:54,490 CAMILLE REKHSON: Ja, wat as ons het 0 OF een? 281 00:12:54,490 --> 00:12:55,094 GEHOOR: 1. 282 00:12:55,094 --> 00:12:56,510 CAMILLE REKHSON: Hoe gaan 1 OF 1? 283 00:12:56,510 --> 00:12:57,404 GEHOOR: 1. 284 00:12:57,404 --> 00:13:00,410 CAMILLE REKHSON: OK, hoe oor 0 XOR 1? 285 00:13:00,410 --> 00:13:01,380 GEHOOR: 1. 286 00:13:01,380 --> 00:13:03,120 CAMILLE REKHSON: En 1 XOR 1? 287 00:13:03,120 --> 00:13:03,902 GEHOOR: 0. 288 00:13:03,902 --> 00:13:05,360 CAMILLE REKHSON: Julle is goed. 289 00:13:05,360 --> 00:13:06,510 Hoe gaan NIE 0? 290 00:13:06,510 --> 00:13:07,265 >> GEHOOR: 1. 291 00:13:07,265 --> 00:13:08,390 CAMILLE REKHSON en nie 1? 292 00:13:08,390 --> 00:13:09,602 GEHOOR: 0. 293 00:13:09,602 --> 00:13:12,810 CAMILLE REKHSON: OK, en dan is dit die laaste een is 'n bietjie een met die verskuiwing. 294 00:13:12,810 --> 00:13:18,700 So as ons aanvanklik x om 8, en dan is y x na links geskuif 3, 295 00:13:18,700 --> 00:13:19,760 wat sal dit gee ons? 296 00:13:19,760 --> 00:13:20,676 >> GEHOOR: [onhoorbaar]. 297 00:13:20,676 --> 00:13:22,817 298 00:13:22,817 --> 00:13:24,150 CAMILLE REKHSON: Sê dat weer. 299 00:13:24,150 --> 00:13:26,740 GEHOOR: [onhoorbaar]. 300 00:13:26,740 --> 00:13:28,766 CAMILLE REKHSON: So, hierdie eintlik gee ons 64. 301 00:13:28,766 --> 00:13:29,876 GEHOOR: [onhoorbaar]. 302 00:13:29,876 --> 00:13:32,250 CAMILLE REKHSON: So is ek net gaan hierdie hier skryf, 303 00:13:32,250 --> 00:13:34,700 so dit maak 'n bietjie van sin. 304 00:13:34,700 --> 00:13:45,120 As ons 2 die 0, 2 by die 1, 2 om die 2, 2-3 gaan wees 8. 305 00:13:45,120 --> 00:13:52,380 En as ons dit wil skuif 3 meer stukkies aan die linkerkant, sal dit wees om die 2 4, 306 00:13:52,380 --> 00:13:57,270 2 om die 5 en 2 om die 6 en 2 om die 6 is 64. 307 00:13:57,270 --> 00:13:59,920 308 00:13:59,920 --> 00:14:01,110 Doen dit maak sin? 309 00:14:01,110 --> 00:14:05,291 310 00:14:05,291 --> 00:14:05,791 Ja. 311 00:14:05,791 --> 00:14:08,725 >> GEHOOR: Is dit al die verskuiwing 1 se en 0 se van die binêre getal te the-- 312 00:14:08,725 --> 00:14:09,600 >> CAMILLE REKHSON: Ja. 313 00:14:09,600 --> 00:14:12,150 314 00:14:12,150 --> 00:14:15,170 En jy sal nie hoef te bekommer oor die quiz oor hierdie negatief. 315 00:14:15,170 --> 00:14:19,510 Ons sal nie maak dat jy gaan met negatiewe verskuiwings in enige manier. 316 00:14:19,510 --> 00:14:24,070 Enige ander vrae oor hierdie? 317 00:14:24,070 --> 00:14:24,570 Ja. 318 00:14:24,570 --> 00:14:30,570 >> GEHOOR: As dit verskuif na regs, is iets wat niks wasn't-- dat 319 00:14:30,570 --> 00:14:33,220 was nie oorspronklik deel van die ding 0? 320 00:14:33,220 --> 00:14:37,110 >> CAMILLE REKHSON: Ja, sou jy voeg net 0 se in die oorspronklike. 321 00:14:37,110 --> 00:14:38,110 Ja. 322 00:14:38,110 --> 00:14:41,540 >> GEHOOR: So wat is dit 100 verskuif na die regte drie keer? 323 00:14:41,540 --> 00:14:43,290 CAMILLE REKHSON: 100 verskuif na regs, 324 00:14:43,290 --> 00:14:46,057 sodat sou al die neem 1 en 0 en hulle net verskuif 325 00:14:46,057 --> 00:14:48,515 om die regte soveel keer as jy skuif na regs. 326 00:14:48,515 --> 00:14:50,452 >> GEHOOR: [onhoorbaar]? 327 00:14:50,452 --> 00:14:53,160 CAMILLE REKHSON: Wel, 100-- is praat jy 100 in binêre, 328 00:14:53,160 --> 00:14:53,910 of 100 in desimale? 329 00:14:53,910 --> 00:14:55,750 GEHOOR: Ek is jammer, 100 in binêre. 330 00:14:55,750 --> 00:14:58,916 >> CAMILLE REKHSON: 100 in binêre, as jy dit verskuif na die right-- 331 00:14:58,916 --> 00:15:01,040 as jy na regs skuif een keer, sou dit 10 geword. 332 00:15:01,040 --> 00:15:04,430 As jy dit na regs skuif twee keer, sou dit 001 geword. 333 00:15:04,430 --> 00:15:07,590 En dan as jy dit verskuif weer jy soort van verloor die bietjie. 334 00:15:07,590 --> 00:15:09,610 Ja, dit is net 0. 335 00:15:09,610 --> 00:15:12,140 Enige ander vrae oor hierdie? 336 00:15:12,140 --> 00:15:12,835 Ja. 337 00:15:12,835 --> 00:15:14,695 >> GEHOOR: So dan word dit 000. 338 00:15:14,695 --> 00:15:17,020 >> CAMILLE REKHSON: Ja. 339 00:15:17,020 --> 00:15:22,150 OK, so laat ons gaan deur 'n bietjie van ASCII wiskunde. 340 00:15:22,150 --> 00:15:25,120 So karakters kan in wese behandel word as heelgetalle 341 00:15:25,120 --> 00:15:28,290 gebaseer op hul ASCII waardes. 342 00:15:28,290 --> 00:15:35,250 So as ons sit int A gelyk 65, int B gelyk aan 'n plus 1, int char C is gelyk aan 343 00:15:35,250 --> 00:15:39,565 D minus 1 en char D gelyk 68, wat sou uit te druk op die bodem? 344 00:15:39,565 --> 00:15:46,150 345 00:15:46,150 --> 00:15:49,720 >> So, ons druk these-- seën you-- ons 346 00:15:49,720 --> 00:15:53,520 druk hulle almal uit as karakters gebaseer op die persent C. 347 00:15:53,520 --> 00:15:56,320 So ons basies uit te druk die karakter waarde van al vier 348 00:15:56,320 --> 00:15:58,600 van hierdie veranderlikes. 349 00:15:58,600 --> 00:16:04,280 As 'n wenk, 65 is die ASCII-waarde van kapitaal A. Miskien wat gehelp. 350 00:16:04,280 --> 00:16:04,780 Wat? 351 00:16:04,780 --> 00:16:05,530 >> GEHOOR: ABCD. 352 00:16:05,530 --> 00:16:07,780 >> CAMILLE REKHSON: Ja, so dit sou presies uit te druk 353 00:16:07,780 --> 00:16:10,290 ABCD omdat ons 'n int gelyk aan die waarde van A. ASCII 354 00:16:10,290 --> 00:16:13,085 So as ons druk wat as 'n karakter, ons kry net kapitaal A, 355 00:16:13,085 --> 00:16:15,540 A plus 1 sou 'n kapitale B in ASCII wees. 356 00:16:15,540 --> 00:16:19,260 D minus 1 sou 'n kapitale C in ASCII wees. 357 00:16:19,260 --> 00:16:25,185 En 68 is die ASCII-waarde van D. Vrae oor ASCII? 358 00:16:25,185 --> 00:16:25,685 Ja. 359 00:16:25,685 --> 00:16:31,370 >> GEHOOR: So, die aanhalingstekens rondom A, doen dat verandering A tot die ASCII? 360 00:16:31,370 --> 00:16:34,456 >> CAMILLE REKHSON: Dit uses-- dit count-- aanhalingstekens rondom die A 361 00:16:34,456 --> 00:16:35,330 maak dit 'n karakter. 362 00:16:35,330 --> 00:16:37,600 En as jy met dit in die aantal form-- 363 00:16:37,600 --> 00:16:40,320 sodat wanneer, soos in hierdie geval, dit is gehanteer as 'n int-- 364 00:16:40,320 --> 00:16:44,664 dan sou dit hanteer met sy ASCII-waarde. 365 00:16:44,664 --> 00:16:45,164 Ja. 366 00:16:45,164 --> 00:16:50,060 >> GEHOOR: Het jy aanbeveel dat ons het 'n ASCII verwysing tafel? 367 00:16:50,060 --> 00:16:51,900 >> CAMILLE REKHSON: Ek het nie think-- 368 00:16:51,900 --> 00:16:54,720 >> GEHOOR: Of sou dit net word die hantering van hierdie? 369 00:16:54,720 --> 00:16:56,210 >> CAMILLE REKHSON: Ek dink ons sou dit te doen met 'n maklike dinge. 370 00:16:56,210 --> 00:16:58,168 Ek dink nie dit sou seer om dalk neer te skryf 371 00:16:58,168 --> 00:17:02,653 wat kapitaal A en A klein is, net wat daardie reekse is begin met. 372 00:17:02,653 --> 00:17:05,819 Maar ek dink nie jy moet alles neem die ruimte om 'n hele ASCII tafel. 373 00:17:05,819 --> 00:17:06,803 Ja. 374 00:17:06,803 --> 00:17:09,755 >> GEHOOR: Wat is die verskil tussen sê int A en char C, 375 00:17:09,755 --> 00:17:12,720 soos jy doen by die top? 376 00:17:12,720 --> 00:17:17,380 >> CAMILLE REKHSON: So dit is net hoe dit gestoor in die geheue. 377 00:17:17,380 --> 00:17:20,010 Maar jy kan dit óf manier te behandel. 378 00:17:20,010 --> 00:17:23,274 Soos ons hier sien, druk ons ​​doen uit die A as 'n karakter. 379 00:17:23,274 --> 00:17:24,690 GEHOOR: So dit is dieselfde as 'n? 380 00:17:24,690 --> 00:17:25,606 CAMILLE REKHSON: Ja. 381 00:17:25,606 --> 00:17:28,030 382 00:17:28,030 --> 00:17:29,537 Enige ander vrae? 383 00:17:29,537 --> 00:17:32,022 >> GEHOOR: So, persent C sê druk van 'n kar? 384 00:17:32,022 --> 00:17:33,016 >> CAMILLE REKHSON: Ja. 385 00:17:33,016 --> 00:17:35,501 >> GEHOOR: So selfs as 'n net gedefinieer as 'n heelgetal, 386 00:17:35,501 --> 00:17:37,569 As ons probeer om 'n druk char as 65, is dit would-- 387 00:17:37,569 --> 00:17:40,110 CAMILLE REKHSON: Dit gaan om gaan basies om ASCII grafiek 388 00:17:40,110 --> 00:17:42,990 en kry alles karakters in die ASCII grafiek vir daardie 65. 389 00:17:42,990 --> 00:17:43,840 >> GEHOOR: Dankie. 390 00:17:43,840 --> 00:17:44,756 >> CAMILLE REKHSON: Ja. 391 00:17:44,756 --> 00:17:45,445 Ja? 392 00:17:45,445 --> 00:17:50,620 >> GEHOOR: So as jy het% I,% I, % I,% i, sou dit net print-- 393 00:17:50,620 --> 00:17:52,620 CAMILLE REKHSON: Ja, as jy het al 4% Ek se dit 394 00:17:52,620 --> 00:17:57,170 sou die ASCII druk waardes van al vier van hulle nie. 395 00:17:57,170 --> 00:17:59,483 Enige ander vrae? 396 00:17:59,483 --> 00:18:06,310 OK, so omvang, basies hierdie help ons bepaal waar 397 00:18:06,310 --> 00:18:08,450 'n veranderlike bestaan ​​in jou program. 398 00:18:08,450 --> 00:18:11,910 Dus het ons gepraat oor twee verskillende tipes omvang, globale en plaaslike. 399 00:18:11,910 --> 00:18:14,560 >> As 'n veranderlike wêreldwyd scoped, beteken dit dat jou hele program 400 00:18:14,560 --> 00:18:16,292 het toegang tot daardie veranderlike. 401 00:18:16,292 --> 00:18:18,000 En as jy wêreldwyd omvang 'n veranderlike, jy 402 00:18:18,000 --> 00:18:19,510 verklaar dat dit voor julle hoof funksie. 403 00:18:19,510 --> 00:18:20,830 So dit gedoen regs af die vlermuis. 404 00:18:20,830 --> 00:18:22,950 En dan jou hele program kan toegang tot dit. 405 00:18:22,950 --> 00:18:26,070 >> As dit is net plaaslik scoped dat veranderlike beperk tot 'n spesifieke gebied. 406 00:18:26,070 --> 00:18:29,705 So as jy verklaar binne 'n lus, net dat lus dit kan oopmaak. 407 00:18:29,705 --> 00:18:31,580 Of as jy verklaar binne 'n spesifieke funksie, 408 00:18:31,580 --> 00:18:34,940 net daardie funksie kan toegang tot dit. 409 00:18:34,940 --> 00:18:38,265 Vrae oor omvang. 410 00:18:38,265 --> 00:18:41,570 >> OK, so funksie prototyping. 411 00:18:41,570 --> 00:18:45,360 Basies omdat C, wanneer dit stel, lui top-down. 412 00:18:45,360 --> 00:18:48,800 As jy 'n funksie te verklaar laat in jou kode, 413 00:18:48,800 --> 00:18:51,670 samesteller weet nie dat daardie funksie bestaan. 414 00:18:51,670 --> 00:18:55,690 So, wat ons gebruik is prototipes, wat basies vertel die samesteller, 415 00:18:55,690 --> 00:18:58,710 Hierdie funksie kom, gaan kyk want dit later in die kode. 416 00:18:58,710 --> 00:19:00,900 So die manier wat jy doen 'n funksie prototipe 417 00:19:00,900 --> 00:19:03,020 is presies hoe jy begin af te skryf 'n funksie. 418 00:19:03,020 --> 00:19:05,310 Gee jou die soort terugkeer, die naam van die funksie, 419 00:19:05,310 --> 00:19:08,930 en dan enige argumente dat daardie funksie neem. 420 00:19:08,930 --> 00:19:13,970 >> So, om te kyk na 'n vinnige voorbeeld, in hierdie ons funksie wat ons hier Deur gevalle 421 00:19:13,970 --> 00:19:15,340 is basies 'n kubus funksie. 422 00:19:15,340 --> 00:19:19,170 So neem in 'n heelgetal en die terugkeer van die kubus van daardie heelgetal. 423 00:19:19,170 --> 00:19:23,190 So, want ons het geskryf dat funksie onder die belangrikste funksie, 424 00:19:23,190 --> 00:19:26,300 en ons wil hê dat die gebruik uitset van that-- of ons 425 00:19:26,300 --> 00:19:28,630 wil hê dat die funksie in ons belangrikste funksie, 426 00:19:28,630 --> 00:19:31,980 ons sit sy prototipe manier by die top van ons program. 427 00:19:31,980 --> 00:19:34,460 En dan as ons roep dit in ons belangrikste funksie, 428 00:19:34,460 --> 00:19:38,800 samesteller weet dat daardie funksie is later geskryf, en gaan kyk vir dit, 429 00:19:38,800 --> 00:19:40,910 en sal dit behoorlik te gebruik. 430 00:19:40,910 --> 00:19:45,190 Vrae oor prototyping? 431 00:19:45,190 --> 00:19:45,690 Ja. 432 00:19:45,690 --> 00:19:46,940 >> GEHOOR: So, wat is die punt? 433 00:19:46,940 --> 00:19:49,374 434 00:19:49,374 --> 00:19:50,915 Ek het nie die punt van die prototipe te kry. 435 00:19:50,915 --> 00:19:52,820 Hoekom nie net dit af is daar? 436 00:19:52,820 --> 00:19:54,903 >> CAMILLE REKHSON: Wel, as dit is hier neer, dan wanneer 437 00:19:54,903 --> 00:19:57,020 jy kubus van die lyn x in jou belangrikste funksie, 438 00:19:57,020 --> 00:19:59,495 samesteller sal geen idee het wat die kubus funksie werklik bestaan. 439 00:19:59,495 --> 00:20:01,310 >> GEHOOR: Kan jy nie net sit dit in die voorkant? 440 00:20:01,310 --> 00:20:02,350 >> CAMILLE REKHSON: Dis beter kodering praktyk 441 00:20:02,350 --> 00:20:04,150 om dit onder jou hooffunksie sit. 442 00:20:04,150 --> 00:20:06,350 So dit is waarom ons sou doen die prototipe. 443 00:20:06,350 --> 00:20:07,680 Net omdat, as jy het 'n baie funksies, 444 00:20:07,680 --> 00:20:10,180 Dit sou werklik slordig te wees lees deur al die funksies 445 00:20:10,180 --> 00:20:12,030 voordat jy vleis van jou program. 446 00:20:12,030 --> 00:20:13,888 Ja, en jy het 'q-- het 447 00:20:13,888 --> 00:20:16,796 >> GEHOOR: So, is verklaar jou veranderlike by die top 448 00:20:16,796 --> 00:20:18,795 sodat jy dit kan oopmaak, maak dit 'n globale veranderlike? 449 00:20:18,795 --> 00:20:21,119 Is dat soortgelyk aan hierdie waar dit verklaar dat dit 450 00:20:21,119 --> 00:20:23,660 daar, sodat dit weet dat dit gaan om dit later toegang 451 00:20:23,660 --> 00:20:24,762 en jy kan dit gebruik? 452 00:20:24,762 --> 00:20:26,146 >> CAMILLE REKHSON: Ja. 453 00:20:26,146 --> 00:20:26,646 Ja. 454 00:20:26,646 --> 00:20:30,414 >> GEHOOR: Indien enige addisionele the-- funksies wat jy die sleutel buite te skep 455 00:20:30,414 --> 00:20:31,840 van hierdie ding, or-- 456 00:20:31,840 --> 00:20:33,760 >> CAMILLE REKHSON: Ja, as jy skep ander functions-- belangrikste 457 00:20:33,760 --> 00:20:36,385 self is die function-- so as jy skep ander funksies, 458 00:20:36,385 --> 00:20:37,555 hulle moet buite te wees. 459 00:20:37,555 --> 00:20:38,055 Ja? 460 00:20:38,055 --> 00:20:39,734 >> GEHOOR: Wat is persent D? 461 00:20:39,734 --> 00:20:42,150 CAMILLE REKHSON: Persent D is dieselfde as persent I. 462 00:20:42,150 --> 00:20:45,915 Dit verwys na 'n heelgetal. 463 00:20:45,915 --> 00:20:47,895 Ja. 464 00:20:47,895 --> 00:20:50,370 >> GEHOOR: So, wat is int main besig? 465 00:20:50,370 --> 00:20:51,724 Wat was daardie leemte? 466 00:20:51,724 --> 00:20:53,890 CAMILLE REKHSON: Void sê neem dit in geen argumente. 467 00:20:53,890 --> 00:20:55,320 GEHOOR: [onhoorbaar]. 468 00:20:55,320 --> 00:20:57,570 CAMILLE REKHSON: Kan jy praat 'n bietjie harder, jammer? 469 00:20:57,570 --> 00:21:00,153 GEHOOR: Ja, jammer, hoekom het jy sit nietig vir die eerste een, 470 00:21:00,153 --> 00:21:02,297 en dan int insette vir die tweede een? 471 00:21:02,297 --> 00:21:04,720 472 00:21:04,720 --> 00:21:07,470 CAMILLE REKHSON: O, vir die twee different-- vir die belangrikste funksie 473 00:21:07,470 --> 00:21:09,290 versus die kubus funksie? 474 00:21:09,290 --> 00:21:13,360 So in die belangrikste funksie, ons leemte te gebruik omdat daar 475 00:21:13,360 --> 00:21:16,870 is geen parameters geneem in. 476 00:21:16,870 --> 00:21:19,425 Terwyl dit in die kubus funksie, ons het 'n inset. 477 00:21:19,425 --> 00:21:22,300 Dit is waarom dit sê int, insette, want daar is argumente dat ons 478 00:21:22,300 --> 00:21:24,571 neem in ons funksie uit te voer. 479 00:21:24,571 --> 00:21:25,070 Ja. 480 00:21:25,070 --> 00:21:27,770 481 00:21:27,770 --> 00:21:30,464 Is daar vrae? 482 00:21:30,464 --> 00:21:34,520 >> OK, en dan vinnig swaai-punt onakkuraatheid. 483 00:21:34,520 --> 00:21:37,200 So het ons oneindig baie reële getalle. 484 00:21:37,200 --> 00:21:38,950 Maar daar is net 'n eindige aantal bisse 485 00:21:38,950 --> 00:21:42,880 wat ons kan gebruik om daardie vertoon getalle en verteenwoordig hulle. 486 00:21:42,880 --> 00:21:45,020 So dan eindig ons met 'n paar onakkuraatheid. 487 00:21:45,020 --> 00:21:49,190 En jou nommers sal nie altyd baie presies wat 488 00:21:49,190 --> 00:21:51,810 jy dink hulle is wanneer jy hantering van drywende-punt. 489 00:21:51,810 --> 00:21:53,650 Dit is net iets goed om te weet. 490 00:21:53,650 --> 00:21:56,628 Vrae oor hierdie? 491 00:21:56,628 --> 00:21:59,610 Ja. 492 00:21:59,610 --> 00:22:02,090 >> GEHOOR: Is dit verwys die idee van bietjie oorloop 493 00:22:02,090 --> 00:22:03,089 wat in die lesing? 494 00:22:03,089 --> 00:22:06,080 Was dat daar iets skei? 495 00:22:06,080 --> 00:22:09,650 >> CAMILLE REKHSON: Hulle is heeltemal aparte, ja. 496 00:22:09,650 --> 00:22:11,160 OK, groot. 497 00:22:11,160 --> 00:22:16,369 498 00:22:16,369 --> 00:22:17,452 PULAK Goyal: Hi, almal. 499 00:22:17,452 --> 00:22:19,872 My naam is Pulak, en ek sal wees gaan oor wenke. 500 00:22:19,872 --> 00:22:23,260 501 00:22:23,260 --> 00:22:25,720 OK, so laat eers dink oor wat geheue lyk. 502 00:22:25,720 --> 00:22:28,610 So as jy hier kan sien, ons neem geheue en ons verdeel dit 503 00:22:28,610 --> 00:22:30,090 in 'n klomp van die blokke. 504 00:22:30,090 --> 00:22:33,150 En ons verwys elk sluit deur 'n adres, reg? 505 00:22:33,150 --> 00:22:37,196 En nie almal onthou watter tipe notasie wat ons gebruik om 'n adres te dui? 506 00:22:37,196 --> 00:22:38,510 >> GEHOOR: heksadesimaal, 0X. 507 00:22:38,510 --> 00:22:39,510 >> PULAK Goyal: heksadesimaal, reg? 508 00:22:39,510 --> 00:22:41,509 So die 0X beteken ons is praat oor heksadesimale. 509 00:22:41,509 --> 00:22:45,740 510 00:22:45,740 --> 00:22:48,360 OK, so hoe skep ons riglyne? 511 00:22:48,360 --> 00:22:51,960 So neem ons die tipe, ons sit it-- voeg 'n ster om dit, 512 00:22:51,960 --> 00:22:53,760 en dan voeg ons die veranderlike naam. 513 00:22:53,760 --> 00:22:59,280 So die voorbeelde wat ons gesien het is int star x, char star y, en z dryf begin. 514 00:22:59,280 --> 00:23:01,380 So as ek sê int ster x, kan iemand my vertel 515 00:23:01,380 --> 00:23:03,965 wat ek soort van praat is daar? 516 00:23:03,965 --> 00:23:05,710 >> GEHOOR: Die ligging van die skyf. 517 00:23:05,710 --> 00:23:06,890 >> PULAK Goyal: Jammer, wat? 518 00:23:06,890 --> 00:23:07,723 Kan jy dit herhaal? 519 00:23:07,723 --> 00:23:09,250 GEHOOR: Die ligging van die skyf. 520 00:23:09,250 --> 00:23:12,390 >> PULAK Goyal: So actually-- so wat Ek bedoel, is wanneer ons int star x, 521 00:23:12,390 --> 00:23:14,400 ons sê is die skep van 'n wyser, en dit 522 00:23:14,400 --> 00:23:17,130 kan die adres van 'n stoor veranderlike dit is 'n int, reg? 523 00:23:17,130 --> 00:23:21,810 So met char star y, ons skep 'n wyser 524 00:23:21,810 --> 00:23:24,220 wat kan die adres stoor van 'n veranderlike wat 'n kar. 525 00:23:24,220 --> 00:23:26,270 So wat sin maak vir almal? 526 00:23:26,270 --> 00:23:29,600 OK, cool 527 00:23:29,600 --> 00:23:33,450 >> OK, so met wysers, is daar twee belangrike bedrywighede wat ons kan doen. 528 00:23:33,450 --> 00:23:36,630 Daar is verwysing, en daar dereferencing. 529 00:23:36,630 --> 00:23:37,130 Ja? 530 00:23:37,130 --> 00:23:38,760 >> GEHOOR: Kan jy gaan 'n bietjie bietjie stadiger? 531 00:23:38,760 --> 00:23:39,510 >> PULAK Goyal: Natuurlik. 532 00:23:39,510 --> 00:23:45,350 Ja, ja so--, vra vrae soos ek gaan saam as you-- as iets onduidelik is. 533 00:23:45,350 --> 00:23:47,240 So het ons die verwysing en dereferencing. 534 00:23:47,240 --> 00:23:51,680 So wanneer jy die adres te kry van 'n veranderlike, gebruik dan die ampersand. 535 00:23:51,680 --> 00:23:53,620 So kom ons sê ek verklaar int x iewers. 536 00:23:53,620 --> 00:23:57,450 En ek wil na die adres van wat kry en dit slaag in, sou ek ampersand x te doen. 537 00:23:57,450 --> 00:24:01,260 En wanneer jy wil die kry waarde wat verband hou met 'n wyser, 538 00:24:01,260 --> 00:24:04,670 jy die dereference gebruik operateur, wat is 'n ster. 539 00:24:04,670 --> 00:24:08,570 >> So kan sê ek het int star x, en Ek het dit verwys na iets. 540 00:24:08,570 --> 00:24:13,510 As ek wil die waarde van wat dit is te kry verwys na, sou ek net doen star x. 541 00:24:13,510 --> 00:24:14,960 Is dit duidelik? 542 00:24:14,960 --> 00:24:16,390 Enige vrae oor wat? 543 00:24:16,390 --> 00:24:18,129 Ja. 544 00:24:18,129 --> 00:24:25,275 >> GEHOOR: So algemeen, jy sal nie in staat wees om te doen in x en sterre 545 00:24:25,275 --> 00:24:27,135 x met dieselfde x. 546 00:24:27,135 --> 00:24:28,740 Is dit korrek? 547 00:24:28,740 --> 00:24:31,800 Want as x is 'n veranderlike, dan moet jy 548 00:24:31,800 --> 00:24:35,980 om te doen by x te kry dat dit 'n wyser. 549 00:24:35,980 --> 00:24:40,810 Maar as x is 'n wyser, dan moet jy Star x doen om die veranderlike te kry. 550 00:24:40,810 --> 00:24:43,240 >> PULAK Goyal: Ja, so die vraag was oor wanneer 551 00:24:43,240 --> 00:24:45,750 gebruik ons ​​'n star-- wanneer sou jy die ster te gebruik, 552 00:24:45,750 --> 00:24:47,470 en wanneer ons die ampersand, en ons kan 553 00:24:47,470 --> 00:24:49,160 gebruik dit met dieselfde tipe veranderlike? 554 00:24:49,160 --> 00:24:51,810 So gewoonlik as jy het, byvoorbeeld, 'n int x, 555 00:24:51,810 --> 00:24:55,170 jy sou meestal gebruik word om die ampersand na die adres van daardie. 556 00:24:55,170 --> 00:24:58,220 Omdat dit nie maak sin om onderdanigheid in x. 557 00:24:58,220 --> 00:25:04,220 AANGESIEN as ons int star x, sou jy gebruik dereference werking 558 00:25:04,220 --> 00:25:07,910 omdat dit geen sin sou maak om te gebruik by x in daardie geval. 559 00:25:07,910 --> 00:25:09,582 Doen dit maak sin? 560 00:25:09,582 --> 00:25:13,192 >> GEHOOR: So jy kan nie en, en dan 'n wyser? 561 00:25:13,192 --> 00:25:14,900 PULAK Goyal: So jy tegnies, eintlik 562 00:25:14,900 --> 00:25:16,870 kan die ampersand van 'n wyser te doen. 563 00:25:16,870 --> 00:25:18,984 Maar dit is uit die omvang van hierdie klas. 564 00:25:18,984 --> 00:25:21,900 Vir die purpose-- vir jou ouens se doeleindes, wanneer jy wysers, 565 00:25:21,900 --> 00:25:25,191 jy wil die dereference operateur gebruik om die waarde wat verband hou met daardie. 566 00:25:25,191 --> 00:25:27,380 En wanneer jy gereeld het veranderlikes, soos 'n int x, 567 00:25:27,380 --> 00:25:31,410 jy wil die ampersand gebruik operateur na die adres van daardie. 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, so laat ons kyk na wenke en wat gebeur onder die enjinkap. 571 00:25:38,850 --> 00:25:42,640 So die eerste ding wat ek gedoen het is hier die verklaarde int x is gelyk aan 5. 572 00:25:42,640 --> 00:25:48,460 Die adres van hierdie veranderlike is 0x04, en die waarde is 5. 573 00:25:48,460 --> 00:25:52,940 So laat ons sien wat gebeur met die volgende lyn. 574 00:25:52,940 --> 00:25:55,130 So nou het ons 'n wyser te verklaar. 575 00:25:55,130 --> 00:26:01,450 Sy adres is 0x08, en sy waarde is die adres van x. 576 00:26:01,450 --> 00:26:05,220 Maak dit sin om almal? 577 00:26:05,220 --> 00:26:06,507 Enige vrae oor wat? 578 00:26:06,507 --> 00:26:09,130 579 00:26:09,130 --> 00:26:13,080 >> OK, en nou laat ons sien wat gebeur met die volgende lyn. 580 00:26:13,080 --> 00:26:18,140 So met hierdie volgende lyn, ons het Die adres van kopie word 0x10, 581 00:26:18,140 --> 00:26:20,780 en die waarde daarvan is 5. 582 00:26:20,780 --> 00:26:23,570 So die rede waarom ons het vyf is ons gesê ons dereference 583 00:26:23,570 --> 00:26:26,740 wyser, wat ons verklaar 'n int ster. 584 00:26:26,740 --> 00:26:35,797 En so het dit went-- wanneer ons dereference dit dit gesê, OK, wat in die slot 0x04. 585 00:26:35,797 --> 00:26:36,630 En dit het op daardie. 586 00:26:36,630 --> 00:26:40,785 En wat is 'n x x0-- 0x04, en die waarde is 5. 587 00:26:40,785 --> 00:26:41,660 Maak dit sin? 588 00:26:41,660 --> 00:26:42,334 Ja? 589 00:26:42,334 --> 00:26:50,090 >> GEHOOR: Hoekom is die adres se kopie net 4 grepe bo die x wyser? 590 00:26:50,090 --> 00:26:52,318 >> PULAK Goyal: Ja, dit is 'n fout on-- 591 00:26:52,318 --> 00:26:55,304 >> CAMILLE REKHSON: So, ja, onthou dit is geskryf in heksadesimaal. 592 00:26:55,304 --> 00:26:56,220 PULAK Goyal: O, ja. 593 00:26:56,220 --> 00:26:58,615 CAMILLE REKHSON: So dit is eintlik 8 en dan 16 594 00:26:58,615 --> 00:27:00,960 want ons het gesê dat, die wyser, onthou, 595 00:27:00,960 --> 00:27:05,330 in ons IDE gaan 8 grepe lank te wees. 596 00:27:05,330 --> 00:27:06,080 PULAK Goyal: Ja. 597 00:27:06,080 --> 00:27:09,160 598 00:27:09,160 --> 00:27:12,540 So net om duidelik te wees, pointers is 8 grepe lank. 599 00:27:12,540 --> 00:27:14,160 'N int is 4 grepe. 600 00:27:14,160 --> 00:27:18,380 So die rede waarom dit wat gespring van 0x04 om 0x08 601 00:27:18,380 --> 00:27:20,980 is omdat ons moes doen 'n sprong van 8 grepe. 602 00:27:20,980 --> 00:27:24,396 En dan for-- sedert kopie is net 'n int, 603 00:27:24,396 --> 00:27:26,020 dit is 4 grepe, wat is die helfte van 8 grepe. 604 00:27:26,020 --> 00:27:29,970 Sodat ons net spring om 0x10, wat twee weg van 0x08. 605 00:27:29,970 --> 00:27:33,100 606 00:27:33,100 --> 00:27:34,570 Enige ander vrae? 607 00:27:34,570 --> 00:27:36,850 OK, let's-- ja? 608 00:27:36,850 --> 00:27:39,245 >> GEHOOR: Hoekom is dit nie die waarde van int kopie 609 00:27:39,245 --> 00:27:45,000 net the-- hoekom is dit 5 in plaas van 0x04? 610 00:27:45,000 --> 00:27:46,270 >> PULAK Goyal: OK, hoekom is dit 5? 611 00:27:46,270 --> 00:27:51,600 OK, so wanneer the-- so laat se eerste dink oor hierdie in terme van tipes. 612 00:27:51,600 --> 00:27:55,600 So ek sê int kopie is gelyk aan wyser ster. 613 00:27:55,600 --> 00:27:57,490 So, wat is die aard van die wyser? 614 00:27:57,490 --> 00:27:59,310 Dit is 'n int ster. 615 00:27:59,310 --> 00:28:03,850 En toe ek dereference dat die soort word 'n int. 616 00:28:03,850 --> 00:28:06,570 So wat ons verwag om te stoor hier is eintlik 'n int. 617 00:28:06,570 --> 00:28:07,965 Maak dit sin? 618 00:28:07,965 --> 00:28:09,090 GEHOOR: Sure, bietjie. 619 00:28:09,090 --> 00:28:11,465 PULAK Goyal: So gewoonlik wanneer jy dink in terme van tipes, 620 00:28:11,465 --> 00:28:15,607 dit help om te verstaan ​​wat is die tipe van die waarde wat daar moet gaan. 621 00:28:15,607 --> 00:28:17,940 So jy kan gewoonlik uit 'n groot deel van hierdie algemene foute 622 00:28:17,940 --> 00:28:21,790 deur te dink in terme van tipes. 623 00:28:21,790 --> 00:28:23,612 Laat my gaan deur 'n bietjie meer skyfies. 624 00:28:23,612 --> 00:28:26,070 En ons kan vrae by te kry die einde van die artikel wyser. 625 00:28:26,070 --> 00:28:28,910 626 00:28:28,910 --> 00:28:32,290 OK, so ons het 'n karretjie program hier. 627 00:28:32,290 --> 00:28:35,460 En so ook anyone-- kan iemand vertel my wat is verkeerd met hierdie program? 628 00:28:35,460 --> 00:28:39,000 629 00:28:39,000 --> 00:28:40,820 Right, so wat ons verwag om hier te doen 630 00:28:40,820 --> 00:28:44,520 is-- wat ons wil doen is neem die veranderlike x int 631 00:28:44,520 --> 00:28:48,350 en draai it-- maak dit gelyk 5 in plaas van 3 en dan druk dit. 632 00:28:48,350 --> 00:28:49,640 Maar dit is nie gebeur nie. 633 00:28:49,640 --> 00:28:50,950 Kan iemand my vertel hoekom? 634 00:28:50,950 --> 00:28:51,934 Ja? 635 00:28:51,934 --> 00:28:54,840 >> GEHOOR: Wanneer die funksie to_five neem x as dit is die argument, 636 00:28:54,840 --> 00:28:58,130 dit neem nie x self nie, maar plaas skep 'n kopie, a, dit. 637 00:28:58,130 --> 00:29:00,115 En dit vorm bedrywighede op daardie. 638 00:29:00,115 --> 00:29:02,614 Maar as gevolg van dat, jy dit nie doen nie verander die werklike waarde van x. 639 00:29:02,614 --> 00:29:03,970 Aangesien jy [onhoorbaar]. 640 00:29:03,970 --> 00:29:07,950 >> PULAK Goyal: Right, reg, so as ons roep 641 00:29:07,950 --> 00:29:10,100 die funksie to_five, wat ons doen is om te dink, 642 00:29:10,100 --> 00:29:12,550 gee my 'n afskrif van die waarde aan daardie funksie. 643 00:29:12,550 --> 00:29:16,010 Daardie funksie, dan gaan en doen 'n paar manipulasies. 644 00:29:16,010 --> 00:29:21,260 Maar sodra dit terug, dit is nou uit van die omvang van die belangrikste funksie hier. 645 00:29:21,260 --> 00:29:24,750 En so x is steeds, in werklikheid, gelyk aan 3, en ons druk 3. 646 00:29:24,750 --> 00:29:26,445 OK, so laat ons sien hoe dit gebeur. 647 00:29:26,445 --> 00:29:29,430 648 00:29:29,430 --> 00:29:31,180 >> OK, so daar is niks verklaar. 649 00:29:31,180 --> 00:29:34,490 Toe, hier, x is gelyk aan 3. 650 00:29:34,490 --> 00:29:40,820 En nou is dit is-- by posisie twee, 'n nog nie in omvang. 651 00:29:40,820 --> 00:29:46,790 En nou gaan ons na drie posisioneer, waar 'n veronderstel nou die waarde van 3. 652 00:29:46,790 --> 00:29:49,380 Op vier, het ons nou verander 'n 5. 653 00:29:49,380 --> 00:29:53,290 Maar nou, wanneer ons spring terug na vyf, wat die gedrukte verklaring, 654 00:29:53,290 --> 00:29:55,380 n is nou uit omvang. 655 00:29:55,380 --> 00:29:57,450 En x is steeds gelyk aan 3. 656 00:29:57,450 --> 00:29:59,700 Maak dit sin om almal? 657 00:29:59,700 --> 00:30:03,010 OK, so nou kom ons praat oor hoe kan ons wenke gebruik om dit op te los. 658 00:30:03,010 --> 00:30:06,140 Is daar iemand enige idees hoe ons kon dit regmaak deur die gebruik van verwysings? 659 00:30:06,140 --> 00:30:08,710 660 00:30:08,710 --> 00:30:11,490 >> GEHOOR: Jy neem in 'n int ster in plaas van 'n int vir to_five. 661 00:30:11,490 --> 00:30:12,530 >> PULAK Goyal: Jammer, kon jy praat 662 00:30:12,530 --> 00:30:15,266 >> GEHOOR: Jy neem in 'n int ster in plaas van 'n int vir to_five. 663 00:30:15,266 --> 00:30:16,140 PULAK Goyal: OK, ja. 664 00:30:16,140 --> 00:30:20,250 So laat pass-- plaas van verbygaande net die waarde, laat dit slaag deur verwysing. 665 00:30:20,250 --> 00:30:21,690 Hierdie nuwe funksie, reg? 666 00:30:21,690 --> 00:30:25,210 En so deur verby die adres in, ons kan manipulasies te doen op die adres. 667 00:30:25,210 --> 00:30:27,400 En so is ons eintlik, in werklikheid, die verandering van x. 668 00:30:27,400 --> 00:30:30,570 So laat ons sien hoe dit werk. 669 00:30:30,570 --> 00:30:32,950 >> OK, so in hierdie voorbeeld ons vaste dit. 670 00:30:32,950 --> 00:30:38,000 Ons het ons handtekening verander van to_five te neem in 'n int 671 00:30:38,000 --> 00:30:40,540 ster in plaas van net 'n int hier. 672 00:30:40,540 --> 00:30:45,470 Toe ons dereference hierdie a en toewys 5 om dit te. 673 00:30:45,470 --> 00:30:48,090 En nou word dit, in werklikheid, druk 5. 674 00:30:48,090 --> 00:30:51,960 So laat ons sien hoe die stappe hier werk. 675 00:30:51,960 --> 00:30:55,200 >> So met die eerste stap, daar is nog niks verklaar. 676 00:30:55,200 --> 00:31:00,140 So hier, met die tweede stap, ons het gesê x is gelyk aan 3, 677 00:31:00,140 --> 00:31:03,970 maar 'n steeds uit omvang. 678 00:31:03,970 --> 00:31:08,100 Nou die derde lyn, ons het x is steeds gelyk aan drie. 679 00:31:08,100 --> 00:31:14,150 En nou, ons het geslaag in-- wat is gestoor in 'n nou die adres van x. 680 00:31:14,150 --> 00:31:16,760 Maak dit sin om almal, hoe ons dit het? 681 00:31:16,760 --> 00:31:21,470 Right, ons het die amper-- dit is hoe ons verby 'n ampersand x om die funksie 682 00:31:21,470 --> 00:31:23,040 to_five. 683 00:31:23,040 --> 00:31:30,330 En dan na die volgende lyn, wat ons doen, is ons dereference a. 684 00:31:30,330 --> 00:31:36,120 >> En deur 'n dereferencing, ons in staat is om die waarde van x verander 3-5. 685 00:31:36,120 --> 00:31:38,560 Omdat x woon by daardie adres 0x12. 686 00:31:38,560 --> 00:31:42,440 687 00:31:42,440 --> 00:31:45,810 En dan, uiteindelik, wanneer ons weer terug na die hoof, 688 00:31:45,810 --> 00:31:50,570 hoewel dit 'n is nou uit omvang, ons het, in werklikheid, verander x. 689 00:31:50,570 --> 00:31:51,570 En dit is 5. 690 00:31:51,570 --> 00:31:55,160 Enige vrae oor hierdie? 691 00:31:55,160 --> 00:31:56,036 Ja? 692 00:31:56,036 --> 00:31:58,185 >> GEHOOR: Kan jy my vertel wat die ampersand x was? 693 00:31:58,185 --> 00:32:00,004 Ek het gedink ampersand was soos EN. 694 00:32:00,004 --> 00:32:03,480 695 00:32:03,480 --> 00:32:07,210 >> PULAK Goyal: Ja, so ons gebruik dieselfde simbool vir baie verskillende dinge. 696 00:32:07,210 --> 00:32:11,470 So hier, wanneer jy in have-- hierdie geval, wanneer jy, 697 00:32:11,470 --> 00:32:19,380 Ek guess-- so in hierdie geval, toe jy met wysers, 698 00:32:19,380 --> 00:32:23,640 wanneer jy die ampersand voor van 'n int, 'n veranderlike int, of 'n kar, 699 00:32:23,640 --> 00:32:28,609 of 'n vloei, wat jy sê is, gee my die adres van hierdie. 700 00:32:28,609 --> 00:32:31,900 Maar wat jy dink, wanneer anders sou jy ampersand gebruik word, kom ons sê, 701 00:32:31,900 --> 00:32:33,180 in 'n verklaring as. 702 00:32:33,180 --> 00:32:39,256 Jy het 'n ware, en 'n paar veranderlikes wat evalueer om Boolean, 703 00:32:39,256 --> 00:32:41,380 en 'n paar ander veranderlikes dat sommige Boole bekragtig 704 00:32:41,380 --> 00:32:42,880 en jy wil te kry die en van daardie. 705 00:32:42,880 --> 00:32:44,552 Dan sou jy die ampersand gebruik. 706 00:32:44,552 --> 00:32:47,510 Spreker 1: Ja, so net vandag, het ons gepraat oor drie verskillende gebruike 707 00:32:47,510 --> 00:32:48,250 van ampersand. 708 00:32:48,250 --> 00:32:51,040 Ons het twee-karakters, wat wat Pulak net beskryf het. 709 00:32:51,040 --> 00:32:53,420 Ons het een ampersand, wat is wat Camille beskryf 710 00:32:53,420 --> 00:32:54,897 vroeër, wat een ampersand. 711 00:32:54,897 --> 00:32:56,685 En dit is vir bis EN. 712 00:32:56,685 --> 00:32:59,640 En agterkom dat beide die voorwaardelike AND-- of, jammer, 713 00:32:59,640 --> 00:33:04,180 die logiese EN en die bis EN, diegene twee getalle, reg? 714 00:33:04,180 --> 00:33:07,354 Dit is iets wat-teken ampersand iets 715 00:33:07,354 --> 00:33:09,350 iets ampersand iets. 716 00:33:09,350 --> 00:33:13,862 Hier, toe het ons net ampersand iets wat se dereferencing. 717 00:33:13,862 --> 00:33:15,830 >> PULAK Goyal: Ja, groot vraag. 718 00:33:15,830 --> 00:33:16,677 Ja. 719 00:33:16,677 --> 00:33:21,150 >> GEHOOR: Hoekom doen in lyn 5a en Star n geword N / A? 720 00:33:21,150 --> 00:33:25,520 Hoekom doen hulle dit nie net soort van behou dieselfde waardes van die vorige lyn? 721 00:33:25,520 --> 00:33:28,000 >> PULAK Goyal: Omdat ons het die funksie opgewonde. 722 00:33:28,000 --> 00:33:30,894 En so wat happens-- so what-- nou is ons 723 00:33:30,894 --> 00:33:33,060 uit omvang van daardie funksie, wat gebeur eintlik 724 00:33:33,060 --> 00:33:37,770 is diegene verwyder uit die geheue. 725 00:33:37,770 --> 00:33:38,808 Ja. 726 00:33:38,808 --> 00:33:42,982 >> GEHOOR: Tussen 3 of 4-ster 'n gelyk 5. 727 00:33:42,982 --> 00:33:43,690 PULAK Goyal: Ja. 728 00:33:43,690 --> 00:33:45,575 GEHOOR: Wat beteken dit presies aan te dui? 729 00:33:45,575 --> 00:33:46,950 PULAK Goyal: Wat beteken dit? 730 00:33:46,950 --> 00:33:47,380 GEHOOR: Ja. 731 00:33:47,380 --> 00:33:49,088 PULAK Goyal: So het die vraag was, wat is 732 00:33:49,088 --> 00:33:52,300 that-- wat jy doen aanlyn wanneer ons sê, ster is gelyk aan 5? 733 00:33:52,300 --> 00:33:55,210 So onthou die ster die dereference operateur. 734 00:33:55,210 --> 00:33:58,640 So wanneer 'n, in hierdie geval, is 'n wyser. 735 00:33:58,640 --> 00:34:00,030 Dit is 'n int ster. 736 00:34:00,030 --> 00:34:03,710 So wanneer ons dereference n deur met behulp van die ster, wat ons sê 737 00:34:03,710 --> 00:34:11,250 is, gaan na wat ookal gestoor by die adres, gestoor in a-- so take-- so 'n, 738 00:34:11,250 --> 00:34:13,280 nou, het 'n paar adres gestoor in dit. 739 00:34:13,280 --> 00:34:19,920 Gaan na die plek waar die adres punte, en nou verander wat dit ook al is om vyf. 740 00:34:19,920 --> 00:34:20,420 Ja. 741 00:34:20,420 --> 00:34:23,390 >> GEHOOR: Kan jy sê dit in eenvoudiger terme? 742 00:34:23,390 --> 00:34:27,360 Verander die adres van 'n 5. 743 00:34:27,360 --> 00:34:31,070 >> PULAK Goyal: Ons is nie die verandering van die adres van 'n 5. 744 00:34:31,070 --> 00:34:36,340 A het 'n paar adres in, wat is die adres van die veranderlike van belang. 745 00:34:36,340 --> 00:34:39,570 En so wat ons sê wanneer ons dereference is, 746 00:34:39,570 --> 00:34:42,630 nou wil ons change-- ons nou verwysing 747 00:34:42,630 --> 00:34:45,135 die belang van die veranderlike se direk. 748 00:34:45,135 --> 00:34:48,499 Doen dit maak sin? 749 00:34:48,499 --> 00:34:52,280 >> Spreker 1: Nog 'n manier om te dink dit is so 'n go-- is 'n adres. 750 00:34:52,280 --> 00:34:55,310 Die ster sê gaan na die te spreek en te kyk na die waarde daarvan. 751 00:34:55,310 --> 00:34:58,000 En nou sit sy waarde tot 5. 752 00:34:58,000 --> 00:35:00,920 So dit sê, gaan na die adres van x, wat 753 00:35:00,920 --> 00:35:05,720 gaan wees wat gestoor in 'n, en verander dit na 5. 754 00:35:05,720 --> 00:35:06,470 PULAK Goyal: Ja? 755 00:35:06,470 --> 00:35:10,817 GEHOOR: So is die posisie waar die wyser gaan, die adres. 756 00:35:10,817 --> 00:35:14,270 Maar die waarde is 'n opgedra waarde gebaseer op die adres. 757 00:35:14,270 --> 00:35:15,020 PULAK Goyal: Ja. 758 00:35:15,020 --> 00:35:18,076 759 00:35:18,076 --> 00:35:19,367 Enige ander vrae oor hierdie? 760 00:35:19,367 --> 00:35:22,774 761 00:35:22,774 --> 00:35:23,940 GEHOOR: Ek het 'n vraag. 762 00:35:23,940 --> 00:35:25,664 PULAK Goyal: Ja, jammer. 763 00:35:25,664 --> 00:35:30,324 GEHOOR: So wanneer jy store-- so As jy sê [onhoorbaar] a. 764 00:35:30,324 --> 00:35:31,032 PULAK Goyal: Ja. 765 00:35:31,032 --> 00:35:34,448 GEHOOR: Moet jy stoor die x met 'n ampersand? 766 00:35:34,448 --> 00:35:37,376 Hoekom kan jy nie net sê x voor jou int [onhoorbaar]? 767 00:35:37,376 --> 00:35:40,562 768 00:35:40,562 --> 00:35:41,270 PULAK Goyal: So-- 769 00:35:41,270 --> 00:35:42,090 GEHOOR: [onhoorbaar]. 770 00:35:42,090 --> 00:35:43,673 PULAK Goyal: So is jou question-- oh. 771 00:35:43,673 --> 00:35:47,160 772 00:35:47,160 --> 00:35:51,300 So jou vraag is, hoekom kan we-- om die funksie to_five, kan nie die rede waarom ons 773 00:35:51,300 --> 00:35:52,590 net verby 'n x, reg? 774 00:35:52,590 --> 00:35:53,570 >> GEHOOR: Right. 775 00:35:53,570 --> 00:35:59,570 >> PULAK Goyal: OK, ja, so dit weer gaan terug na ons bespreking oor tipes. 776 00:35:59,570 --> 00:36:06,080 So die funksie to_five is nou verwag 'n tipe int ster. 777 00:36:06,080 --> 00:36:07,660 So, wat is die aard van die x? 778 00:36:07,660 --> 00:36:09,800 X is net 'n int. 779 00:36:09,800 --> 00:36:13,530 Maar wat hierdie funksie verwag is 'n int ster. 780 00:36:13,530 --> 00:36:16,910 Dit verwag So 'n veranderlike wat 'n adres gestoor in dit. 781 00:36:16,910 --> 00:36:20,250 So dit is hoe die you-- sit ampersand, en so dit is 782 00:36:20,250 --> 00:36:22,560 hoe ons slaag in die adres wat now-- 783 00:36:22,560 --> 00:36:25,120 en dat interpreteer dat as 'n int ster, ja. 784 00:36:25,120 --> 00:36:26,700 N groot vraag. 785 00:36:26,700 --> 00:36:29,300 Enige ander vrae oor hierdie? 786 00:36:29,300 --> 00:36:29,800 OK, cool. 787 00:36:29,800 --> 00:36:32,870 788 00:36:32,870 --> 00:36:37,020 >> OK, so nou kom ons praat oor wyser rekenkundige. 789 00:36:37,020 --> 00:36:40,050 So hier, optel en aftrek i pas die wyser 790 00:36:40,050 --> 00:36:43,950 deur i keer die grootte van die tipe wyser grepe. 791 00:36:43,950 --> 00:36:46,170 So laat ons kyk na hoe dit lyk. 792 00:36:46,170 --> 00:36:49,640 So hier het ons verklaar int x is gelyk aan 'n 5. 793 00:36:49,640 --> 00:36:56,120 En nou gaan ons 'n wyser te verklaar y, en slaag die adres van x is daar. 794 00:36:56,120 --> 00:36:58,910 So ons het dit. 795 00:36:58,910 --> 00:37:01,005 So x is gestoor 0x04. 796 00:37:01,005 --> 00:37:03,960 So nou y is gelyk aan daardie. 797 00:37:03,960 --> 00:37:12,260 En kan iemand my vertel wat hulle dink sal gebeur wanneer ons dit doen y plus gelyk aan 1? 798 00:37:12,260 --> 00:37:19,100 799 00:37:19,100 --> 00:37:19,771 Ja? 800 00:37:19,771 --> 00:37:24,010 >> GEHOOR: Sal dit verander na 0 keer 0 8? 801 00:37:24,010 --> 00:37:25,342 >> PULAK Goyal: Grootte en type-- 802 00:37:25,342 --> 00:37:27,789 >> GEHOOR: jy beweeg die adres. 803 00:37:27,789 --> 00:37:29,080 PULAK Goyal: Ja dit was-- ja. 804 00:37:29,080 --> 00:37:31,130 So-- reg. 805 00:37:31,130 --> 00:37:33,110 So dit sal verander om 0x08. 806 00:37:33,110 --> 00:37:38,750 En because-- so sou jy dit gebruik formule, 1 keer die grootte van die wyser 807 00:37:38,750 --> 00:37:42,354 en die ooreenkomste is size-- 808 00:37:42,354 --> 00:37:44,050 >> [STUDENTE murmureer] 809 00:37:44,050 --> 00:37:45,190 >> PULAK Goyal: Right. 810 00:37:45,190 --> 00:37:46,150 >> [STUDENTE murmureer] 811 00:37:46,150 --> 00:37:49,230 >> Spreker 1: So die tipe wat die wyser punte aan- 812 00:37:49,230 --> 00:37:51,862 >> PULAK Goyal: Is, ja, ja, dit is 4 grepe. 813 00:37:51,862 --> 00:37:53,930 >> Spreker 1: So SY is 4 grepe. 814 00:37:53,930 --> 00:38:01,260 >> PULAK Goyal: So as ons a-- het laat sê ons verklaar, dink ek, 'n kar. 815 00:38:01,260 --> 00:38:06,830 Wat sou so that-- kom ons sê ons het char x gelykstaande aan 'n of iets. 816 00:38:06,830 --> 00:38:14,400 En ons het die adres van daardie op 0x04, wat y sou plus gelyk 1 nou doen? 817 00:38:14,400 --> 00:38:14,960 Jammer, wat? 818 00:38:14,960 --> 00:38:16,099 >> GEHOOR: 0x05. 819 00:38:16,099 --> 00:38:17,140 PULAK Goyal: 0x05, reg. 820 00:38:17,140 --> 00:38:18,520 Maak almal sien dat? 821 00:38:18,520 --> 00:38:20,212 OK, en nou kom ons sê dit is 'n float. 822 00:38:20,212 --> 00:38:20,962 Wat sou gebeur? 823 00:38:20,962 --> 00:38:25,210 824 00:38:25,210 --> 00:38:26,130 Iemand? 825 00:38:26,130 --> 00:38:28,066 So dryf is hoeveel bytes? 826 00:38:28,066 --> 00:38:28,860 >> GEHOOR: 4 grepe. 827 00:38:28,860 --> 00:38:29,651 >> PULAK Goyal: Right. 828 00:38:29,651 --> 00:38:32,661 So sou dit dieselfde ding as dit wees. 829 00:38:32,661 --> 00:38:33,160 Koel. 830 00:38:33,160 --> 00:38:36,230 831 00:38:36,230 --> 00:38:40,180 OK, en nou laat ons praat oor wysers en skikkings. 832 00:38:40,180 --> 00:38:44,210 So jy sien dit op die vorige twee p-stelle, 833 00:38:44,210 --> 00:38:48,570 waar ons so skikkings kan treat-- en pointers is nie dieselfde ding nie. 834 00:38:48,570 --> 00:38:51,170 Maar ons kan skikkings te behandel as wysers. 835 00:38:51,170 --> 00:38:55,550 So hier, ons het hierdie reeks hier, wat drie posisies het. 836 00:38:55,550 --> 00:38:57,570 In die eerste slot-- ons een, twee, en drie. 837 00:38:57,570 --> 00:39:00,930 >> So as we-- sodat ons kan wys dat deur te sê, ons het skikking, 838 00:39:00,930 --> 00:39:02,080 dereference dit. 839 00:39:02,080 --> 00:39:04,579 En dan wanneer ons dereference dat wat ons eintlik doen 840 00:39:04,579 --> 00:39:05,910 is verwys na dieselfde slot. 841 00:39:05,910 --> 00:39:09,230 So star verskeidenheid gelyk 1. 842 00:39:09,230 --> 00:39:11,020 Ons dit- hoe kon ons skryf that-- wat is 843 00:39:11,020 --> 00:39:13,404 'n alternatiewe manier waarop ons kon skryf dit? 844 00:39:13,404 --> 00:39:14,840 >> GEHOOR: Array 0 gelyke 1. 845 00:39:14,840 --> 00:39:17,100 >> PULAK Goyal: Presies, nie almal sien dat? 846 00:39:17,100 --> 00:39:18,320 So dieselfde ding met hier. 847 00:39:18,320 --> 00:39:24,060 So wanneer ons verskeidenheid plus 1, do-- ons so even-- 848 00:39:24,060 --> 00:39:28,890 onthou met rekenkundige dat ons net oor gepraat het, wanneer ons dit doen plus 1 849 00:39:28,890 --> 00:39:32,120 of skuif dit oor met 4 grepe, reg. 850 00:39:32,120 --> 00:39:33,170 Maak almal sien dat? 851 00:39:33,170 --> 00:39:35,753 En daardie kant toe ons dereference dat ons kan stel dat 2. 852 00:39:35,753 --> 00:39:37,710 En dit is hoe ons ' die volgende blok 2. 853 00:39:37,710 --> 00:39:41,640 En so 'n alternatiewe manier om te skryf Dit sal ook opgestel bracket wees 854 00:39:41,640 --> 00:39:44,436 0 bracket gelyk 1. 855 00:39:44,436 --> 00:39:47,070 >> GEHOOR: Het jy die hakies nodig? 856 00:39:47,070 --> 00:39:50,840 >> PULAK Goyal: Ja, want jy dereferencing die hele hoeveelheid 857 00:39:50,840 --> 00:39:53,460 verskeidenheid plus 1. 858 00:39:53,460 --> 00:39:56,829 OK, en dieselfde ding vir verskeidenheid plus 2. 859 00:39:56,829 --> 00:39:57,870 Enige vrae oor hierdie? 860 00:39:57,870 --> 00:39:58,369 Ja. 861 00:39:58,369 --> 00:40:01,340 GEHOOR: So skikking is outomaties by 0? 862 00:40:01,340 --> 00:40:03,054 >> PULAK Goyal: Array is-- jammer, wat? 863 00:40:03,054 --> 00:40:03,962 >> GEHOOR: Array is 0. 864 00:40:03,962 --> 00:40:07,140 Die adres van verskeidenheid is net 0. 865 00:40:07,140 --> 00:40:10,200 >> PULAK Goyal: So die vraag is, is die adres van array net 0? 866 00:40:10,200 --> 00:40:11,950 So, nee, verskeidenheid het 'n paar adres. 867 00:40:11,950 --> 00:40:14,930 So wanneer ons dereference dit that's-- sodat jy kan dink about-- 868 00:40:14,930 --> 00:40:18,230 letterlik soos 'n wyser wys na die begin van 'n skikking. 869 00:40:18,230 --> 00:40:19,390 Sodat het 'n paar adres. 870 00:40:19,390 --> 00:40:20,580 Ons weet nie wat dit is. 871 00:40:20,580 --> 00:40:24,170 Maar toe ons dereference nie, weet ons dit is die begin van die skikking. 872 00:40:24,170 --> 00:40:25,980 En so wanneer ons beweeg deur 1, is ons net die beweging 873 00:40:25,980 --> 00:40:29,090 relatief tot waar daardie adres is nie. 874 00:40:29,090 --> 00:40:30,480 Enige ander vrae? 875 00:40:30,480 --> 00:40:31,419 Ja? 876 00:40:31,419 --> 00:40:35,559 >> GEHOOR: So as jy doen verskeidenheid bracket plus 1-- 877 00:40:35,559 --> 00:40:37,350 PULAK Goyal: Jammer, I-- kan jy praat? 878 00:40:37,350 --> 00:40:41,174 GEHOOR: Ja, as jy dit doen verskeidenheid bracket [onhoorbaar]. 879 00:40:41,174 --> 00:40:45,227 Daarom dan, as jy die pointer-- 880 00:40:45,227 --> 00:40:46,810 PULAK Goyal: Jammer, ek kan jou nie hoor nie. 881 00:40:46,810 --> 00:40:48,100 Kan jy dit nog een keer sê? 882 00:40:48,100 --> 00:40:49,470 >> GEHOOR: Jy is OK. 883 00:40:49,470 --> 00:40:50,870 >> PULAK Goyal: OK, jammer. 884 00:40:50,870 --> 00:40:51,420 OK, cool. 885 00:40:51,420 --> 00:40:52,200 Any-- ja. 886 00:40:52,200 --> 00:40:55,710 So wanneer jy gaan in die rigting bracket 3-- 887 00:40:55,710 --> 00:40:56,570 >> PULAK Goyal: Ja. 888 00:40:56,570 --> 00:40:59,832 >> GEHOOR: --isn't there-- sou nie dit vier plekke soos 0, 1, 2, en 3? 889 00:40:59,832 --> 00:41:02,630 Hoekom is dit nie array 2 int? 890 00:41:02,630 --> 00:41:07,850 >> PULAK Goyal: Nee, so net die konvensie van C is-- wanneer ons verklaar dat die skikking, 891 00:41:07,850 --> 00:41:12,010 we-- die aantal ons daar te vestig is hoeveel slots ons wil hê. 892 00:41:12,010 --> 00:41:16,970 Maar die indekse van die skikking is eintlik array 0, 1 verskeidenheid, en verskeidenheid 2. 893 00:41:16,970 --> 00:41:19,780 So dit is net die konvensie oor hoe ons verklaar skikkings. 894 00:41:19,780 --> 00:41:20,880 Ja, enige ander vrae? 895 00:41:20,880 --> 00:41:21,380 Ja. 896 00:41:21,380 --> 00:41:23,750 GEHOOR: So ons is nog steeds praat oor wysers, reg? 897 00:41:23,750 --> 00:41:24,500 PULAK Goyal: Ja. 898 00:41:24,500 --> 00:41:28,600 GEHOOR: Kan jy nog steeds doen Ster vir array 0 gelyk 1? 899 00:41:28,600 --> 00:41:32,870 PULAK Goyal: Nee, nee, so-- OK, so die vraag was kon 900 00:41:32,870 --> 00:41:37,370 jy net doen star verskeidenheid bracket nul, en dan sê dat gelyk aan 1. 901 00:41:37,370 --> 00:41:40,000 So, nee, wat ons sê hier is dat ons kan think-- 902 00:41:40,000 --> 00:41:42,600 kan ons skikkings te behandel as wysers. 903 00:41:42,600 --> 00:41:44,970 Sodat ons have-- wat ons woord is ons twee maniere 904 00:41:44,970 --> 00:41:47,370 nou verwysing na die dieselfde blok. 905 00:41:47,370 --> 00:41:52,270 So doing-- as jy array nul, die tipe wat is nou 'n int. 906 00:41:52,270 --> 00:41:55,264 En as jy die ster neem, jy 'n ongeldige ding. 907 00:41:55,264 --> 00:41:57,680 So, wat ons hier sê, is is daar twee alternatiewe maniere 908 00:41:57,680 --> 00:41:59,100 om te verwys na dieselfde blok. 909 00:41:59,100 --> 00:42:01,860 Jy kan óf doen array bracket 0 gelyk 1. 910 00:42:01,860 --> 00:42:06,420 Of jy kan doen dereference skikking, en wat gelyk is aan 0. 911 00:42:06,420 --> 00:42:08,621 So net twee maniere doen dieselfde ding. 912 00:42:08,621 --> 00:42:09,120 Ja. 913 00:42:09,120 --> 00:42:15,270 >> GEHOOR: Hoekom is dit nie grootte van 1 tot int aan- voeg 914 00:42:15,270 --> 00:42:17,650 >> PULAK Goyal: Grootte van int 1. 915 00:42:17,650 --> 00:42:19,900 >> GEHOOR: Want dit is die beweging van een af. 916 00:42:19,900 --> 00:42:23,620 >> PULAK Goyal: Want dit is net die manier waarop C werk. 917 00:42:23,620 --> 00:42:26,460 Dit is net die manier waarop wyser rekenkundige gedefinieer word. 918 00:42:26,460 --> 00:42:27,854 Dit sal die wyser te neem. 919 00:42:27,854 --> 00:42:30,020 En dan alles wat jy voeg om dit, sal dit vermenigvuldig 920 00:42:30,020 --> 00:42:34,770 deur die grootte van watter die wyser winkel is, ja. 921 00:42:34,770 --> 00:42:35,480 Ja. 922 00:42:35,480 --> 00:42:39,595 >> GEHOOR: So jy sê ons kan hanteer wysers en skikkings dieselfde, 923 00:42:39,595 --> 00:42:40,720 maar dat hulle is anders. 924 00:42:40,720 --> 00:42:41,950 So, wat maak hulle anders? 925 00:42:41,950 --> 00:42:45,070 Wat kan ons nie met een, maar nie die ander? 926 00:42:45,070 --> 00:42:52,390 >> PULAK Goyal: Vir die doel van hierdie klas, ek dink it's-- wat doen you-- 927 00:42:52,390 --> 00:42:56,270 >> Spreker 1: So, we-- OK, so vir Byvoorbeeld, as jy ken geheue 928 00:42:56,270 --> 00:42:59,680 en jy het 'n wyser na 'n heelgetal, byvoorbeeld. 929 00:42:59,680 --> 00:43:01,890 As jy probeer om te begin doen wyser rekenkundige 930 00:43:01,890 --> 00:43:05,890 en verder gaan as die bedrag van die geheue wat jou toegeken, sou jy loop in foute. 931 00:43:05,890 --> 00:43:08,250 Ons weet met skikkings, ons sê voor die tyd, OK, ek 932 00:43:08,250 --> 00:43:11,400 wil hierdie wese allocate-- sê, ek wil om te wys 933 00:43:11,400 --> 00:43:13,490 genoeg ruimte vir drie heelgetalle. 934 00:43:13,490 --> 00:43:17,820 En so nou kan ons geheue te behandel asof ons het al drie van dié heelgetalle. 935 00:43:17,820 --> 00:43:19,460 Doen dat die soort van sin maak? 936 00:43:19,460 --> 00:43:22,042 >> PULAK Goyal: Ja. 937 00:43:22,042 --> 00:43:22,542 Ja. 938 00:43:22,542 --> 00:43:24,778 >> GEHOOR: So 'n ster skikking, is dat die toeken 1 939 00:43:24,778 --> 00:43:26,657 om die 0-indeks van die skikking? 940 00:43:26,657 --> 00:43:27,365 PULAK Goyal: Ja. 941 00:43:27,365 --> 00:43:31,160 942 00:43:31,160 --> 00:43:34,439 >> GEHOOR: So, wat is na die volgende twee lyne in terme van the-- ek 943 00:43:34,439 --> 00:43:36,980 verstaan ​​dat jy probeer om wyser rekenkundige hier gebruik, 944 00:43:36,980 --> 00:43:39,355 maar weer, ek verstaan ​​nie wat wyser rekenkundige is. 945 00:43:39,355 --> 00:43:43,869 So die skikking plus 1, jy is sê dat jy nou 946 00:43:43,869 --> 00:43:47,540 gaan wil om te praat oor die eerste indeks in die skikking. 947 00:43:47,540 --> 00:43:50,050 >> PULAK Goyal: Right, en so die rede wat werk is skikking, 948 00:43:50,050 --> 00:43:52,970 hier, kan ons van dink as 'n int ster. 949 00:43:52,970 --> 00:43:56,110 En so wanneer ons aanwijzer rekenkundige op dit, onthou wat die formule waar 950 00:43:56,110 --> 00:43:59,020 ons the-- Ek dink alles die huidige adres is 951 00:43:59,020 --> 00:44:02,100 en dan wanneer ons by te voeg 1 om dit, het ons eintlik 952 00:44:02,100 --> 00:44:06,620 vermenigvuldig 1 deur die grootte van die ding wat ons manipuleer. 953 00:44:06,620 --> 00:44:09,090 So in hierdie geval, die grootte van 'n int. 954 00:44:09,090 --> 00:44:11,634 En dan beweeg ons stuur deur daardie veel. 955 00:44:11,634 --> 00:44:14,419 >> Spreker 1: So voorgee jy het b verskeidenheid ster. 956 00:44:14,419 --> 00:44:15,335 PULAK Goyal: OK, ja. 957 00:44:15,335 --> 00:44:16,005 Spreker 1: Met jou hand. 958 00:44:16,005 --> 00:44:16,505 Gaan hier. 959 00:44:16,505 --> 00:44:18,350 PULAK Goyal: Of ek kan just-- ja. 960 00:44:18,350 --> 00:44:23,660 So here-- OK, so opgestel by die begin, is net reg hier. 961 00:44:23,660 --> 00:44:29,155 So wanneer ons dereference skikking, was ons net na die eerste blok hier. 962 00:44:29,155 --> 00:44:36,620 Maar nou dat ek verskeidenheid plus 1 doen, sodat is-- dat pyl is nou hier. 963 00:44:36,620 --> 00:44:38,250 Doen dit maak sin? 964 00:44:38,250 --> 00:44:46,690 Reg, want hierdie blok is grootte int, wat is 4 grepe. 965 00:44:46,690 --> 00:44:53,540 En so, wat ons doen is ons beweeg dat wyser deur 4 grepe oor. 966 00:44:53,540 --> 00:44:56,080 Wanneer ons somme maak op dit, sal dit altyd 967 00:44:56,080 --> 00:44:59,730 beweeg dit deur inkremente van 4 grepe. 968 00:44:59,730 --> 00:45:01,902 Want dit is soos 'n int ster. 969 00:45:01,902 --> 00:45:04,970 Maak dit sin? 970 00:45:04,970 --> 00:45:05,470 OK. 971 00:45:05,470 --> 00:45:07,770 >> GEHOOR: So die dinge wat in die skikking was 5 grepe, wil ons dit te skuif 5 bytes-- 972 00:45:07,770 --> 00:45:10,853 >> PULAK Goyal: Right, so as ons het 'n char ster, wil ons dit te skuif met slegs 1 byte. 973 00:45:10,853 --> 00:45:13,670 So in die geval van char sterre, dit sou net beweeg dit oor met 1. 974 00:45:13,670 --> 00:45:15,420 GEHOOR: Om die kry volgende wat jy 'n ster nodig het. 975 00:45:15,420 --> 00:45:18,099 PULAK Goyal: Ja, ja, doen dit maak sin? 976 00:45:18,099 --> 00:45:19,890 Spreker 1: Ons kan gesels oor dit meer later. 977 00:45:19,890 --> 00:45:21,530 PULAK Goyal: Ja, ja, vir seker. 978 00:45:21,530 --> 00:45:23,214 OK, cool. 979 00:45:23,214 --> 00:45:24,630 Kom ons beweeg op na die volgende afdeling. 980 00:45:24,630 --> 00:45:27,182 981 00:45:27,182 --> 00:45:28,140 Spreker 1: O, OK cool. 982 00:45:28,140 --> 00:45:29,205 Ja, dit is my. 983 00:45:29,205 --> 00:45:30,330 Alle reg, awesome. 984 00:45:30,330 --> 00:45:35,064 OK, cool, so nou is ons op 'n bietjie meer algemene inligting oor die geheue. 985 00:45:35,064 --> 00:45:37,730 Ook, ek waardeer die feit dat hulle redelik vinnig gaan. 986 00:45:37,730 --> 00:45:40,230 Dit is 'n baie materiaal te kry deur in 'n uur en 'n half. 987 00:45:40,230 --> 00:45:42,880 Maar as daar enige onderwerpe wat jy wil meer in-diepte ingaan, 988 00:45:42,880 --> 00:45:44,630 ons gaan hê kantoorure hierdie week 989 00:45:44,630 --> 00:45:46,340 waar jy kan gesels met ons een op een. 990 00:45:46,340 --> 00:45:49,240 Of jy kan net kom by die beëindig en ons sal gesels oor dinge. 991 00:45:49,240 --> 00:45:52,130 En soos altyd, voel vry om vrae te vra. 992 00:45:52,130 --> 00:45:52,695 Awesome. 993 00:45:52,695 --> 00:45:55,820 So hier is ons prentjie van geheue wat ons gesien het in 'n miljard keer lesing. 994 00:45:55,820 --> 00:45:58,610 En ons weet dat die stapel groei van die onderkant 995 00:45:58,610 --> 00:46:00,214 en die hoop groei af. 996 00:46:00,214 --> 00:46:03,380 En wat is die verskil tussen dinge dat ons hou op die hoop en dinge 997 00:46:03,380 --> 00:46:05,981 dat ons hou op die stapel? 998 00:46:05,981 --> 00:46:07,397 Iemand gooi iets daar buite. 999 00:46:07,397 --> 00:46:10,806 1000 00:46:10,806 --> 00:46:11,780 Ja. 1001 00:46:11,780 --> 00:46:14,215 >> GEHOOR: Is dit stapel vir die dinge wat net is 1002 00:46:14,215 --> 00:46:18,095 verganklike veranderlikes wat ons is net verklaar die gebruik van sekere funksies? 1003 00:46:18,095 --> 00:46:19,220 Spreker 1: Pragtige, ja. 1004 00:46:19,220 --> 00:46:23,007 So enige tyd waar, laat sê ons is in 'n funksie, 1005 00:46:23,007 --> 00:46:24,590 en ons het net 'n paar plaaslike veranderlikes. 1006 00:46:24,590 --> 00:46:26,214 Diegene gaan eindig op die stapel. 1007 00:46:26,214 --> 00:46:30,020 Indien plaas, malloc noem ons en eintlik geheue toeken, 1008 00:46:30,020 --> 00:46:32,290 wat altyd kom van die hoop. 1009 00:46:32,290 --> 00:46:35,100 So, ja Cool? 1010 00:46:35,100 --> 00:46:38,672 >> En so onthou dat enige geheue dat jy met behulp van Ken malloc, 1011 00:46:38,672 --> 00:46:40,130 wat gaan om te eindig op die hoop. 1012 00:46:40,130 --> 00:46:42,019 En as jy vergeet om free dit die rekenaar 1013 00:46:42,019 --> 00:46:43,810 gaan nie om te weet dat jy klaar is met dit. 1014 00:46:43,810 --> 00:46:45,560 So dit is net gaan om te hang daar in die geheue. 1015 00:46:45,560 --> 00:46:47,412 En jy is in wese lekkende dat die geheue. 1016 00:46:47,412 --> 00:46:48,120 Jy verloor dit. 1017 00:46:48,120 --> 00:46:51,840 Omdat jy nooit die rekenaar aan, hey ek klaar gebruik dit, voel vry om te gebruik, 1018 00:46:51,840 --> 00:46:53,632 sit ander dinge is daar. 1019 00:46:53,632 --> 00:46:54,470 Koel. 1020 00:46:54,470 --> 00:46:55,928 Enige vrae is daar? 1021 00:46:55,928 --> 00:46:56,428 Ja. 1022 00:46:56,428 --> 00:46:58,808 >> GEHOOR: So watter soort geheue is stapel? 1023 00:46:58,808 --> 00:46:59,974 Nie dinamiese voer, gedelegeer? 1024 00:46:59,974 --> 00:47:01,200 Wat sou jy dit noem? 1025 00:47:01,200 --> 00:47:03,870 >> Spreker 1: Sure, sodat jy kan dink aan dit as 'n plaaslike veranderlikes. 1026 00:47:03,870 --> 00:47:10,137 Werklike oproepe om funksies gaan stapel. 1027 00:47:10,137 --> 00:47:10,720 Enigiets anders? 1028 00:47:10,720 --> 00:47:11,220 Ja? 1029 00:47:11,220 --> 00:47:14,627 GEHOOR: Hoe kan jy gratis die geheue wat jy bygevoeg the-- 1030 00:47:14,627 --> 00:47:17,710 Spreker 1: Natuurlik, so wanneer jy ken geheue op die hoop, malloc bel jou. 1031 00:47:17,710 --> 00:47:20,543 En so is daar dan wat gee jou terug 'n wyser na 'n paar adres in die geheue. 1032 00:47:20,543 --> 00:47:22,630 So jy sê dat wyser genoem, reg? 1033 00:47:22,630 --> 00:47:24,970 Dan, jy moet net sê free wyser. 1034 00:47:24,970 --> 00:47:27,351 En dat bevry die geheue. 1035 00:47:27,351 --> 00:47:27,850 Koel. 1036 00:47:27,850 --> 00:47:28,660 Ander vrae? 1037 00:47:28,660 --> 00:47:28,880 Ja. 1038 00:47:28,880 --> 00:47:30,838 >> GEHOOR: Wat beteken dinamiese toegeken beteken? 1039 00:47:30,838 --> 00:47:32,345 1040 00:47:32,345 --> 00:47:35,381 >> Spreker 1: dinamiese toegeken beteken, in die loop van jou program. 1041 00:47:35,381 --> 00:47:37,630 So wanneer jy malloc roep die middel van jou program, 1042 00:47:37,630 --> 00:47:40,510 aan die begin van die program, daar is geen geheue toegeken. 1043 00:47:40,510 --> 00:47:42,600 En as die rekenaar stap vir stap deur daardie kode, 1044 00:47:42,600 --> 00:47:44,280 dit gaan om die geheue toeken. 1045 00:47:44,280 --> 00:47:46,507 So dit is wat ons bedoel met dinamiese. 1046 00:47:46,507 --> 00:47:47,090 Goeie vraag. 1047 00:47:47,090 --> 00:47:48,309 Ja? 1048 00:47:48,309 --> 00:47:50,809 GEHOOR: Wanneer jy 'n definieer skikking met die vierkantige hakies, 1049 00:47:50,809 --> 00:47:54,154 doen dit nog steeds [onhoorbaar]? 1050 00:47:54,154 --> 00:47:55,570 Spreker 1: Dit is 'n goeie vraag. 1051 00:47:55,570 --> 00:48:00,320 Ek dink as jy 'n verskeidenheid toeken, dit is eintlik sit dit op die stapel. 1052 00:48:00,320 --> 00:48:03,008 Ek is nie positief oor dat, so moet my nie aanhaal. 1053 00:48:03,008 --> 00:48:04,430 >> Spreker 2: Ek dink it-- ja dit sit dit op die stapel. 1054 00:48:04,430 --> 00:48:05,763 >> Spreker 1: sit dit op die stapel. 1055 00:48:05,763 --> 00:48:07,044 OK, koel, bevestig. 1056 00:48:07,044 --> 00:48:07,710 Ander vrae? 1057 00:48:07,710 --> 00:48:08,030 Ja? 1058 00:48:08,030 --> 00:48:10,946 >> GEHOOR: Wanneer jy malloc delegeer, doen nie outomaties die rekenaar 1059 00:48:10,946 --> 00:48:12,910 toeken geheue vir jou veranderlikes? 1060 00:48:12,910 --> 00:48:14,660 Spreker 1: Ja, vir jou plaaslike veranderlikes, 1061 00:48:14,660 --> 00:48:16,724 dit outomaties plaas geheue op die stapel. 1062 00:48:16,724 --> 00:48:18,640 GEHOOR: So, wat is die punt van die gebruik van malloc? 1063 00:48:18,640 --> 00:48:19,840 Spreker 1: Wat is die punt van die gebruik van malloc? 1064 00:48:19,840 --> 00:48:22,850 So het ons 'n klomp van die voorbeelde, soos byvoorbeeld die gebruik van swap, 1065 00:48:22,850 --> 00:48:25,690 waar ons wil die omvang van die veranderlike om iets te wees 1066 00:48:25,690 --> 00:48:27,940 verder as net sy funksie oproep. 1067 00:48:27,940 --> 00:48:29,875 En ons wil iets dat ons kan rond te slaag 1068 00:48:29,875 --> 00:48:31,750 en dat ons kan toegang van verskillende plekke. 1069 00:48:31,750 --> 00:48:33,791 Dit is waar ons wil wil sit geheue op die hoop. 1070 00:48:33,791 --> 00:48:37,835 Sodat al die verskillende funksies dit kan oopmaak. 1071 00:48:37,835 --> 00:48:40,510 >> GEHOOR: Kan jy net verduidelik dat? 1072 00:48:40,510 --> 00:48:44,770 >> Spreker 1: So een opsie is-- so die vraag was, kan ons net allocate-- 1073 00:48:44,770 --> 00:48:47,660 Jammer, ons kan verklaar globale veranderlike, in wese. 1074 00:48:47,660 --> 00:48:48,560 Dit is een opsie. 1075 00:48:48,560 --> 00:48:50,893 Maar met 'n baie van die, diegene geneig om werklik te kry morsige. 1076 00:48:50,893 --> 00:48:52,847 En ons in die algemeen dink van daardie as slegte ontwerp. 1077 00:48:52,847 --> 00:48:53,821 Ja. 1078 00:48:53,821 --> 00:48:56,580 Cool, enige ander vrae? 1079 00:48:56,580 --> 00:48:57,140 Awesome. 1080 00:48:57,140 --> 00:48:58,789 OK, beweeg op. 1081 00:48:58,789 --> 00:49:00,580 So dit is eintlik hoe ons ken geheue. 1082 00:49:00,580 --> 00:49:02,670 Ons het gepraat oor hierdie 'n bietjie. 1083 00:49:02,670 --> 00:49:04,240 Ons gebruik hierdie funksie genoem malloc. 1084 00:49:04,240 --> 00:49:07,850 En jy vertel dit hoeveel bytes in geheue, so hoeveel bytes op die hoop, 1085 00:49:07,850 --> 00:49:08,610 jy wil. 1086 00:49:08,610 --> 00:49:13,120 En dit gaan na die adres terugkeer, so 'n verwysing na 'n stuk van die geheue 1087 00:49:13,120 --> 00:49:14,500 dat dit toegeken vir jou. 1088 00:49:14,500 --> 00:49:17,080 So die tipe gaan leemte ster. 1089 00:49:17,080 --> 00:49:21,310 Dit gaan 'n wyser te wees alles wat jy besluit om daar in te sit. 1090 00:49:21,310 --> 00:49:23,530 Enige tyd wat jy noem malloc, het ons reeds gesê 1091 00:49:23,530 --> 00:49:25,640 jy het om dit te bevry sodat ons nie die geheue lekkasies. 1092 00:49:25,640 --> 00:49:27,170 >> Wat is die ander ding dat jy absoluut 1093 00:49:27,170 --> 00:49:29,185 moet elke enkele doen tyd wat jy malloc noem? 1094 00:49:29,185 --> 00:49:31,210 1095 00:49:31,210 --> 00:49:32,210 OK, jy het om dit te bevry. 1096 00:49:32,210 --> 00:49:34,010 Wat is die ander ding? 1097 00:49:34,010 --> 00:49:35,890 Check for null, mooi. 1098 00:49:35,890 --> 00:49:38,850 So, ja, dit is reg daar op die bord. 1099 00:49:38,850 --> 00:49:42,120 As jy sou probeer om te wys geheue en jy het geen geheue gelaat, 1100 00:49:42,120 --> 00:49:44,940 die rekenaar gaan om te sê, Ek het niks om jou te gee. 1101 00:49:44,940 --> 00:49:47,650 En dit gee jou terug null. 1102 00:49:47,650 --> 00:49:48,400 Vrae oor dit? 1103 00:49:48,400 --> 00:49:49,290 Ja. 1104 00:49:49,290 --> 00:49:52,995 >> GEHOOR: Hoekom sou jy ooit wil verklaar 'n muis met 'n spesifieke tipe 1105 00:49:52,995 --> 00:49:56,329 wanneer leemte ster kan hanteer alle vorme wyser anyways? 1106 00:49:56,329 --> 00:49:57,370 Spreker 1: Goeie vraag. 1107 00:49:57,370 --> 00:50:00,590 Hoekom sal ons sê int ster teenoor star nietig 1108 00:50:00,590 --> 00:50:03,740 wanneer leemte star alles kan hanteer? 1109 00:50:03,740 --> 00:50:06,390 So ons wil nie om ooit uitdruklik gooi wenke. 1110 00:50:06,390 --> 00:50:07,940 Dis net slegte praktyk. 1111 00:50:07,940 --> 00:50:11,850 Maar ons sal praat oor int sterre net soos 'n begrip van, 1112 00:50:11,850 --> 00:50:14,195 dit is 'n verwysing na 'n heelgetal. 1113 00:50:14,195 --> 00:50:14,850 >> GEHOOR: OK. 1114 00:50:14,850 --> 00:50:17,558 >> Spreker 1: Ja, en dit laat jy die waardes in dit te manipuleer 1115 00:50:17,558 --> 00:50:18,667 as heelgetalle. 1116 00:50:18,667 --> 00:50:20,008 >> GEHOOR: O, OK. 1117 00:50:20,008 --> 00:50:22,250 En leeg ster sal nie toelaat dat jy dit doen? 1118 00:50:22,250 --> 00:50:25,070 >> Spreker 1: Dit hang af van die konteks Ja, so moenie bekommerd wees nie 1119 00:50:25,070 --> 00:50:28,460 nie te veel bekommerd wees oor die tipe daar. 1120 00:50:28,460 --> 00:50:32,620 Weet net dat, in die algemeen, malloc stuur 'n wyser na iets. 1121 00:50:32,620 --> 00:50:33,520 Goeie vraag. 1122 00:50:33,520 --> 00:50:37,260 >> GEHOOR: Waarom vermenigvuldig jy dit keer 10? [Onhoorbaar]. 1123 00:50:37,260 --> 00:50:40,150 >> Spreker 1: Natuurlik, so ek was net doen ewekansige voorbeeld hier waar 1124 00:50:40,150 --> 00:50:42,840 Ek wou genoeg om toe te ken ruimte om 10 heelgetalle te stoor. 1125 00:50:42,840 --> 00:50:44,320 Net 'n ewekansige keuse. 1126 00:50:44,320 --> 00:50:45,250 Ja. 1127 00:50:45,250 --> 00:50:45,440 Ja, what's up? 1128 00:50:45,440 --> 00:50:47,440 >> GEHOOR: Wat doen jy beteken deur die nagaan for? 1129 00:50:47,440 --> 00:50:51,351 Wil jy die kyk wyser for null of die malloc? 1130 00:50:51,351 --> 00:50:52,350 Spreker 1: Ja, presies. 1131 00:50:52,350 --> 00:50:54,599 So die vraag is, wat bedoel ons met 'n tjek deur nul? 1132 00:50:54,599 --> 00:50:57,880 Ons wil aan- altyd ons malloc noem en ons is terug 'n wyser, 1133 00:50:57,880 --> 00:51:01,110 ons wil sê, is wyser gelyk aan null? 1134 00:51:01,110 --> 00:51:02,610 So letterlik PTR. 1135 00:51:02,610 --> 00:51:05,620 Is PTR gelyk aan null. 1136 00:51:05,620 --> 00:51:06,958 Ja. 1137 00:51:06,958 --> 00:51:08,832 GEHOOR: So, was ek soort van wonder, as jy 1138 00:51:08,832 --> 00:51:14,013 inisialiseer die wyser in malloc, doen dit verwys na die begin van malloc? 1139 00:51:14,013 --> 00:51:15,097 Want as dit is 'n array-- 1140 00:51:15,097 --> 00:51:16,554 Spreker 1: Dit is 'n groot vraag. 1141 00:51:16,554 --> 00:51:19,200 Ja, as jy malloc noem, die wyser wat it-- kom ons sê, 1142 00:51:19,200 --> 00:51:21,700 so hier ken ons 10 grepe van die geheue. 1143 00:51:21,700 --> 00:51:23,830 So, ek is jammer, genoeg ruimte vir 10 heelgetalle, 1144 00:51:23,830 --> 00:51:28,220 ons gaan na die adres van kry dat die eerste deel van die geheue. 1145 00:51:28,220 --> 00:51:29,880 Dit is 'n goeie vraag. 1146 00:51:29,880 --> 00:51:30,481 Ja. 1147 00:51:30,481 --> 00:51:34,810 >> GEHOOR: Deur die toekenning 10 wydverspreide heelgetalle, 1148 00:51:34,810 --> 00:51:38,177 jy kan eintlik gebruik dat wyser as like-- byna 1149 00:51:38,177 --> 00:51:39,372 soos 'n verskeidenheid van heelgetalle? 1150 00:51:39,372 --> 00:51:41,830 Spreker 1: Ja, so kan jy gebruik dit as 'n verskeidenheid van heelgetalle? 1151 00:51:41,830 --> 00:51:45,970 Ja, presies, dit is wat Pulak net het jy 'n paar skyfies on-- gelede 1152 00:51:45,970 --> 00:51:48,680 waar ons sê, OK, dit is regtig net soort of-- ons 1153 00:51:48,680 --> 00:51:50,805 kan dink dit as 'n verskeidenheid van 10 heelgetalle. 1154 00:51:50,805 --> 00:51:52,222 Dit gebeur net te wees op die hoop. 1155 00:51:52,222 --> 00:51:54,971 GEHOOR: maar jy kan nie toegang dit met vierkantige hakienotasie? 1156 00:51:54,971 --> 00:51:58,220 Spreker 1: Jy kan eintlik toegang dit met vierkantige hakienotasie, ja. 1157 00:51:58,220 --> 00:52:00,221 Jy kan dit te hanteer dieselfde. 1158 00:52:00,221 --> 00:52:00,720 Ja. 1159 00:52:00,720 --> 00:52:02,420 >> GEHOOR: Waarom sou wyser ooit nul wees? 1160 00:52:02,420 --> 00:52:04,170 >> Spreker 1: Hoekom sou wyser ooit nul wees? 1161 00:52:04,170 --> 00:52:06,570 As jy sal gebruik al die geheue op jou hoop. 1162 00:52:06,570 --> 00:52:09,141 As jou program up eet, up eet, eet tot geheue, 1163 00:52:09,141 --> 00:52:11,890 en daar is niks links, dan malloc gaan say-- as jy sê, 1164 00:52:11,890 --> 00:52:14,760 Ek wil 100 meer grepe, dit gaan om te sê, ek het nie 100 grepe. 1165 00:52:14,760 --> 00:52:15,740 Hier is null. 1166 00:52:15,740 --> 00:52:18,780 Dit beteken, het misluk Ek. 1167 00:52:18,780 --> 00:52:20,516 Ja. 1168 00:52:20,516 --> 00:52:22,830 >> GEHOOR: In daardie geval, null niks is nie, reg? 1169 00:52:22,830 --> 00:52:24,110 >> Spreker 1: Ja, in daardie geval nul is niks nie. 1170 00:52:24,110 --> 00:52:24,943 Jy het geen adres. 1171 00:52:24,943 --> 00:52:28,065 Daar is geen nagedagtenis. 1172 00:52:28,065 --> 00:52:31,500 Alle reg, beweeg op. 1173 00:52:31,500 --> 00:52:34,976 OK, laat ons praat regtig vinnig oor buffer oorloop. 1174 00:52:34,976 --> 00:52:38,210 Wanneer kan ons teëkom buffer oorloop? 1175 00:52:38,210 --> 00:52:42,980 Kom ons sê ons het ons a-- ken 'n stuk van die geheue, 1176 00:52:42,980 --> 00:52:44,720 en ons gaan die string in te skryf. 1177 00:52:44,720 --> 00:52:47,240 En ons gaan om te sê, OK, ek gaan om te wys 1178 00:52:47,240 --> 00:52:49,320 genoeg plek vir ses karakters. 1179 00:52:49,320 --> 00:52:51,680 En ek gaan om te vra die gebruiker vir 'n paar insette. 1180 00:52:51,680 --> 00:52:54,470 En die gebruiker insette, byvoorbeeld, hallo. 1181 00:52:54,470 --> 00:52:56,430 En wat pas perfek goed, want ons het 1182 00:52:56,430 --> 00:53:00,790 ruimte vir al die karakters van hello, en die nul eindig karakter. 1183 00:53:00,790 --> 00:53:02,840 Baie van die kamer, geen probleem. 1184 00:53:02,840 --> 00:53:08,010 >> Maar wat as ons die geleentheid te gee vir 'n bose gebruiker om ons program te gebruik, 1185 00:53:08,010 --> 00:53:13,152 en hulle tik in nie ses karakters, of nie vyf karakters, maar 'n miljoen. 1186 00:53:13,152 --> 00:53:15,860 Hulle hou tik, en tik, en tik, wat gaan gebeur? 1187 00:53:15,860 --> 00:53:18,220 Wel, ons gee net die rekenaar enough-- of jammer, 1188 00:53:18,220 --> 00:53:23,350 Ons het net hierdie string genoeg ruimte vir 5 karakters. 1189 00:53:23,350 --> 00:53:28,300 So, gaan ons iets soos te kry hierdie, waar die bose persoon wat is 1190 00:53:28,300 --> 00:53:31,750 tik in insette kan oorskryf die grootte van die buffer, 1191 00:53:31,750 --> 00:53:35,922 en kan eintlik gaan verby die bedrag dat dit oorspronklik is toegeken. 1192 00:53:35,922 --> 00:53:38,380 En dan wat jy kan doen, is die regtig verkeerde ding wat jy kan doen, 1193 00:53:38,380 --> 00:53:40,260 is oorskryf die terugkeer adres. 1194 00:53:40,260 --> 00:53:42,010 Wat beteken basies jy kan soort van te neem 1195 00:53:42,010 --> 00:53:45,110 beheer van die gedrag van die program. 1196 00:53:45,110 --> 00:53:47,880 So op 'n baie hoë vlak buffer oorloop is wanneer 1197 00:53:47,880 --> 00:53:49,960 jy ken 'n paar bedrag van die geheue. 1198 00:53:49,960 --> 00:53:53,060 En dan you-- dit omdat jy neem die gebruiker se toevoer of iets 1199 00:53:53,060 --> 00:53:57,190 soos that-- jy gaan oor die grense van wat jy oorspronklik het toegeken 1200 00:53:57,190 --> 00:53:59,955 en begin geknoei jou program. 1201 00:53:59,955 --> 00:54:00,455 Ja? 1202 00:54:00,455 --> 00:54:03,220 >> GEHOOR: Hoekom sou nie wat net terug n segmentering skuld? 1203 00:54:03,220 --> 00:54:05,594 >> Spreker 1: Hoekom sou dit nie terug n segmentering skuld? 1204 00:54:05,594 --> 00:54:06,570 Dit kon. 1205 00:54:06,570 --> 00:54:10,030 Soms is die samesteller of tydens een van jou runtime 1206 00:54:10,030 --> 00:54:11,430 is eintlik gaan om seker te maak dat. 1207 00:54:11,430 --> 00:54:13,890 As sekere dinge gebeur, en dit is soort van 'n laer vlak, 1208 00:54:13,890 --> 00:54:15,610 dan moet jy weet. 1209 00:54:15,610 --> 00:54:18,820 Maar as jy nie ontwerp hierdie stelsels behoorlik, 1210 00:54:18,820 --> 00:54:21,170 dan moet jy die kans van nie vang dit en net 1211 00:54:21,170 --> 00:54:24,844 sodat die rekenaar take-- die slegte mens na jou rekenaar te beheer. 1212 00:54:24,844 --> 00:54:25,344 Ja. 1213 00:54:25,344 --> 00:54:26,260 >> GEHOOR: [onhoorbaar]? 1214 00:54:26,260 --> 00:54:28,934 1215 00:54:28,934 --> 00:54:29,600 Spreker 1: Natuurlik. 1216 00:54:29,600 --> 00:54:33,800 O, as ek buffer sê, ek bedoel net die hoeveelheid geheue wat jy toegeken. 1217 00:54:33,800 --> 00:54:39,090 So hier het ek gesê: Ag, het ons toegeken ses char-- genoeg plek vir ses karakters. 1218 00:54:39,090 --> 00:54:42,880 En ek het net noem dat my buffer waar ek kan inligting skryf. 1219 00:54:42,880 --> 00:54:44,390 Ja. 1220 00:54:44,390 --> 00:54:46,791 Enige ander vrae oor hierdie? 1221 00:54:46,791 --> 00:54:47,290 Ja. 1222 00:54:47,290 --> 00:54:49,150 >> GEHOOR: Hoe doen jy dit stop? 1223 00:54:49,150 --> 00:54:50,274 Hoe kan jy dit stop? 1224 00:54:50,274 --> 00:54:51,440 Spreker 1: Awesome vraag. 1225 00:54:51,440 --> 00:54:52,240 Hoe kan jy dit stop? 1226 00:54:52,240 --> 00:54:54,110 Hoe kan jy buffer oorloop voorkom? 1227 00:54:54,110 --> 00:54:59,160 Wel een manier om dit te doen, is iets soos GetString, waar ons voortdurend te verhoog 1228 00:54:59,160 --> 00:55:03,200 die bedrag van die geheue dat ons ken As die gebruiker 'n baie van die teks. 1229 00:55:03,200 --> 00:55:07,570 Nog die ding is, net as jy wil ses karakters, doen 'n vinnige check. 1230 00:55:07,570 --> 00:55:11,220 Sê net insette ses karakters. 1231 00:55:11,220 --> 00:55:12,444 Ja. 1232 00:55:12,444 --> 00:55:14,360 So kom ons sê jy was werk on-- ons gaan 1233 00:55:14,360 --> 00:55:16,985 om te gaan na die web dinge 'n bietjie later in die course-- maar laat 1234 00:55:16,985 --> 00:55:21,422 sê jy werk op 'n vorm, sou jy net beperk hoeveel kan ingehandig. 1235 00:55:21,422 --> 00:55:22,378 Ja. 1236 00:55:22,378 --> 00:55:24,768 >> GEHOOR: GetString trek geheue van stapel, reg? 1237 00:55:24,768 --> 00:55:25,444 Net om te verduidelik? 1238 00:55:25,444 --> 00:55:26,485 Spreker 1: Een meer tyd? 1239 00:55:26,485 --> 00:55:28,400 GEHOOR: Is GetString neem geheue van die stapel? 1240 00:55:28,400 --> 00:55:31,210 Spreker 1: Ek glo Getm-- get int neem geheue van die hoop 1241 00:55:31,210 --> 00:55:32,911 want dit alloc noem. 1242 00:55:32,911 --> 00:55:33,452 GEHOOR: Oh. 1243 00:55:33,452 --> 00:55:33,951 OK. 1244 00:55:33,951 --> 00:55:35,750 Spreker 1: Ja, malloc en realloc. 1245 00:55:35,750 --> 00:55:37,120 Ander vrae? 1246 00:55:37,120 --> 00:55:37,803 Ja. 1247 00:55:37,803 --> 00:55:40,650 >> GEHOOR: So deur die definisie van die grootte van die buffer, 1248 00:55:40,650 --> 00:55:42,733 jy iemand uit te verhoed in staat is om die kode te spuit 1249 00:55:42,733 --> 00:55:45,700 wat kan gly verby die [onhoorbaar]. 1250 00:55:45,700 --> 00:55:48,130 >> Spreker 1: So, met die definisie van die grootte van die buffer, 1251 00:55:48,130 --> 00:55:50,760 jy gesê het, OK hier is hoe veel geheue ons kan gebruik. 1252 00:55:50,760 --> 00:55:55,550 As jy toelaat dat die gebruiker om te skryf oor dit, dan is jy gaan om te loop in probleme. 1253 00:55:55,550 --> 00:55:57,930 Maak sin. 1254 00:55:57,930 --> 00:55:59,370 Awesome. 1255 00:55:59,370 --> 00:56:00,640 Kom ons beweeg saam. 1256 00:56:00,640 --> 00:56:02,320 Alles reg. 1257 00:56:02,320 --> 00:56:06,652 Praat van foute, hier is 'n paar algemene fout boodskappe 1258 00:56:06,652 --> 00:56:09,860 wat dalk het getoon terwyl jy was kodering, werk op jou probleem stelle. 1259 00:56:09,860 --> 00:56:12,320 Goeie kans dat een van hierdie dui op die quiz 1260 00:56:12,320 --> 00:56:15,090 As verlede jaar is 'n aanduiding. 1261 00:56:15,090 --> 00:56:17,580 So, antwoorde is soort van hier op die bord. 1262 00:56:17,580 --> 00:56:19,510 Maar voel vry paar meer uit te skree. 1263 00:56:19,510 --> 00:56:21,280 >> Hoekom kan 'n segmentering skuld gebeur? 1264 00:56:21,280 --> 00:56:24,279 Hoekom kan jy 'n fout kry segmentering wanneer jy die bestuur van jou program? 1265 00:56:24,279 --> 00:56:26,760 1266 00:56:26,760 --> 00:56:28,230 >> GEHOOR: [onhoorbaar]. 1267 00:56:28,230 --> 00:56:29,500 >> Spreker 1: Goed. 1268 00:56:29,500 --> 00:56:32,820 Ja, as ons probeer om toegang geheue wat nie is aan ons gegee. 1269 00:56:32,820 --> 00:56:34,610 As ons dereference n null pointer. 1270 00:56:34,610 --> 00:56:38,610 Byvoorbeeld, as ons malloc noem, en vergeet om te kyk of dit null, 1271 00:56:38,610 --> 00:56:42,250 en ons het net probeer om dit te gebruik, sal die rekenaar se gaan ons 'n segmentering skuld te gee. 1272 00:56:42,250 --> 00:56:42,750 Goed. 1273 00:56:42,750 --> 00:56:46,680 Wat van implisiete verklaring van funksie? 1274 00:56:46,680 --> 00:56:48,589 Wat beteken dit? 1275 00:56:48,589 --> 00:56:51,380 GEHOOR: Jy probeer om 'n gebruik funksie wat jy nie gedefinieer nie. 1276 00:56:51,380 --> 00:56:52,130 Spreker 1: Goed. 1277 00:56:52,130 --> 00:56:54,504 Jy probeer om 'n funksie te gebruik dat jy nie gedefinieer nie. 1278 00:56:54,504 --> 00:56:56,000 So wat kan wees een van twee dinge. 1279 00:56:56,000 --> 00:56:59,320 Miskien was dit soos die voorbeeld Camille het jy vroeër. 1280 00:56:59,320 --> 00:57:02,330 En jy het 'n hooffunksie wat roep iets genoem kubus. 1281 00:57:02,330 --> 00:57:04,371 En kom ons sê jy het vergeet hierdie prototipe te skryf. 1282 00:57:04,371 --> 00:57:07,540 Jy het vergeet om te sê, hey rekenaar, Ek het hierdie funksie genoem kubus. 1283 00:57:07,540 --> 00:57:09,380 Jy sal dit later te sien. 1284 00:57:09,380 --> 00:57:12,440 Kom ons sê jy het vergeet om die skryf prototipe, kan jy hierdie fout kry. 1285 00:57:12,440 --> 00:57:14,820 Nog 'n ding is, kom ons sê jy probeer om printf gebruik, 1286 00:57:14,820 --> 00:57:16,880 en vergeet om in te sluit die standaard biblioteek, 1287 00:57:16,880 --> 00:57:20,240 dan is dit gaan om te sê implisiete verklaring van funksie. 1288 00:57:20,240 --> 00:57:22,800 En laaste, maar nie die minste nie, onverklaarde identifiseerder. 1289 00:57:22,800 --> 00:57:23,300 Ja. 1290 00:57:23,300 --> 00:57:24,841 >> GEHOOR: Jy het 'n probleem omvang. 1291 00:57:24,841 --> 00:57:28,728 Soos miskien jy probeer om roep 'n plaaslike veranderlike wat 1292 00:57:28,728 --> 00:57:30,884 in 'n ander soort van die gebied. 1293 00:57:30,884 --> 00:57:33,550 Spreker 1: Groot, so as jy ' 'n veranderlike wat nie in omvang, 1294 00:57:33,550 --> 00:57:36,890 en jy probeer om dit te gebruik, jy gaan in die moeilikheid te kry. 1295 00:57:36,890 --> 00:57:40,960 En net meer algemeen, kom ons sê jy probeer om x te gebruik, met die steeds sê int 1296 00:57:40,960 --> 00:57:45,140 x is gelyk aan 5 is, dan is jy gaan loop in die moeilikheid. 1297 00:57:45,140 --> 00:57:47,640 Verskoon my, vrae oor hierdie? 1298 00:57:47,640 --> 00:57:49,330 Awesome, chugging reg langs. 1299 00:57:49,330 --> 00:57:55,692 >> OK, rekursie, waarom might-- laat see-- Ek het my sch-- oh hier gaan ons, 1300 00:57:55,692 --> 00:57:57,400 maak net seker ons rofweg op skedule. 1301 00:57:57,400 --> 00:57:59,060 Alle reg, cool. 1302 00:57:59,060 --> 00:58:03,150 OK, rekursie, die algemene idee van rekursie, 'n rekursiewe funksie 1303 00:58:03,150 --> 00:58:05,380 is 'n funksie wat homself noem. 1304 00:58:05,380 --> 00:58:08,170 OK, so dit is wat ek bedoel met 'n program konsep 1305 00:58:08,170 --> 00:58:11,130 waardeur 'n funksie noem self. 1306 00:58:11,130 --> 00:58:16,210 Wat some-- wat is 'n sou wees goeie rede om rekursie gebruik? 1307 00:58:16,210 --> 00:58:17,550 Wanneer dit dalk nuttig? 1308 00:58:17,550 --> 00:58:20,926 Of whats 'n program wat regtig leen hom tot rekursie? 1309 00:58:20,926 --> 00:58:22,330 >> GEHOOR: Binary search. 1310 00:58:22,330 --> 00:58:25,500 >> Spreker 1: Binary search leen hom tot rekursie, 1311 00:58:25,500 --> 00:58:29,060 omdat jy hierdie probleem het dat jy kan breek in kleiner stukke, 1312 00:58:29,060 --> 00:58:32,330 en voortdurend uit te voer dieselfde algoritme op dit. 1313 00:58:32,330 --> 00:58:37,790 Dit lei tot, in baie gevalle, meer elegante kode wat meer akkuraat. 1314 00:58:37,790 --> 00:58:40,500 Ons is net die voorbeeld van binêre soek. 1315 00:58:40,500 --> 00:58:43,100 Nog 'n voorbeeld is saamsmelt soort. 1316 00:58:43,100 --> 00:58:45,920 Soms, wanneer jy dink van 'n algoritme, soos faktoriaal, 1317 00:58:45,920 --> 00:58:47,410 dit voel net rekursiewe, reg? 1318 00:58:47,410 --> 00:58:52,440 Omdat ons weet dat die faktoriaal van 5 is 'n faktoriaal 4 keer 5. 1319 00:58:52,440 --> 00:58:56,080 En so wanneer jy die opstel van 'n probleem dat die pad, dit voel net rekursiewe. 1320 00:58:56,080 --> 00:58:58,530 Sodat sou 'n goeie manier om dit te skryf. 1321 00:58:58,530 --> 00:58:59,425 Vrae? 1322 00:58:59,425 --> 00:59:00,395 Ja. 1323 00:59:00,395 --> 00:59:01,850 >> GEHOOR: Wat is 'n basis geval? 1324 00:59:01,850 --> 00:59:02,770 >> Spreker 1: Ag wat is 'n basis geval? 1325 00:59:02,770 --> 00:59:04,680 Ek het gesê, moenie vergeet om 'n basis geval sluit. 1326 00:59:04,680 --> 00:59:07,690 Kom ons sê ons skryf 'n faktoriaal funksie, 1327 00:59:07,690 --> 00:59:09,620 en ons was van faktoriaal 5 doen. 1328 00:59:09,620 --> 00:59:12,352 En ons weet dat 'n faktoriaal van 5 is 5 keer 'n faktoriaal van 4, 1329 00:59:12,352 --> 00:59:13,310 blah, blah, blah, blah. 1330 00:59:13,310 --> 00:59:14,360 Hoe weet ons wanneer om te stop? 1331 00:59:14,360 --> 00:59:16,276 Hoe weet ons dat ons eintlik 'n nommer? 1332 00:59:16,276 --> 00:59:20,180 Want as ons gehou roeping faktoriaal, dan sou ons nooit 'n antwoord te kry, reg? 1333 00:59:20,180 --> 00:59:24,470 So wanneer ons weet hoe om stop in die voorbeeld faktoriaal. 1334 00:59:24,470 --> 00:59:25,460 Enigiemand, ja. 1335 00:59:25,460 --> 00:59:27,764 >> GEHOOR: Wanneer die 1 faktoriaal is 1. 1336 00:59:27,764 --> 00:59:28,430 Spreker 1: Goed. 1337 00:59:28,430 --> 00:59:29,530 So ons weet. 1338 00:59:29,530 --> 00:59:33,400 Ons kan aanvaar dat 1 faktoriaal is gelyk aan 1. 1339 00:59:33,400 --> 00:59:36,570 So as ons tot die punt waar Ons noem faktoriaal op 1, 1340 00:59:36,570 --> 00:59:38,050 net voort te gaan en terug te keer 1. 1341 00:59:38,050 --> 00:59:39,180 En dit is jou basis geval. 1342 00:59:39,180 --> 00:59:45,040 Omdat ons weer weet ons getref dat, en ons altyd sal getref dat, sal ons never-- 1343 00:59:45,040 --> 00:59:48,800 sal ons nie net te hou vir ewig gaan. 1344 00:59:48,800 --> 00:59:50,700 Enige ander vrae oor rekursie? 1345 00:59:50,700 --> 00:59:51,630 Ja. 1346 00:59:51,630 --> 00:59:54,420 >> GEHOOR: So wanneer jy terugkeer 1, is dit net outomaties 1347 00:59:54,420 --> 00:59:56,290 sal die program te stop, reg? 1348 00:59:56,290 --> 00:59:59,390 >> Spreker 1: Ja so wanneer jy noem terugkeer 1, if-- kom ons sê, 1349 00:59:59,390 --> 01:00:04,480 Kom ons sê faktoriaal van 2 oproepe faktoriaal van 1, faktoriaal van 1 1350 01:00:04,480 --> 01:00:06,120 sal net hand terug 1. 1351 01:00:06,120 --> 01:00:12,790 En nou faktoriaal van 2 sal sê OK, 2 keer 1 is 2, en terug te keer dat die antwoord. 1352 01:00:12,790 --> 01:00:14,260 Ja. 1353 01:00:14,260 --> 01:00:16,710 >> GEHOOR: Het ons te bekommer oor omvang in rekursie 1354 01:00:16,710 --> 01:00:20,150 wanneer jy gaan in 'n algoritme? 1355 01:00:20,150 --> 01:00:21,880 >> Spreker 1: Ag, ja. 1356 01:00:21,880 --> 01:00:25,060 Ja, jy hoef te bekommer oor omvang in die konteks van rekursie. 1357 01:00:25,060 --> 01:00:29,820 So net die veranderlikes gedefinieer in daardie lopie van die funksie 1358 01:00:29,820 --> 01:00:32,170 gaan nuttig te wees. 1359 01:00:32,170 --> 01:00:33,792 Ja goeie vraag. 1360 01:00:33,792 --> 01:00:35,250 Alle reg, laat ons bly beweeg saam. 1361 01:00:35,250 --> 01:00:37,320 Want ons het 'n baie materiaal om deur te kom. 1362 01:00:37,320 --> 01:00:41,080 Maar soos ek gesê het, voel vry om te tref up kantoorure, of ons na die feit. 1363 01:00:41,080 --> 01:00:42,850 >> Dit is net 'n baie vinnige slide. 1364 01:00:42,850 --> 01:00:45,150 Ons het baie geleer oor navrae en soorte. 1365 01:00:45,150 --> 01:00:47,400 Asseblief, asseblief, asseblief, hierdie afdelings is aanlyn, 1366 01:00:47,400 --> 01:00:51,240 Ek glo op cs50.net/quizzes. 1367 01:00:51,240 --> 01:00:53,762 So gaan neem hierdie grafiek en sit dit op jou resensie vel, 1368 01:00:53,762 --> 01:00:55,470 want daar sal 'n vraag oor hierdie. 1369 01:00:55,470 --> 01:00:56,682 Moet asseblief nie kry dit verkeerd. 1370 01:00:56,682 --> 01:00:58,390 Net baie vinnig, wat hierdie grafiek beteken, 1371 01:00:58,390 --> 01:01:04,370 is dit praat oor die groot o, wat ons weet die boonste grens van 'n algoritmes te wees 1372 01:01:04,370 --> 01:01:05,150 loop van die tyd. 1373 01:01:05,150 --> 01:01:08,080 En ons het omega, wat gaan die ondergrens te wees 1374 01:01:08,080 --> 01:01:10,290 van 'n algoritmes runtime. 1375 01:01:10,290 --> 01:01:10,840 OK? 1376 01:01:10,840 --> 01:01:12,480 >> GEHOOR: [onhoorbaar]. 1377 01:01:12,480 --> 01:01:12,800 >> Spreker 1: Ja, wat is die laaste ding wat? 1378 01:01:12,800 --> 01:01:13,380 Wat is theta? 1379 01:01:13,380 --> 01:01:16,850 Dit is as we-- ons net gaan omgee in hierdie klas in die geval 1380 01:01:16,850 --> 01:01:19,381 waar ons bogrens en ons ondergrens is dieselfde. 1381 01:01:19,381 --> 01:01:22,005 Ja, dit is die enigste keer is dit gaan om te kom in hierdie klas. 1382 01:01:22,005 --> 01:01:23,320 OK, ek gaan om voort te gaan. 1383 01:01:23,320 --> 01:01:26,490 As jy jou foto nie geneem het, Ek belowe dit sal aanlyn wees. 1384 01:01:26,490 --> 01:01:28,220 >> OK, awesome, structs. 1385 01:01:28,220 --> 01:01:29,810 Hoekom kan ons wil structs? 1386 01:01:29,810 --> 01:01:34,110 Wat is 'n nuttige rede ons wil dalk structs. 1387 01:01:34,110 --> 01:01:36,277 Iemand skree iets uit. 1388 01:01:36,277 --> 01:01:38,110 Wel, laat ons kyk na die byvoorbeeld op die bord. 1389 01:01:38,110 --> 01:01:41,090 Kom ons sê dat ons te doen het met al hierdie studente. 1390 01:01:41,090 --> 01:01:44,900 As ons 'n program vir CS50, is daar soos 800 mense. 1391 01:01:44,900 --> 01:01:47,890 Ons moet write-- ons gaan nodig om 'n klomp van die inligting te hanteer 1392 01:01:47,890 --> 01:01:49,020 oor studente. 1393 01:01:49,020 --> 01:01:50,990 Dit sal lekker wees as ons kon soort groep 1394 01:01:50,990 --> 01:01:54,460 this-- al die inligting wat het te doen met 'n bepaalde student 1395 01:01:54,460 --> 01:01:56,027 in 'n tipe data. 1396 01:01:56,027 --> 01:01:58,360 Maar ons weet daar is geen data tik die naam, Student, reg? 1397 01:01:58,360 --> 01:02:01,890 Ons het 'n heelgetal is, ons het 'n float, ons het 'n string, of 'n kar ster 1398 01:02:01,890 --> 01:02:03,920 maar ons het nie, 'n student. 1399 01:02:03,920 --> 01:02:08,680 >> So kan ons doen is eintlik soort definieer ons eie struktuur, noem dit student, 1400 01:02:08,680 --> 01:02:12,440 en ons kan 'n paar te assosieer verskillende velde met daardie struct. 1401 01:02:12,440 --> 01:02:14,410 So in hierdie geval, laat ons sê ons het 'n student. 1402 01:02:14,410 --> 01:02:17,350 En die dinge wat ons omgee oor die student ID-nommer 1403 01:02:17,350 --> 01:02:19,500 en die naam van die student se. 1404 01:02:19,500 --> 01:02:24,175 En nou kan ons hierdie ID assosieer en hierdie naam met 'n gegewe student. 1405 01:02:24,175 --> 01:02:25,300 So laat ons sien 'n paar voorbeelde. 1406 01:02:25,300 --> 01:02:28,860 1407 01:02:28,860 --> 01:02:33,490 >> OK, so hier sê ek, OK, kom ons sê ons wil 'n student. 1408 01:02:33,490 --> 01:02:35,050 Ek noem hom student 1. 1409 01:02:35,050 --> 01:02:38,850 En sy ID-nommer, in hierdie geval, kan ons toegang 1410 01:02:38,850 --> 01:02:45,200 deur net te doen die naam van die student dot die veld ons wil om toegang te verkry. 1411 01:02:45,200 --> 01:02:49,110 So dit gaan net student 1 dot ID, en ons stel dit gelyk aan 1. 1412 01:02:49,110 --> 01:02:52,300 Want onthou, het ons gesê dat ID gaan na 'n heelgetal wees. 1413 01:02:52,300 --> 01:02:56,540 En baie soortgelyk, kan ons sê, dit naam student se gaan Davin wees, 1414 01:02:56,540 --> 01:02:57,760 byvoorbeeld. 1415 01:02:57,760 --> 01:03:01,420 So kan ons net toegang tot die veld van 'n struct gebruik van hierdie dot. 1416 01:03:01,420 --> 01:03:03,098 Vrae oor dit? 1417 01:03:03,098 --> 01:03:03,598 Ja. 1418 01:03:03,598 --> 01:03:05,582 >> GEHOOR: Is daar enige manier om jou veranderlikes te beskerm? 1419 01:03:05,582 --> 01:03:08,560 Is daar enige manier om veranderlikes te beskerm van wat ekstern verkry? 1420 01:03:08,560 --> 01:03:10,726 >> Spreker 1: Is daar in elk geval om jou te beskerm veranderlikes 1421 01:03:10,726 --> 01:03:12,680 van wat ekstern verkry? 1422 01:03:12,680 --> 01:03:13,750 Nie in die bestek van CS50. 1423 01:03:13,750 --> 01:03:16,680 1424 01:03:16,680 --> 01:03:17,977 Ander vrae? 1425 01:03:17,977 --> 01:03:18,476 Ja. 1426 01:03:18,476 --> 01:03:18,942 >> GEHOOR: Wat is typedef struct? 1427 01:03:18,942 --> 01:03:20,192 Wat beteken elke komponent beteken? 1428 01:03:20,192 --> 01:03:22,937 1429 01:03:22,937 --> 01:03:24,520 Spreker 1: Ag, wat is typedef struct? 1430 01:03:24,520 --> 01:03:26,240 Wat beteken elke komponent beteken hierdie man? 1431 01:03:26,240 --> 01:03:26,850 >> GEHOOR: Ja. 1432 01:03:26,850 --> 01:03:27,683 >> Spreker 1: OK, cool. 1433 01:03:27,683 --> 01:03:31,200 So dit sê, hey rekenaar, ek wil 'n nuwe struktuur te skep. 1434 01:03:31,200 --> 01:03:34,970 En ek gaan om 'n definisie te definieer want dit, soos wat ek kon gebruik 1435 01:03:34,970 --> 01:03:37,520 asof dit 'n tipe deur my program. 1436 01:03:37,520 --> 01:03:39,300 OK, so ek wil 'n struktuur te definieer. 1437 01:03:39,300 --> 01:03:41,650 En ek gaan nou wees in staat wees om dit te gebruik as 'n tipe. 1438 01:03:41,650 --> 01:03:43,400 En sy naam is student. 1439 01:03:43,400 --> 01:03:45,730 En hier is sy velde. 1440 01:03:45,730 --> 01:03:48,130 >> GEHOOR: So, is dat typedef struct [onhoorbaar]? 1441 01:03:48,130 --> 01:03:50,592 1442 01:03:50,592 --> 01:03:53,800 Spreker 1: As jy wil in staat wees om gebruik van hierdie struct in jou program, 1443 01:03:53,800 --> 01:03:57,910 en in die meeste gevalle in CS50 ons doen, ons het om te sê tipe Def. 1444 01:03:57,910 --> 01:04:01,190 En wat dit toelaat om dit te gebruik dieselfde manier wat ons gebruik soos int of float. 1445 01:04:01,190 --> 01:04:04,168 Die rekenaar sal altyd weet wat dit is. 1446 01:04:04,168 --> 01:04:04,668 Ja. 1447 01:04:04,668 --> 01:04:06,560 >> GEHOOR: Kan ons skryf dit in die kop lêer? 1448 01:04:06,560 --> 01:04:07,060 >> Spreker 1: O, jammer. 1449 01:04:07,060 --> 01:04:08,600 Skryf ons dit in die kop lêer? 1450 01:04:08,600 --> 01:04:11,410 Jy kan dit skryf aan die bokant van jou program, aan die bokant van jou c program. 1451 01:04:11,410 --> 01:04:13,010 Ja, dit sal wees die mees redelike plek vir dit. 1452 01:04:13,010 --> 01:04:13,509 Terug daar. 1453 01:04:13,509 --> 01:04:15,704 GEHOOR: Dieselfde vraag, so voor belangrikste? 1454 01:04:15,704 --> 01:04:18,870 Spreker 1: Right, hierdie moet jy wees iewers dat almal dit kan oopmaak. 1455 01:04:18,870 --> 01:04:20,612 Dus, voordat belangrikste in jou geval, ja. 1456 01:04:20,612 --> 01:04:23,820 GEHOOR: Is daar 'n verskil tussen om student bo-op en op die onderste? 1457 01:04:23,820 --> 01:04:25,810 Spreker 1: Ag, is daar 'n verskil tussen om student 1458 01:04:25,810 --> 01:04:26,840 op die top of onder? 1459 01:04:26,840 --> 01:04:29,650 Let-- red daardie vraag, en wanneer ons by geskakelde lyste, 1460 01:04:29,650 --> 01:04:31,020 ons sal sien dat, OK? 1461 01:04:31,020 --> 01:04:32,750 So hou op om daardie vir 'n sekonde. 1462 01:04:32,750 --> 01:04:37,080 Die laaste ding wat ek wil om hier te noem, is in plaas van 'n struktuur, 1463 01:04:37,080 --> 01:04:41,180 ons het 'n wyser na 'n struktuur, kan ons ons notasie verander 1464 01:04:41,180 --> 01:04:42,480 om 'n bietjie mooier wees. 1465 01:04:42,480 --> 01:04:45,810 >> Ons kan sê, kom ons sê ons het 'n wyser na 'n student eerder as om net 1466 01:04:45,810 --> 01:04:47,040 n student. 1467 01:04:47,040 --> 01:04:52,460 As ons wil toegang tot 'n veld, in plaas van doen, goed gaan dereference die wyser, 1468 01:04:52,460 --> 01:04:54,100 en dan toegang tot die naam in die veld. 1469 01:04:54,100 --> 01:04:57,310 Dit lyk 'n bietjie notasie morsig met die ster in hierdie dot. 1470 01:04:57,310 --> 01:05:00,790 Heeltemal korrek, maar 'n soort van skoner manier om dit te doen, 1471 01:05:00,790 --> 01:05:03,280 is net om wyser pyl naam sê. 1472 01:05:03,280 --> 01:05:11,460 En wat eintlik kombineer dereferencing en toegang tot in een pragtige simbool. 1473 01:05:11,460 --> 01:05:12,470 Vrae oor dit? 1474 01:05:12,470 --> 01:05:13,760 >> GEHOOR: sê net dat 'n mens meer tyd. 1475 01:05:13,760 --> 01:05:14,480 >> Spreker 1: Sê dat een meer tyd. 1476 01:05:14,480 --> 01:05:16,021 >> GEHOOR: Presies wat jy nou net gesê. 1477 01:05:16,021 --> 01:05:17,870 Spreker 1: Sure, presies wat ek het net gesê. 1478 01:05:17,870 --> 01:05:21,580 As ons 'n wyser na 'n student eerder as die student self, 1479 01:05:21,580 --> 01:05:25,410 ons can-- een manier dat ons kan toegang tot die gebied is om dereference dit, en dan 1480 01:05:25,410 --> 01:05:27,110 toegang naam. 1481 01:05:27,110 --> 01:05:29,040 Nog, mooier manier waarop ons kan dit doen, wat net 1482 01:05:29,040 --> 01:05:33,550 'n bietjie van sintaktiese suiker, is net wyser pyl naam te doen. 1483 01:05:33,550 --> 01:05:38,190 En wat gaan die kombineer dereferencing en die ontsluiting. 1484 01:05:38,190 --> 01:05:40,400 Ja, pretty cool. 1485 01:05:40,400 --> 01:05:41,260 Alles reg. 1486 01:05:41,260 --> 01:05:44,390 >> So laat ons praat oor die ander vraag. 1487 01:05:44,390 --> 01:05:46,520 Kom ons spring na nodes, wat ons gaan gebruik 1488 01:05:46,520 --> 01:05:49,120 in verband lyste in net 'n sekonde. 1489 01:05:49,120 --> 01:05:53,580 So hier, sal jy sien dat daar is die woord node beide op die bodem, 1490 01:05:53,580 --> 01:05:55,160 en op die top. 1491 01:05:55,160 --> 01:05:59,040 Voor, toe ons die definisie van student, ons het net student op die bodem. 1492 01:05:59,040 --> 01:06:00,470 Ons het nie 'n student aan die top. 1493 01:06:00,470 --> 01:06:01,902 Iemand weet waarom dit kan wees? 1494 01:06:01,902 --> 01:06:02,860 Wat is die verskil? 1495 01:06:02,860 --> 01:06:03,360 Ja. 1496 01:06:03,360 --> 01:06:06,212 GEHOOR: So jy node gebruik is die definisie van node, 1497 01:06:06,212 --> 01:06:08,254 so dit is 'n rekursiewe ding? 1498 01:06:08,254 --> 01:06:08,920 Spreker 1: Goed. 1499 01:06:08,920 --> 01:06:13,230 Ja, ons moet ons nodes het wyser na ander nodes. 1500 01:06:13,230 --> 01:06:17,640 So aangesien ons hierdie tipe voordat dit werklik is gedefinieer, 1501 01:06:17,640 --> 01:06:20,613 ons nodig het om dit te sit op die top net sodat hy weet wat dit is. 1502 01:06:20,613 --> 01:06:22,446 GEHOOR: So steeds ons moet aan die onderkant? 1503 01:06:22,446 --> 01:06:23,338 Spreker 1: Ja. 1504 01:06:23,338 --> 01:06:24,754 GEHOOR: So altyd aan die onderkant. 1505 01:06:24,754 --> 01:06:26,090 Spreker 1: Altyd aan die onderkant. 1506 01:06:26,090 --> 01:06:29,410 So al van jou sal het dit aan die onderkant. 1507 01:06:29,410 --> 01:06:30,720 Enige ander vrae? 1508 01:06:30,720 --> 01:06:33,511 Alle reg, so kan eintlik praat oor geskakelde lyste regtig vinnig. 1509 01:06:33,511 --> 01:06:36,510 So geskakelde lyste are-- ons dit gebruik in plaas van skikkings in sommige gevalle, 1510 01:06:36,510 --> 01:06:40,030 omdat ons weet dat skikkings is 'n vaste lengte, terwyl gekoppel lyste 1511 01:06:40,030 --> 01:06:42,670 ons kan groei en krimp as ons wil hê. 1512 01:06:42,670 --> 01:06:45,790 So, dit is 'n voorbeeld van wat 'n geskakelde lys lyk. 1513 01:06:45,790 --> 01:06:48,590 Wat ons nodig het om te sien is die hoof van die lys. 1514 01:06:48,590 --> 01:06:50,330 So waar die lys begin. 1515 01:06:50,330 --> 01:06:53,010 En dan node hy elke daaropvolgende knoop, is 1516 01:06:53,010 --> 01:06:55,880 verantwoordelik vir die wete waar die volgende node is. 1517 01:06:55,880 --> 01:07:00,950 So in hierdie geval, die knoop wat 1 winkels is verantwoordelik vir die wete waar 3 is. 1518 01:07:00,950 --> 01:07:04,540 Die persoon wat 3 winkels is verantwoordelik vir om te weet waar 9 is. 1519 01:07:04,540 --> 01:07:06,230 En 9 het niemand anders om te wys. 1520 01:07:06,230 --> 01:07:08,750 Dit is die einde van die lys, so dit sê net null. 1521 01:07:08,750 --> 01:07:09,250 OK? 1522 01:07:09,250 --> 01:07:10,530 >> GEHOOR: Wat is die punt van hierdie? 1523 01:07:10,530 --> 01:07:11,480 >> Spreker 1: Wat is die punt van hierdie? 1524 01:07:11,480 --> 01:07:12,105 >> GEHOOR: Ja. 1525 01:07:12,105 --> 01:07:15,390 Spreker 1: Omdat, laat sê dat ons het 'n paar data. 1526 01:07:15,390 --> 01:07:18,480 En ons weet nie presies hoe veel data wat ons wil voor die tyd. 1527 01:07:18,480 --> 01:07:22,479 So met 'n skikking, kom ons sê waar ons wil mense tel in die eerste ry. 1528 01:07:22,479 --> 01:07:24,020 Die kans is dit nie gaan verander. 1529 01:07:24,020 --> 01:07:28,120 Ons kan net sê, OK, ek wil 'n skikking van grootte ses. 1530 01:07:28,120 --> 01:07:30,120 Maar as ons iets wil hê wat gaan om te verander. 1531 01:07:30,120 --> 01:07:32,900 >> Byvoorbeeld, kom ons sê ek het probeer om tred te hou van die studente te hou 1532 01:07:32,900 --> 01:07:35,330 as hulle in die kamer kom vir die hersiening sessie. 1533 01:07:35,330 --> 01:07:38,420 Ek het geen idee hoe baie van julle mense gaan om te wys. 1534 01:07:38,420 --> 01:07:43,094 So ek wil dalk 'n datastruktuur dat ek kan uitbrei en krimp. 1535 01:07:43,094 --> 01:07:45,510 Want miskien sal iemand verlaat, miskien iemand sal kom. 1536 01:07:45,510 --> 01:07:48,386 En so op enige tyd, ons kan byvoeg of verwyder nodes. 1537 01:07:48,386 --> 01:07:49,771 Cool, groot vraag. 1538 01:07:49,771 --> 01:07:50,270 Ja. 1539 01:07:50,270 --> 01:07:52,311 >> GEHOOR: As jy kan gebruik iets soos GetString 1540 01:07:52,311 --> 01:07:55,750 wat hou om jou te laat kry meer as data wat jy nodig het, waarom jy dit te nodig? 1541 01:07:55,750 --> 01:07:57,625 >> Spreker 1: Hoekom sou jy gebruik geskakelde lys wanneer 1542 01:07:57,625 --> 01:07:59,440 jy kan iets soos GetString gebruik? 1543 01:07:59,440 --> 01:08:01,640 Dit is 'n goeie vraag. 1544 01:08:01,640 --> 01:08:04,240 Onthou dat een van Get-- die ondergang van GetString 1545 01:08:04,240 --> 01:08:06,750 is dat ons nie 'n baie te doen het goeie werk van die vrylating van wat die geheue, 1546 01:08:06,750 --> 01:08:09,320 en ons het 'n klomp van die bekendgestel geheue lekkasies in jou program? 1547 01:08:09,320 --> 01:08:15,037 Jy kan dit 'n staties te neem grootte skikking en hou groei nie. 1548 01:08:15,037 --> 01:08:16,870 Maar jy wil hê om uit te vind nuwe plekke in die geheue. 1549 01:08:16,870 --> 01:08:18,359 Dit sou net 'n baie oorhoofse. 1550 01:08:18,359 --> 01:08:21,050 >> Een van die mooi dinge oor gekoppelde lyste in teenstelling met skikkings, is skikkings 1551 01:08:21,050 --> 01:08:22,830 is almal in dieselfde plek in die geheue. 1552 01:08:22,830 --> 01:08:25,540 Dit het kontinu stukke van die geheue. 1553 01:08:25,540 --> 01:08:29,920 AANGESIEN geskakelde lyste, 2 en 3 Mei heeltemal op verskillende plekke. 1554 01:08:29,920 --> 01:08:31,880 Soos 2 is hier, en 3 is hier. 1555 01:08:31,880 --> 01:08:34,421 En so lank as wat hulle het 'n wyser na mekaar, dis fine. 1556 01:08:34,421 --> 01:08:35,830 Ons weet ons kan dit vind. 1557 01:08:35,830 --> 01:08:37,084 Vraag daar? 1558 01:08:37,084 --> 01:08:40,563 >> GEHOOR: GetString is 'n funksie in die CS50 biblioteek, reg? 1559 01:08:40,563 --> 01:08:42,060 Dit bestaan ​​nie in die werklike programme. 1560 01:08:42,060 --> 01:08:42,851 >> Spreker 1: Korrekte. 1561 01:08:42,851 --> 01:08:44,130 Reg, dit is die ander ding. 1562 01:08:44,130 --> 01:08:47,210 GetString bestaan ​​nie buite die konteks van CS50. 1563 01:08:47,210 --> 01:08:47,710 Ja. 1564 01:08:47,710 --> 01:08:54,556 >> GEHOOR: So doen die feit dat twee kan regtig ver van mekaar wees, 1565 01:08:54,556 --> 01:08:59,859 doen wat 'n impak van die doeltreffendheid van toegang tot die elemente op die lys? 1566 01:08:59,859 --> 01:09:01,359 Spreker 1: Dit is 'n groot vraag. 1567 01:09:01,359 --> 01:09:04,278 Die vraag was, beteken dit impak die doeltreffendheid van toegang tot 1568 01:09:04,278 --> 01:09:05,819 hierdie verskillende elemente in die lys. 1569 01:09:05,819 --> 01:09:06,930 Eintlik, ja. 1570 01:09:06,930 --> 01:09:09,569 Omdat ons weet if-- laat sê ons wil toegang 1571 01:09:09,569 --> 01:09:14,520 die tweede element van die skikking, weet ons kan ons maar net array bracket 1, reg. 1572 01:09:14,520 --> 01:09:16,630 Dit was nog altyd gaan dieselfde wees plek. 1573 01:09:16,630 --> 01:09:20,720 Maar as ons wil hê dat 3 te kry, Ons kan nie net sê, gaan kry wat 3. 1574 01:09:20,720 --> 01:09:24,009 Ons het om te sê, OK, begin by die begin van die lys, 1575 01:09:24,009 --> 01:09:26,050 en nou is ons eintlik om deur te loop totdat ons 1576 01:09:26,050 --> 01:09:28,149 vind die aantal ons belangstel in. 1577 01:09:28,149 --> 01:09:30,790 >> So in hierdie geval sê ons, OK dit is die eerste getal. 1578 01:09:30,790 --> 01:09:32,207 So in wese, dis indeks 0. 1579 01:09:32,207 --> 01:09:33,790 Nou moet ons die tweede getal te vind. 1580 01:09:33,790 --> 01:09:34,740 Dit is indeks 1. 1581 01:09:34,740 --> 01:09:39,180 So dit is eintlik gaan aan- net toegang, gaan N tyd neem. 1582 01:09:39,180 --> 01:09:42,027 Cool, groot ou N. Ja. 1583 01:09:42,027 --> 01:09:43,903 >> GEHOOR: Wat is elk van die lyste? 1584 01:09:43,903 --> 01:09:45,401 Is hulle elke skikkings, of wat? 1585 01:09:45,401 --> 01:09:46,859 Spreker 1: Dit is 'n groot vraag. 1586 01:09:46,859 --> 01:09:48,950 Wat is elk van die strukture wat ek geteken het? 1587 01:09:48,950 --> 01:09:51,649 Hulle is nodes. 1588 01:09:51,649 --> 01:09:53,720 So elkeen van hierdie klein struktuur het twee dele. 1589 01:09:53,720 --> 01:09:55,264 Dit het 'n heeltallige wat hou. 1590 01:09:55,264 --> 01:09:57,180 Dit is die werklike data dat dit vashou. 1591 01:09:57,180 --> 01:09:58,770 Dit is die soort van nuttige deel. 1592 01:09:58,770 --> 01:10:00,820 En dit is wat maak dit 'n geskakelde lys, 1593 01:10:00,820 --> 01:10:03,690 dit het 'n wyser na die volgende knoop. 1594 01:10:03,690 --> 01:10:05,260 Awesome vraag. 1595 01:10:05,260 --> 01:10:11,320 Alle reg, so laat lyk baie vinnig kyk na 'n paar voorbeelde van wat 1596 01:10:11,320 --> 01:10:12,820 ons kan doen met geskakelde lyste. 1597 01:10:12,820 --> 01:10:16,920 >> So 'n baie vinnige voorbeeld is, dink ons ​​wil 'n soektog te doen. 1598 01:10:16,920 --> 01:10:20,240 Watter soort soek nie kan ons doen op geskakelde lyste? 1599 01:10:20,240 --> 01:10:21,150 >> GEHOOR: Binary. 1600 01:10:21,150 --> 01:10:21,900 >> Spreker 1: Binary. 1601 01:10:21,900 --> 01:10:23,408 Hoekom kan ons nie gebruik binêre soek? 1602 01:10:23,408 --> 01:10:25,181 >> GEHOOR: [onhoorbaar]. 1603 01:10:25,181 --> 01:10:28,180 Spreker 1: Right, want met binêre soek, moes ons staatmaak op die feit 1604 01:10:28,180 --> 01:10:31,300 dat ons net kan spring in die skikking by enige punt. 1605 01:10:31,300 --> 01:10:33,420 Ons kon net sê, gaan na die middel element. 1606 01:10:33,420 --> 01:10:35,550 Met hier, soos ons sê 'n bietjie vroeër, 1607 01:10:35,550 --> 01:10:37,270 Ons kan nie net spring om die middel element. 1608 01:10:37,270 --> 01:10:38,978 Ten einde enige vind element, wat ons eintlik 1609 01:10:38,978 --> 01:10:40,780 moet loop deur ons hele lys. 1610 01:10:40,780 --> 01:10:43,910 >> So as ons wou 'n soektog te doen, die beste wat ons kan doen, is net 'n lineêre soek. 1611 01:10:43,910 --> 01:10:45,910 Ons begin by die kop, ons check-- kom ons sê ons is 1612 01:10:45,910 --> 01:10:47,790 soek 9-- ons begin by die kop. 1613 01:10:47,790 --> 01:10:49,200 Ons sê, is dit 9? 1614 01:10:49,200 --> 01:10:49,710 Geen. 1615 01:10:49,710 --> 01:10:50,430 Is dit 9? 1616 01:10:50,430 --> 01:10:50,930 Geen. 1617 01:10:50,930 --> 01:10:51,620 Is dit 9? 1618 01:10:51,620 --> 01:10:53,730 Ja, ons het dit. 1619 01:10:53,730 --> 01:10:56,350 OK, dit is al wat. 1620 01:10:56,350 --> 01:10:57,940 Hier is 'n bietjie van pseudo-kode. 1621 01:10:57,940 --> 01:11:01,420 Ek gaan dit vir jou te laat ouens oor kansellasies op jou eie, 1622 01:11:01,420 --> 01:11:04,370 net omdat ons loop 'n bietjie kort op tyd. 1623 01:11:04,370 --> 01:11:05,610 >> Kom ons praat oor inplanting. 1624 01:11:05,610 --> 01:11:08,644 Ons het 'n baie cool demo van dit in lesing waar ons sê: 1625 01:11:08,644 --> 01:11:11,560 OK, ons het hierdie geskakelde lys waar almal se wys na mekaar, 1626 01:11:11,560 --> 01:11:13,400 en iemand kom op die verhoog. 1627 01:11:13,400 --> 01:11:17,050 Hoe weet ons dat voeg persoon in ons geskakelde lys? 1628 01:11:17,050 --> 01:11:20,150 Wel, 'n verkeerde manier om dit te doen, wat is Ek dink wat ons die eerste keer gesien, 1629 01:11:20,150 --> 01:11:22,740 is wanneer die persoon in front outomaties 1630 01:11:22,740 --> 01:11:25,270 wys na die nuwe mens. 1631 01:11:25,270 --> 01:11:29,057 En dan het ons soort verlaat die tweede helfte van die lys, reg? 1632 01:11:29,057 --> 01:11:31,390 Omdat ons nie weet waar dit is in die geheue nie. 1633 01:11:31,390 --> 01:11:34,750 So om baie versigtig te wees oor die orde waarin ons plaas dinge. 1634 01:11:34,750 --> 01:11:37,860 >> So hier, kom ons sê ons wil sit 1 aan die voorkant van ons lys. 1635 01:11:37,860 --> 01:11:42,190 Eerstens, ons het 1 punt by die tweede element-- of die element 1636 01:11:42,190 --> 01:11:44,170 wat bevat 1. 1637 01:11:44,170 --> 01:11:47,210 So, ons dit doen, net so is ons nie gaan die tweede helfte verloor. 1638 01:11:47,210 --> 01:11:51,020 En nou kan ons hoof punt moet 1. 1639 01:11:51,020 --> 01:11:52,930 So weer, dit is net soos super hoë vlak. 1640 01:11:52,930 --> 01:11:55,290 Dit is hoe ons 'n knoop sou plaas. 1641 01:11:55,290 --> 01:11:57,337 Ons het 'n baie pseudo-kode here-- jammer, 1642 01:11:57,337 --> 01:11:59,170 Ek weet nie hoekom ek noem dit pseudo-kode. 1643 01:11:59,170 --> 01:12:00,350 Dit is die werklike kode. 1644 01:12:00,350 --> 01:12:02,570 Jy kan gaan check dit uit later. 1645 01:12:02,570 --> 01:12:04,870 >> Alle reg, laat ons baie quickly-- meer vrae 1646 01:12:04,870 --> 01:12:07,120 op geskakelde lyste voordat ek beweeg op 'n paar ander data 1647 01:12:07,120 --> 01:12:08,450 strukture in ons laaste 10 minute. 1648 01:12:08,450 --> 01:12:10,340 >> GEHOOR: Moet ons nou hoe om dit te skryf op 'n toets? 1649 01:12:10,340 --> 01:12:11,040 >> Spreker 1: Het ons nodig om te weet hoe aan- 1650 01:12:11,040 --> 01:12:12,030 >> GEHOOR: Skryf dit op 'n toets. 1651 01:12:12,030 --> 01:12:14,071 >> Spreker 1: Ons hoef aan- jy moet bereid wees 1652 01:12:14,071 --> 01:12:18,870 om te skryf, plaas, te verwyder, en soek vir gekoppelde lyste op die proef gestel. 1653 01:12:18,870 --> 01:12:21,480 Dit is iets wat ons kan verwag om te doen. 1654 01:12:21,480 --> 01:12:22,750 Gaan net meer as dit. 1655 01:12:22,750 --> 01:12:26,460 Indien u enige vrae oor die kode, skiet jou TF n e-pos, 1656 01:12:26,460 --> 01:12:27,750 kom kantoorure. 1657 01:12:27,750 --> 01:12:30,041 Daar is nog baie tyd om te studeer, nie te bekommer nie. 1658 01:12:30,041 --> 01:12:32,290 Alle reg, enige ander vrae oor geskakelde lyste? 1659 01:12:32,290 --> 01:12:32,986 Ja. 1660 01:12:32,986 --> 01:12:37,360 >> GEHOOR: So, as jy nie die gebruik van die wyser om te gaan na die een aan die regterkant 1661 01:12:37,360 --> 01:12:41,308 voordat jy die wyser vir gebruik die een aan die linkerkant, dit is 1662 01:12:41,308 --> 01:12:43,211 die ekwivalent van die verwydering van alles reg? 1663 01:12:43,211 --> 01:12:43,877 Spreker 1: Ja. 1664 01:12:43,877 --> 01:12:44,820 GEHOOR: [onhoorbaar]. 1665 01:12:44,820 --> 01:12:47,570 Spreker 1: Right, want ons kan nie kry dit, dit is eintlik nog erger. 1666 01:12:47,570 --> 01:12:50,690 Want nie net ons weet nie waar dit is, kan ons nie meer gebruik nie, 1667 01:12:50,690 --> 01:12:53,580 maar ons is nie we've-- bevry dat die geheue nie. 1668 01:12:53,580 --> 01:12:58,570 So dit is net rond hang en nie nuttig wees omdat ons nie kan vind nie. 1669 01:12:58,570 --> 01:12:59,580 Ja, cool vraag. 1670 01:12:59,580 --> 01:13:01,280 >> Alle reg, laat ons praat oor stapels. 1671 01:13:01,280 --> 01:13:03,230 Ons het stapels baie vinnig. 1672 01:13:03,230 --> 01:13:06,280 Hulle is die eerste in die laaste uit data strukture. 1673 01:13:06,280 --> 01:13:10,664 So ons dink van die stapels in Annenberg van bak waar ons stapel dinge op die top. 1674 01:13:10,664 --> 01:13:12,580 En as jy gaan kom kry 'n skinkbord, is jy 1675 01:13:12,580 --> 01:13:15,870 altyd gaan na die een op die neem top, wat is die mees recently-- 1676 01:13:15,870 --> 01:13:18,840 wat is die ding wat ons die meeste onlangs op die top van die stapel. 1677 01:13:18,840 --> 01:13:22,680 Sodat jy kan soort van dink van hierdie soort visuele wanneer jy dink van die stapels. 1678 01:13:22,680 --> 01:13:26,010 En dan, ons het iets inloer uit die top van die stapel. 1679 01:13:26,010 --> 01:13:29,850 >> As ons are-- O ja, en die woorde wat ons gebruik wanneer ons praat oor hierdie data 1680 01:13:29,850 --> 01:13:32,680 strukture is gewoonlik, as ons sit iets op die stapel, 1681 01:13:32,680 --> 01:13:34,550 ons sê ons is besig om dit op die stapel. 1682 01:13:34,550 --> 01:13:38,450 En as ons iets af te neem die stapel, ons sê ons is knal uit die stapel. 1683 01:13:38,450 --> 01:13:41,470 As jy gaan om te implementeer 'n stack-- wat ek beslis 1684 01:13:41,470 --> 01:13:44,840 raai u out-- probeer jy gaan wil om tred te hou, 1685 01:13:44,840 --> 01:13:46,669 Kom ons sê jy 'n skikking. 1686 01:13:46,669 --> 01:13:48,960 Ek weet in lesing het ons gepraat oor die gebruik van beide die skikkings 1687 01:13:48,960 --> 01:13:51,120 of geskakelde lyste te 'n stapel te implementeer. 1688 01:13:51,120 --> 01:13:53,490 As jy 'n skikking, moet jy keep-- 1689 01:13:53,490 --> 01:13:56,750 verskoning me-- ons nodig het om tred te hou van die grootte en die kapasiteit. 1690 01:13:56,750 --> 01:14:00,820 So het die maksimum aantal dat ons stapel kan hou. 1691 01:14:00,820 --> 01:14:03,240 Vrae oor stapels? 1692 01:14:03,240 --> 01:14:05,657 >> GEHOOR: Wat is die verskil tussen grootte en kapasiteit? 1693 01:14:05,657 --> 01:14:08,573 Spreker 1: Die verskil tussen grootte en kapasiteit, awesome vraag. 1694 01:14:08,573 --> 01:14:10,330 So kom ons sê ons is met behulp van 'n skikking, en ons 1695 01:14:10,330 --> 01:14:13,340 toeken genoeg plek vir 10 heelgetalle. 1696 01:14:13,340 --> 01:14:15,050 En ons begin te vul dat. 1697 01:14:15,050 --> 01:14:17,330 En ons stoot dinge op, en ons pop dinge af. 1698 01:14:17,330 --> 01:14:21,060 Ons wil om tred te hou van die maksimum hou getal wat ons kan hou, dis kapasiteit. 1699 01:14:21,060 --> 01:14:24,790 En ons wil om tred te hou van die hou huidige aantal wat ons het, dit is groot. 1700 01:14:24,790 --> 01:14:26,530 Goeie vraag. 1701 01:14:26,530 --> 01:14:28,720 Enigiets anders op stapels? 1702 01:14:28,720 --> 01:14:31,260 Alle reg, laat ons praat oor verbasing toue. 1703 01:14:31,260 --> 01:14:37,034 >> Anders stapels, wat vir die eerste is in die laaste uit, hierdie is die eerste in, eerste uit. 1704 01:14:37,034 --> 01:14:38,450 So dit is like-- dink van 'n lyn. 1705 01:14:38,450 --> 01:14:41,530 Dink aan die voering aan die Apple Store aan enige produk te kry. 1706 01:14:41,530 --> 01:14:44,540 En die eerste persoon in die lyn moet die eerste persoon wat gehelp. 1707 01:14:44,540 --> 01:14:48,270 So die eerste ding wat gestoot is dit die eerste ding wat inloer. 1708 01:14:48,270 --> 01:14:49,460 Koel? 1709 01:14:49,460 --> 01:14:52,890 Baie similarly-- oh, die woorde wat ons gebruik in plaas van druk en pop-- 1710 01:14:52,890 --> 01:14:55,060 wat ek net gebruik word, Ek is sorry-- is ons sê, 1711 01:14:55,060 --> 01:14:58,170 as ons om iets in die tou, sê ons waglys is. 1712 01:14:58,170 --> 01:15:00,795 As ons neem iets uit die tou, sê ons ons dequeued. 1713 01:15:00,795 --> 01:15:01,950 Dit. 1714 01:15:01,950 --> 01:15:05,454 Ek kan uitspreek diegene verkeerd is, maar jy kry die idee. 1715 01:15:05,454 --> 01:15:08,370 En dan weer, net soos stapels, as ons die implementering van hierdie as skikking, 1716 01:15:08,370 --> 01:15:12,350 ons nodig het om tred te hou van die hou grootte, die kapasiteit, en die hoof. 1717 01:15:12,350 --> 01:15:13,570 Wat bedoel ek met die kop? 1718 01:15:13,570 --> 01:15:15,278 Hoekom moet ons hou spoor van die kop? 1719 01:15:15,278 --> 01:15:18,549 1720 01:15:18,549 --> 01:15:21,685 >> GEHOOR: want dit is waar die begin van jou lys is. 1721 01:15:21,685 --> 01:15:24,810 Spreker 1: Ja, basies die hoof is waar die begin van ons ry is. 1722 01:15:24,810 --> 01:15:29,460 Want ons weet, in teenstelling met stapels, which-- Ek gaan om te probeer om hierdie way-- gesig 1723 01:15:29,460 --> 01:15:33,570 ons weet dat dit altyd gaan krimp en groei op hierdie manier op hierdie manier. 1724 01:15:33,570 --> 01:15:37,840 Toue, mense kom op die einde en laat van die begin af, 1725 01:15:37,840 --> 01:15:40,620 so ons het om tred te hou waar die begin is. 1726 01:15:40,620 --> 01:15:43,540 Dit is wat ek bedoel met ons nodig het om hou van waar die kop is. 1727 01:15:43,540 --> 01:15:45,190 Koel? 1728 01:15:45,190 --> 01:15:46,440 Alles reg. 1729 01:15:46,440 --> 01:15:49,250 Agt minute, paartjie meer onderwerpe, ons kan dit doen. 1730 01:15:49,250 --> 01:15:51,240 >> Alle reg, hash tafel. 1731 01:15:51,240 --> 01:15:53,095 Ons het gepraat baie kortliks oor hash tabelle. 1732 01:15:53,095 --> 01:15:55,720 Vir die quiz, jy hoef net verstaan ​​op 'n hoë vlak. 1733 01:15:55,720 --> 01:15:58,330 Die basiese idee is dat jy hierdie data. 1734 01:15:58,330 --> 01:16:02,570 En ons wil om dit te bekom in die tyd wat vinniger as iets soos 'n gekoppelde 1735 01:16:02,570 --> 01:16:03,070 lys. 1736 01:16:03,070 --> 01:16:05,290 Omdat ons gesê, as ons soek deur 'n geskakelde lys, 1737 01:16:05,290 --> 01:16:06,248 dat N tyd kan neem. 1738 01:16:06,248 --> 01:16:08,810 Selfs toegang kan neem N tyd in 'n geskakelde lys. 1739 01:16:08,810 --> 01:16:12,930 Hash tafels gee ons 'n manier wat ons kan vinniger toegang dinge, en meer 1740 01:16:12,930 --> 01:16:16,970 vinnig soek vir dinge, sonder met die beperkings van 'n skikking 1741 01:16:16,970 --> 01:16:19,030 waar ons vaste grootte. 1742 01:16:19,030 --> 01:16:23,950 >> So ons dink aan 'n datastruktuur waar waar ons sit dit in die data struktuur 1743 01:16:23,950 --> 01:16:26,620 is afhanklik van hierdie magiese hash funksie. 1744 01:16:26,620 --> 01:16:30,630 So in hierdie geval, die magiese hash funksie net om 'n woord, 1745 01:16:30,630 --> 01:16:34,027 kontrole wat die eerste letter is, en dan net sorteer dit alfabeties. 1746 01:16:34,027 --> 01:16:36,110 Sodat ons in wese sit hulle in verskillende emmers. 1747 01:16:36,110 --> 01:16:39,510 Wanneer ons sien piesang, sê ons, OK, laat ons in die B emmer. 1748 01:16:39,510 --> 01:16:41,820 Wanneer ons sien Apple, laat sit dit in die A emmer. 1749 01:16:41,820 --> 01:16:44,744 As ons sien appelkoos, laat sit in die A emmer. 1750 01:16:44,744 --> 01:16:45,600 OK? 1751 01:16:45,600 --> 01:16:51,090 >> So dink ek is op soek for-- ek weet nie, wat is 'n ander vrugte? 1752 01:16:51,090 --> 01:16:52,920 Dink ek was op soek na oranje. 1753 01:16:52,920 --> 01:16:55,340 Waar moet ek kyk? 1754 01:16:55,340 --> 01:16:56,420 In die O emmer. 1755 01:16:56,420 --> 01:17:01,450 Ja, daar is net een plek dat oranje mag wees, OK? 1756 01:17:01,450 --> 01:17:05,370 So ek vroeër gesê het wat gebeur if-- goed ek vroeër gesê het, 1757 01:17:05,370 --> 01:17:10,030 Kom ons sê ons sit appelkoos in-- maar ek regtig spreek die feit dat, o nee, 1758 01:17:10,030 --> 01:17:14,990 as ek berry in te stel, is dit gaan in stryd met piesang. 1759 01:17:14,990 --> 01:17:20,160 Waar ons sit dit as daar ' reeds iets in ons tafel? 1760 01:17:20,160 --> 01:17:22,760 Wel, ons het 'n paar opsies. 1761 01:17:22,760 --> 01:17:26,160 >> Opsie nommer een is lineêre indringende, wat basies beteken, 1762 01:17:26,160 --> 01:17:28,690 Kom ons sê ek wil om te probeer om sit berry, en ek sien, o nee, 1763 01:17:28,690 --> 01:17:31,170 piesangs reeds daar, Ek sê net OK, laat 1764 01:17:31,170 --> 01:17:33,810 my kyk vir die volgende beskikbare plek. 1765 01:17:33,810 --> 01:17:36,744 So ek loop, ek sê, o, daar is niks in die D emmer. 1766 01:17:36,744 --> 01:17:39,410 Ek kan nie regtig dink aan enige vrugte wat begin met die letter D, 1767 01:17:39,410 --> 01:17:41,620 so ek gaan net berry daar sit. 1768 01:17:41,620 --> 01:17:42,650 Durian. 1769 01:17:42,650 --> 01:17:44,590 OK, so aangesien daar niks in nog daar was, 1770 01:17:44,590 --> 01:17:47,020 Ek kan net sowel gebruik daardie plek. 1771 01:17:47,020 --> 01:17:48,805 Wat is die nadeel van dit? 1772 01:17:48,805 --> 01:17:49,300 >> GEHOOR: Dis buite orde. 1773 01:17:49,300 --> 01:17:50,008 >> Spreker 1: Jammer? 1774 01:17:50,008 --> 01:17:51,280 GEHOOR: Dis buite orde. 1775 01:17:51,280 --> 01:17:53,113 >> Spreker 1: Dis out-- reg, kan ons uiteindelik 1776 01:17:53,113 --> 01:17:56,380 met dinge wat nie in-- gestoor in emmers in die pad 1777 01:17:56,380 --> 01:17:57,790 dat ons van hulle verwag om te wees. 1778 01:17:57,790 --> 01:18:00,670 So as ons soek vir Berry, voordat ons gesê, 1779 01:18:00,670 --> 01:18:02,000 O, ons kan kyk in een emmer. 1780 01:18:02,000 --> 01:18:03,650 Dit kan net in een emmer. 1781 01:18:03,650 --> 01:18:07,380 Maar nou, regtig, dit kan wees in al die emmers, reg? 1782 01:18:07,380 --> 01:18:10,400 >> OK, hier is 'n ander opsie, aparte chaining-- 1783 01:18:10,400 --> 01:18:16,630 wat is die idee dat ons gaan om 'n bietjie later in P stel 5 gebruik. 1784 01:18:16,630 --> 01:18:19,340 Eerder as net een spasie in elke emmer, 1785 01:18:19,340 --> 01:18:23,610 Daarom het ons nie elke emmer 'n wyser na 'n geskakelde lys? 1786 01:18:23,610 --> 01:18:28,570 Waar ons sê, OK, daar is 'n emmer vir alles wat begin met A. 1787 01:18:28,570 --> 01:18:31,990 En daar is net gaan om te wees 'n gekoppelde lys van vrugte wat begin met A. 1788 01:18:31,990 --> 01:18:36,240 So as ons 'n nuwe vrugte, kom ons sê ons get-- ons avokado, ons het 'n appel, 1789 01:18:36,240 --> 01:18:39,530 Kom ons sê ons kry appelkoos, hoe sou ons in die lys? 1790 01:18:39,530 --> 01:18:43,330 Wel, ons wil gaan na emmer 0, en ons wil net plaas dit in ons graag lys 1791 01:18:43,330 --> 01:18:45,320 eenvoudig soos dit. 1792 01:18:45,320 --> 01:18:47,160 >> Nou het ek bly sê emmer. 1793 01:18:47,160 --> 01:18:49,470 Ons kan dit te implementeer in 'n aantal maniere. 1794 01:18:49,470 --> 01:18:52,040 Een tipiese manier dat dit soort prentjie stel, 1795 01:18:52,040 --> 01:18:55,580 is dalk met 'n verskeidenheid van verwysings na geskakelde lyste. 1796 01:18:55,580 --> 01:18:58,174 Dit is een manier waarop ons kan implementering van 'n hash tafel. 1797 01:18:58,174 --> 01:19:01,090 GEHOOR: Wil jy 'n ander nodig lys, want piesang en bessies is uit 1798 01:19:01,090 --> 01:19:01,591 van orde? 1799 01:19:01,591 --> 01:19:03,298 Spreker 1: Wil jy need-- ah, sou jy 1800 01:19:03,298 --> 01:19:06,310 nog 'n lys, want piesang nodig en bessie is buite orde? 1801 01:19:06,310 --> 01:19:09,880 In hierdie geval, ons hash funksie, wat ons vertel waar om dinge 1802 01:19:09,880 --> 01:19:11,647 gee nie om oor die tweede brief. 1803 01:19:11,647 --> 01:19:14,730 Dit maak nie omgee alphabetizing, dit gee net oor die eerste letter. 1804 01:19:14,730 --> 01:19:15,672 Vraag? 1805 01:19:15,672 --> 01:19:18,947 >> GEHOOR: Wat is die definisie van daardie funksie, en wat beteken dit lyk? 1806 01:19:18,947 --> 01:19:19,780 Spreker 1: Ag, goed. 1807 01:19:19,780 --> 01:19:22,450 OK, so ons hoef nie bekommerd te veel vir hierdie quiz. 1808 01:19:22,450 --> 01:19:23,700 So ek het nie sit in die skyfies. 1809 01:19:23,700 --> 01:19:26,320 Ons gaan ingestel word om dit vir P stel 5. 1810 01:19:26,320 --> 01:19:31,520 Maar basies, dit sê, gegewe 'n nuwe element, waar moet ek dit? 1811 01:19:31,520 --> 01:19:35,450 Of, kom ons sê ek is op soek na 'n element, waar kan dit wees? 1812 01:19:35,450 --> 01:19:37,860 Ja, n groot vraag. 1813 01:19:37,860 --> 01:19:40,870 >> OK, baie vinnig, bome en drieë gedruk. 1814 01:19:40,870 --> 01:19:44,779 So 'n boom is net 'n soort van georganiseerde data struktuur. 1815 01:19:44,779 --> 01:19:47,820 En ons gaan 'n baie foto's te sien wat sal hierdie super duidelik te maak. 1816 01:19:47,820 --> 01:19:51,180 En 'n Trie, wat ons gesien het in die klas, is 'n baie spesiale soort boom 1817 01:19:51,180 --> 01:19:53,440 wat in wese werk soos 'n multi-vlak hash tafel. 1818 01:19:53,440 --> 01:19:54,390 Dit is super cool. 1819 01:19:54,390 --> 01:19:56,030 Ons gaan om dit te sien in net 'n sekonde. 1820 01:19:56,030 --> 01:19:57,821 Alle reg, so laat praat oor bome eerste. 1821 01:19:57,821 --> 01:20:01,040 So dit is regtig n tipiese voorbeeld van 'n boom, waar ons het 'n paar hiërargie. 1822 01:20:01,040 --> 01:20:03,220 Jy sien dat 'n mens op die heel boonste, reg? 1823 01:20:03,220 --> 01:20:06,190 En ek kan sê top, want daar is duidelik 'n bestel, omdat ons 1824 01:20:06,190 --> 01:20:08,260 het hierdie pyle om af te gaan. 1825 01:20:08,260 --> 01:20:11,740 Sodat die ding op die top, Ek noem dat die wortel node. 1826 01:20:11,740 --> 01:20:13,080 So een is die wortel node. 1827 01:20:13,080 --> 01:20:17,330 En die dinge wat op die bodem, wat niks het kom uit hulle 1828 01:20:17,330 --> 01:20:18,783 Ek sê dit is die blaar nodes. 1829 01:20:18,783 --> 01:20:22,730 So 8,9 5, 6, 7, OK. 1830 01:20:22,730 --> 01:20:27,740 En gewoonlik is die terminologie ons kan sê is, 1 is 3 se ouer. 1831 01:20:27,740 --> 01:20:30,740 So dit is die ding wat 'n kom vlak bo dit, en punte om dit te. 1832 01:20:30,740 --> 01:20:32,710 En 3 is 1 se kind. 1833 01:20:32,710 --> 01:20:34,505 Dit is die ding wat 1 punte. 1834 01:20:34,505 --> 01:20:35,005 Vraag? 1835 01:20:35,005 --> 01:20:36,414 >> GEHOOR: Kan jy gaan terug na die vorige skyfie, asseblief? 1836 01:20:36,414 --> 01:20:37,388 >> Spreker 1: Kan ek terug gaan met die vorige skyfie? 1837 01:20:37,388 --> 01:20:37,888 Seker nie. 1838 01:20:37,888 --> 01:20:40,640 1839 01:20:40,640 --> 01:20:41,390 Vrae oor hierdie? 1840 01:20:41,390 --> 01:20:42,764 Of jy net wil om te kyk na dit? 1841 01:20:42,764 --> 01:20:44,650 GEHOOR: Ek het net nie kry deur dit. 1842 01:20:44,650 --> 01:20:47,100 >> Spreker 1: OK, koel, ja. 1843 01:20:47,100 --> 01:20:49,846 Dit sal al wees aanlyn doen nie bekommerd oor die manier waarop elke woord. 1844 01:20:49,846 --> 01:20:51,720 En in die belang van tyd, ek gaan om te gaan. 1845 01:20:51,720 --> 01:20:53,270 Is dat OK? 1846 01:20:53,270 --> 01:20:53,790 Awesome. 1847 01:20:53,790 --> 01:20:55,720 OK, cool. 1848 01:20:55,720 --> 01:20:57,790 So laat ons praat oor 'n baie spesifieke kind-- 1849 01:20:57,790 --> 01:20:59,710 so ons het hierdie algemene struktuur van bome, 1850 01:20:59,710 --> 01:21:02,876 wat net enigiets wat ons kan soort rang dinge hiërargies. 1851 01:21:02,876 --> 01:21:06,000 1852 01:21:06,000 --> 01:21:11,110 >> Binêre bome is dinge waar elke node het by die meeste twee kinders. 1853 01:21:11,110 --> 01:21:11,690 OK? 1854 01:21:11,690 --> 01:21:14,560 En ek het gesê, OK, so wat lyk om hierdie beskrywing pas. 1855 01:21:14,560 --> 01:21:16,830 Ek het gesê node, nie 'n binêre soek boom. 1856 01:21:16,830 --> 01:21:19,720 Wat is 'n binêre soekboom? 1857 01:21:19,720 --> 01:21:20,440 Dit is gesorteer. 1858 01:21:20,440 --> 01:21:22,890 So jy weet dat in 'n binêre soekboom, 1859 01:21:22,890 --> 01:21:26,580 alles aan die tree-- alles om die nodes links is kleiner, 1860 01:21:26,580 --> 01:21:28,830 en alles aan die nodes reg is groter. 1861 01:21:28,830 --> 01:21:30,620 Dit is dus nie 'n binêre soekboom. 1862 01:21:30,620 --> 01:21:32,770 Dit is net 'n binêre boom. 1863 01:21:32,770 --> 01:21:35,910 So ons het 'n groot kategorie van bome, effens kleiner kategorie 1864 01:21:35,910 --> 01:21:40,106 van binêre bome, soek deur die a-- binêre soek bome. 1865 01:21:40,106 --> 01:21:41,540 Koel? 1866 01:21:41,540 --> 01:21:44,410 Alles reg. 1867 01:21:44,410 --> 01:21:47,380 >> En nou, die meeste pret al, ons het ons drieë gedruk. 1868 01:21:47,380 --> 01:21:49,500 Julle het hierdie foto in lesing? 1869 01:21:49,500 --> 01:21:51,790 Ja, dit moet super vertroud te kyk. 1870 01:21:51,790 --> 01:21:54,252 Kom ons kyk na hoe ons eintlik implementeer. 1871 01:21:54,252 --> 01:21:56,210 Of eintlik, laat ons sien, beteken dat selfs kom? 1872 01:21:56,210 --> 01:21:56,731 Nee. 1873 01:21:56,731 --> 01:21:59,480 Alle reg, ons het nie eens bekommer oor wat 'n lae vlak dinge. 1874 01:21:59,480 --> 01:22:02,320 Ons sal baie tyd hê dan spreek P stel 5. 1875 01:22:02,320 --> 01:22:05,780 Maar vir nou, net 'n baie hoë vlak, ons weet dat dit is wat dit lyk. 1876 01:22:05,780 --> 01:22:08,530 Ons het dit beskryf as soort 'n multi-vlak hash tafel 1877 01:22:08,530 --> 01:22:12,264 where-- wat gaan hierdie winkel? 1878 01:22:12,264 --> 01:22:14,430 Dit slaan name van wetenskaplikes wat ons kan eintlik 1879 01:22:14,430 --> 01:22:20,690 kyk deur net soort van die volgende verskillende hash tabelle af, alles reg? 1880 01:22:20,690 --> 01:22:24,730 >> En die doel van hierdie is, in teorie, hulle verskaf konstante tyd afwag. 1881 01:22:24,730 --> 01:22:29,630 So as ek wil om te kyk dat byvoorbeeld, wie se someone-- 1882 01:22:29,630 --> 01:22:33,410 dat Mandel is in hierdie Trie, ek kon baie vinnig 1883 01:22:33,410 --> 01:22:36,260 in linear-- Ek is jammer, in konstante tyd uit te vind 1884 01:22:36,260 --> 01:22:39,010 of dit nou in die Trie. 1885 01:22:39,010 --> 01:22:41,500 Maar 'n nadeel, is kyk na hoe groot dit is. 1886 01:22:41,500 --> 01:22:44,120 Ons is nie eens die stoor wat veel data, en dit is groot. 1887 01:22:44,120 --> 01:22:47,950 So 'n groot nadeel is dat dit gebruik van 'n groot hoeveelheid van die geheue. 1888 01:22:47,950 --> 01:22:48,746 Ja. 1889 01:22:48,746 --> 01:22:50,610 >> GEHOOR: Hoekom is dit bied konstante tyd presies? 1890 01:22:50,610 --> 01:22:51,376 >> Spreker 1: Een meer tyd? 1891 01:22:51,376 --> 01:22:53,360 >> GEHOOR: Wat is die intuïsie want waarom dit bied konstante tyd? 1892 01:22:53,360 --> 01:22:54,610 >> Spreker 1: Uitstekende vraag. 1893 01:22:54,610 --> 01:22:56,030 Hoekom is dit bied konstante tyd? 1894 01:22:56,030 --> 01:22:59,280 So wat ons kan doen is, laat sê ons is op soek na Mandel. 1895 01:22:59,280 --> 01:23:02,830 Ons weet dat ons wil begin in die eerste vlak M. 1896 01:23:02,830 --> 01:23:06,890 Ons weet wat ons wil om dit te volg om E. So dit is 'n stap te neem, twee stappe, reg? 1897 01:23:06,890 --> 01:23:10,710 Ons volg dit N. Ons volg dit D. Ons volg dit E. Ons volg dit L. 1898 01:23:10,710 --> 01:23:15,100 En dan is die volgende ding wat ons gaan says-- hierdie delta sê Ja, dis 1899 01:23:15,100 --> 01:23:15,990 in ons tafel. 1900 01:23:15,990 --> 01:23:16,880 Dit is 'n woord. 1901 01:23:16,880 --> 01:23:19,900 Dit is 'n geldige inskrywing in ons Trie. 1902 01:23:19,900 --> 01:23:22,450 So jy sê, OK, wat het sewe stappe. 1903 01:23:22,450 --> 01:23:27,200 Maar as ons bygevoeg soos 'n zillion meer wetenskaplikes om hierdie data struktuur, 1904 01:23:27,200 --> 01:23:29,470 Ons wil nie hê om te kyk 'n zillion meer dinge. 1905 01:23:29,470 --> 01:23:33,580 Ons het net ooit gaan hê om te neem sewe stappe, die lengte van die persoon se 1906 01:23:33,580 --> 01:23:35,260 naam. 1907 01:23:35,260 --> 01:23:39,350 >> So, ons wil om te dink van runtime as, veronderstel 1908 01:23:39,350 --> 01:23:42,340 ons die grootte van ons data struktuur, hoeveel langer 1909 01:23:42,340 --> 01:23:44,580 gaan dit neem? 1910 01:23:44,580 --> 01:23:47,372 In hierdie geval, as ons voeg 'n klomp meer wetenskaplikes, beteken dit nie saak nie. 1911 01:23:47,372 --> 01:23:49,413 Dit is nog steeds gaan neem dieselfde hoeveelheid van die tyd. 1912 01:23:49,413 --> 01:23:50,350 Dit is konstante tyd. 1913 01:23:50,350 --> 01:23:50,850 Ja. 1914 01:23:50,850 --> 01:23:53,557 >> GEHOOR: Hoe weet jy nie te scan oor die ander getalle? 1915 01:23:53,557 --> 01:23:54,932 Spreker 1: Hoe weet ek hoe aan- 1916 01:23:54,932 --> 01:23:58,236 GEHOOR: Soos Hoe weet jy jy gaan reguit uit M E en nie aan M om 'n? 1917 01:23:58,236 --> 01:23:59,069 Spreker 1: O, seker. 1918 01:23:59,069 --> 01:24:01,620 Want ek het geweet ek was soek die woord Mandel, 1919 01:24:01,620 --> 01:24:04,195 en ek weet net dit is M-E. So that-- ja, gaan voort. 1920 01:24:04,195 --> 01:24:06,528 GEHOOR: Sou dit nie jy om te kyk na die ander letters 1921 01:24:06,528 --> 01:24:07,870 in die res van die [onhoorbaar]? 1922 01:24:07,870 --> 01:24:10,020 >> Spreker 1: Ag, sou nie ek om te kyk na the-- OK, groot. 1923 01:24:10,020 --> 01:24:10,790 Dit is 'n groot vraag. 1924 01:24:10,790 --> 01:24:12,170 Dit hang af hoe ons dit implementeer. 1925 01:24:12,170 --> 01:24:15,350 As ons dit implementeer as net soos 'n reeks van skikkings 1926 01:24:15,350 --> 01:24:18,100 waar ons weet dat E altyd by posisie 0, 1927 01:24:18,100 --> 01:24:21,270 Ek weet nie, wat ook al aantal indeks is op. 1928 01:24:21,270 --> 01:24:24,901 Ja, ons kan net nie konstant tyd doen, doen, doen, doen. 1929 01:24:24,901 --> 01:24:25,400 Koel. 1930 01:24:25,400 --> 01:24:27,556 Vraag daar? 1931 01:24:27,556 --> 01:24:30,927 >> GEHOOR: Is konstante tyd dieselfde as die werklike tyd? 1932 01:24:30,927 --> 01:24:33,260 Spreker 1: Is konstante tyd dieselfde ding is die regte tyd? 1933 01:24:33,260 --> 01:24:34,799 Ek is nie seker reële tyd is. 1934 01:24:34,799 --> 01:24:36,965 GEHOOR: Soos keer dat letterlik vorder tweede 1935 01:24:36,965 --> 01:24:40,150 deur die tweede in teenstelling met wat 'n onafhanklike veranderlike. 1936 01:24:40,150 --> 01:24:42,960 >> Spreker 1: O, ja, jy kan dink dit so. 1937 01:24:42,960 --> 01:24:46,240 Met ander woorde, dit is nie afhanklik van die grootte van die data-struktuur. 1938 01:24:46,240 --> 01:24:48,310 Dit is 'n manier om te dink nie. 1939 01:24:48,310 --> 01:24:50,510 Enige ander vrae? 1940 01:24:50,510 --> 01:24:53,120 Miskien in die eerste keer in geskiedenis, ons klaar op tyd. 1941 01:24:53,120 --> 01:24:57,080 As jy enige vrae het, voel vry om te kom vra ons, gaan na afdeling 1942 01:24:57,080 --> 01:25:00,190 praat met jou TFS, kantoor ure 08:00 en 08:30 1943 01:25:00,190 --> 01:25:03,985 om 11:00 op Maandag en Dinsdag, so dit is 'n bietjie anders tyd 1944 01:25:03,985 --> 01:25:05,110 so maak seker jy daardie noot. 1945 01:25:05,110 --> 01:25:06,048 Ja. 1946 01:25:06,048 --> 01:25:08,673 >> GEHOOR: Het ons nodig om te weet dinge soos command line argumente, 1947 01:25:08,673 --> 01:25:10,360 Dash ls, stamp alles? 1948 01:25:10,360 --> 01:25:11,840 >> Spreker 1: Command line argumente, en Linux instruksies, 1949 01:25:11,840 --> 01:25:13,010 Ja, jy moet die weet. 1950 01:25:13,010 --> 01:25:18,234 Very-- dit is soos die soort van vlak dinge wat ons gedek in artikel 0, 1951 01:25:18,234 --> 01:25:19,400 so ver as Linux instruksies go. 1952 01:25:19,400 --> 01:25:20,942 >> GEHOOR: Is die ure in Annenberg? 1953 01:25:20,942 --> 01:25:23,525 Spreker 1: Kantoor ure, ek is nie heeltemal seker waar hulle is. 1954 01:25:23,525 --> 01:25:25,980 Maar jy kan check die webwerf, en dit sal jou vertel. 1955 01:25:25,980 --> 01:25:27,499