1 00:00:00,000 --> 00:00:03,381 >> [MUSIC PLAYING] 2 00:00:03,381 --> 00:00:10,626 3 00:00:10,626 --> 00:00:11,610 >> [Video playback] 4 00:00:11,610 --> 00:00:13,640 >> O, yalançı. 5 00:00:13,640 --> 00:00:14,380 >> Nə -Haqqında? 6 00:00:14,380 --> 00:00:17,182 >> Mən bilmirəm. 7 00:00:17,182 --> 00:00:19,990 >> Biz nə bilirik -Yaxşı? 8 00:00:19,990 --> 00:00:23,145 >> 9:15, Ray yəni Santoya ATM idi. 9 00:00:23,145 --> 00:00:23,644 -Bəli. 10 00:00:23,644 --> 00:00:27,030 Belə ki, sual, nə O 9:16 at edirdi? 11 00:00:27,030 --> 00:00:29,720 >> Bir şey 9 millimetr çəkilişləri. 12 00:00:29,720 --> 00:00:31,540 Bəlkə o snayper gördüm. 13 00:00:31,540 --> 00:00:33,412 >> -Və Onunla iş idi. 14 00:00:33,412 --> 00:00:34,340 >> Gözləyin. 15 00:00:34,340 --> 00:00:36,200 Geri bir gedin. 16 00:00:36,200 --> 00:00:36,975 >> -Nə Görürsünüz? 17 00:00:36,975 --> 00:00:44,400 18 00:00:44,400 --> 00:00:47,805 >> Tam ekran qədər onun üz gətirin. 19 00:00:47,805 --> 00:00:48,680 >> -Onun Eynək. 20 00:00:48,680 --> 00:00:50,060 >> Bir əks -Var var. 21 00:00:50,060 --> 00:01:00,455 22 00:01:00,455 --> 00:01:02,280 >> -Bu Nuevitas beysbol komanda var. 23 00:01:02,280 --> 00:01:03,110 Bu onların logo var. 24 00:01:03,110 --> 00:01:05,820 >> -Və O söhbət Kim ki, jaket qalıcı oldu. 25 00:01:05,820 --> 00:01:06,670 >> [END playback] 26 00:01:06,670 --> 00:01:07,628 >> DAVID Malan: Bütün hüququ. 27 00:01:07,628 --> 00:01:11,210 Bu CS50 və bu bir az daha bir [Işitilemez] olan sen 28 00:01:11,210 --> 00:01:12,890 problemi ilə dabbling dörd seçin. 29 00:01:12,890 --> 00:01:16,606 Bu gün biz bir az daha baxmaq başlamaq dərin göstəricilərinə adlı bu şeylər, 30 00:01:16,606 --> 00:01:18,480 Bu baxmayaraq ki, olduqca gizli mövzu, 31 00:01:18,480 --> 00:01:20,813 bu olacaq çıxır ki, vasitə olmaq olan biz 32 00:01:20,813 --> 00:01:24,320 tikinti və montaj başlaya bilərsiniz daha çox inkişaf etmiş proqramları. 33 00:01:24,320 --> 00:01:28,150 Amma biz son çərşənbə günü bunu ilk bir claymation yolu ilə. 34 00:01:28,150 --> 00:01:30,190 Belə ki, bu, geri edir Binky və biz ondan istifadə 35 00:01:30,190 --> 00:01:33,148 bir proqram nəzər ki, həqiqətən bir şey maraqlı etmədi, 36 00:01:33,148 --> 00:01:34,950 ancaq bir neçə problemlər aşkar etdi. 37 00:01:34,950 --> 00:01:38,570 Belə ki, niyə biz gəzmək deyil, bu gün başlayacaq tez bu addımlar bir neçə ilə, 38 00:01:38,570 --> 00:01:41,920 insan şərtlərinə daxil çəkmək üçün cəhd edin dəqiq nə burada olacaq 39 00:01:41,920 --> 00:01:45,410 və niyə bu pis, sonra hərəkət və həqiqətən bir şey bina başlamaq 40 00:01:45,410 --> 00:01:46,309 bu texnika ilə? 41 00:01:46,309 --> 00:01:48,350 Belə ki, bu ilk idi Bu proqram iki xətləri 42 00:01:48,350 --> 00:01:51,340 və layman nin baxımından, nə Bu iki xətləri edirsən? 43 00:01:51,340 --> 00:01:55,600 Əsaslı rahat kimsə nə ekranda elan edir ilə? 44 00:01:55,600 --> 00:01:58,340 45 00:01:58,340 --> 00:02:00,120 Bunu bu iki xətləri hansılardır? 46 00:02:00,120 --> 00:02:02,070 Bu, bütün deyil ki, həftə bir müxtəlif, 47 00:02:02,070 --> 00:02:03,611 lakin bəzi yeni xüsusi simvolu var. 48 00:02:03,611 --> 00:02:04,152 Evet? 49 00:02:04,152 --> 00:02:05,628 Back var. 50 00:02:05,628 --> 00:02:07,092 >> Auditoriya: göstəricilərinə elan? 51 00:02:07,092 --> 00:02:08,050 DAVID Malan: daha demək? 52 00:02:08,050 --> 00:02:08,860 Auditoriya: göstəricilərinə elan? 53 00:02:08,860 --> 00:02:11,776 DAVID Malan: elan göstəricilərinə və nin bir az daha saflaşdırmaq edək. 54 00:02:11,776 --> 00:02:14,050 Auditoriya: [işitilemez] Ünvan x və sonra y. 55 00:02:14,050 --> 00:02:15,300 DAVID Malan: Və sonra müraciət. 56 00:02:15,300 --> 00:02:18,550 Belə ki, xüsusi biz işle biz iki dəyişənlərin elan edilir. 57 00:02:18,550 --> 00:02:21,252 Bu dəyişənlər, baxmayaraq ki, gedir növü int ulduz olmaq üçün 58 00:02:21,252 --> 00:02:23,210 daha çox xüsusi deməkdir Onlar saxlamaq üçün gedir 59 00:02:23,210 --> 00:02:26,450 bir int ünvanı, müvafiq olaraq, x və y. 60 00:02:26,450 --> 00:02:27,660 İndi hər hansı bir dəyərlər var? 61 00:02:27,660 --> 00:02:32,621 Bu bir faktiki ünvanlar var vaxt bu nöqtədə iki dəyişənlərin? 62 00:02:32,621 --> 00:02:33,120 Yox. 63 00:02:33,120 --> 00:02:35,030 Bu, sadəcə zibil dəyərlər belə deyirlər. 64 00:02:35,030 --> 00:02:38,120 Siz, həqiqətən, bir təyin deyilsə RAM idi nə dəyişən, 65 00:02:38,120 --> 00:02:42,224 əvvəllər adet sıfır ilə doldurmaq niyyətindədir və olanları bu dəyişənlərin də. 66 00:02:42,224 --> 00:02:44,140 Amma biz hələ bilmirəm nə onlar və ki 67 00:02:44,140 --> 00:02:47,060 niyə Binky üçün əsas olacaq Keçən həftə başını itirdi. 68 00:02:47,060 --> 00:02:49,980 >> Belə ki, bu claymation idi bu təcəssüm 69 00:02:49,980 --> 00:02:53,580 qovuşdurmağımız yalnız iki dəyişənlər var gildən kiçik dairəvi ədəd, 70 00:02:53,580 --> 00:02:57,330 ki dəyişənlərin saxlamaq, lakin bilər bükülü oxlar gəlir, 71 00:02:57,330 --> 00:03:00,640 onlar həqiqətən işarə deyilik yerdə özlüyündə tanınır. 72 00:03:00,640 --> 00:03:03,670 Beləliklə, biz bu xətti idi və bu yaddaş üçün idi yeni ötən həftə malloc 73 00:03:03,670 --> 00:03:07,130 yalnız bir xülya yoldur ayrılması, əməliyyat sistemi deyirəm, Linux 74 00:03:07,130 --> 00:03:09,750 və ya Mac OS və ya Windows, hey, Mənə bir yaddaş verir, 75 00:03:09,750 --> 00:03:11,780 və siz bütün demək əməliyyat sistemi 76 00:03:11,780 --> 00:03:14,699 yaddaş üçün xahiş zaman nə. 77 00:03:14,699 --> 00:03:16,990 Nə qayğı niyyətində deyil Siz bunu olacaq 78 00:03:16,990 --> 00:03:19,786 lakin əməliyyat demək lazımdır nə malloc yolu ilə sistemi. 79 00:03:19,786 --> 00:03:20,286 Evet? 80 00:03:20,286 --> 00:03:21,078 >> Auditoriya: nə qədər? 81 00:03:21,078 --> 00:03:21,994 DAVID Malan: nə qədər? 82 00:03:21,994 --> 00:03:25,280 Nə qədər bayt, və, belə ki, bu, yenə, bir göstərdi Məsələn, yalnız deyib 83 00:03:25,280 --> 00:03:27,360 Mənə bir int ölçüsü verir. 84 00:03:27,360 --> 00:03:30,550 Bir int İndi, ölçüsü dörd bytes və ya 32 bit edir. 85 00:03:30,550 --> 00:03:32,850 Belə ki, bu yalnız bir yoludur deyərək, hey, əməliyyat sistemi, 86 00:03:32,850 --> 00:03:37,290 Mənə yaddaş dörd bayt vermək Mən sərəncamında istifadə edə bilərsiniz ki, 87 00:03:37,290 --> 00:03:40,560 və xüsusi nə hörmətlə malloc qaytarılması 88 00:03:40,560 --> 00:03:41,795 Dörd bayt ki yığın üçün necə? 89 00:03:41,795 --> 00:03:44,110 90 00:03:44,110 --> 00:03:44,860 Auditoriya: Ünvan? 91 00:03:44,860 --> 00:03:45,901 DAVID Malan: ünvan. 92 00:03:45,901 --> 00:03:47,580 Dörd bayt ki, yığın ünvanı. 93 00:03:47,580 --> 00:03:48,190 Məhz. 94 00:03:48,190 --> 00:03:51,430 Və belə ki, nəticədə saxlanılır nə var Biz, həqiqətən, yoxdur, niyə x və ki 95 00:03:51,430 --> 00:03:55,240 qayğı nə ki sayı Bu OX1 ya OX2 olsun ünvan, var 96 00:03:55,240 --> 00:03:57,110 və ya bəzi sirli hexadecimal ünvanı. 97 00:03:57,110 --> 00:03:59,850 Biz yalnız pictorially qayğı ki, dəyişən x indi ki, 98 00:03:59,850 --> 00:04:01,630 yaddaş ki, yığın işarə. 99 00:04:01,630 --> 00:04:05,570 Belə ki, arrow bir göstərici təmsil, və ya daha dəqiq desək, bir yaddaş ünvanı. 100 00:04:05,570 --> 00:04:09,120 Ancaq yenə də, biz adətən qayğı yoxdur o faktiki URL nə. 101 00:04:09,120 --> 00:04:11,780 İndi bu xətt deyir nə layman nin baxımından? 102 00:04:11,780 --> 00:04:14,330 Star x 42 nöqtəli vergül olur. 103 00:04:14,330 --> 00:04:17,390 Bu nə deməkdir? 104 00:04:17,390 --> 00:04:18,200 Siz getmək istəyirsən? 105 00:04:18,200 --> 00:04:20,102 Boyun danışıq yoxdur. 106 00:04:20,102 --> 00:04:22,360 >> Auditoriya: x ünvanı 42 edir. 107 00:04:22,360 --> 00:04:24,300 >> DAVID Malan: x ünvanı 42 edir. 108 00:04:24,300 --> 00:04:25,190 Olduqca deyil. 109 00:04:25,190 --> 00:04:28,485 Belə ki, yaxın deyil, kifayət qədər var, çünki bu x prefixing ulduz. 110 00:04:28,485 --> 00:04:29,860 Beləliklə, biz bir az çimdik lazımdır. 111 00:04:29,860 --> 00:04:31,032 Evet? 112 00:04:31,032 --> 00:04:36,044 >> Auditoriya: dəyər ki, pointer x 42 işarə edir. 113 00:04:36,044 --> 00:04:36,710 DAVID Malan: OK. 114 00:04:36,710 --> 00:04:40,840 pointer x ki, dəyəri 42, deyək üçün edilir işarə edərək, 115 00:04:40,840 --> 00:04:44,165 və ya, ulduz başqa bir yol qoymaq x nə ünvana getmək deyir 116 00:04:44,165 --> 00:04:48,340 Bu 1 Oxford olsun, x deyil Küçə və ya 33 Oxford Street 117 00:04:48,340 --> 00:04:51,850 və ya OX1 ya OX33, nə , rəqəmli ünvan olduğunu 118 00:04:51,850 --> 00:04:54,380 star x x dereferencing edir. 119 00:04:54,380 --> 00:04:57,297 Belə ki, ünvana getmək və sonra sayı 42 qoymaq. 120 00:04:57,297 --> 00:04:59,380 Belə ki, ola ki, bir olduğunu söyləyən ekvivalent yol. 121 00:04:59,380 --> 00:05:01,860 Belə ki, bütün gözəl və sonra biz şəkil təmsil edəcək 122 00:05:01,860 --> 00:05:05,370 biz aşağıdakı kimi əlavə etdik harada Dörd ki, yığın 42 123 00:05:05,370 --> 00:05:09,370 , sağ tərəfində bayt lakin hər şeyi əyri getdi bu xətt idi 124 00:05:09,370 --> 00:05:11,120 və Binky baş atdı Bu nöqtədə off, 125 00:05:11,120 --> 00:05:15,290 pis şeylər zaman baş çünki Siz zibil dəyərlər dereference 126 00:05:15,290 --> 00:05:18,210 etibarsız dereference Siz və ya göstəricilərinə və mən etibarsız demək 127 00:05:18,210 --> 00:05:21,020 Çünki bu nöqtədə hekayə, y daxilində nədir? 128 00:05:21,020 --> 00:05:24,440 Based y dəyəri nədir Son bir neçə addımlar? 129 00:05:24,440 --> 00:05:25,360 Evet? 130 00:05:25,360 --> 00:05:26,115 Bu nədir? 131 00:05:26,115 --> 00:05:26,990 >> Auditoriya: bir ünvan. 132 00:05:26,990 --> 00:05:28,460 DAVID Malan: bir ünvan. 133 00:05:28,460 --> 00:05:31,910 Bu ünvan olmalıdır lakin mən bunu başlatılmış var? 134 00:05:31,910 --> 00:05:32,800 Belə ki, hələ yoxdur. 135 00:05:32,800 --> 00:05:35,430 Belə ki, orada olmaq üçün nə məlumdur? 136 00:05:35,430 --> 00:05:37,590 Bu, sadəcə bəzi zibil dəyəri var. 137 00:05:37,590 --> 00:05:41,500 Bu sıfırdan hər hansı bir PO ola bilər 2 milyard siz RAM iki gigs varsa, 138 00:05:41,500 --> 00:05:44,289 və ya sıfır 4 milyard Siz var əgər RAM dörd gigabayt var. 139 00:05:44,289 --> 00:05:46,080 Bu, bəzi zibil dəyəri var lakin problem 140 00:05:46,080 --> 00:05:48,200 əməliyyat sistemi ki, Bu sizə verdiyi əgər 141 00:05:48,200 --> 00:05:51,140 yaddaş ki, yığın xüsusi Siz getmək çalışdığınız ki, 142 00:05:51,140 --> 00:05:54,650 ümumiyyətlə nə səbəb olacaq bir seqmentasiya günah kimi gördüm. 143 00:05:54,650 --> 00:05:57,810 Belə ki, əslində, siz hər hansı olan ofis saat problemləri mübarizə 144 00:05:57,810 --> 00:06:00,393 və ya problemləri ki, daha çox ümumiyyətlə anlamaq üçün çalışırıq ilə 145 00:06:00,393 --> 00:06:02,150 bir seqmentasiya günah, ki, ümumiyyətlə deməkdir 146 00:06:02,150 --> 00:06:05,017 Siz bir seqment toxunan edirik Siz olmamalıdır yaddaş. 147 00:06:05,017 --> 00:06:07,350 Siz yaddaş toxunan edirik ki, əməliyyat sistemi deyil 148 00:06:07,350 --> 00:06:10,450 bu olsun, siz toxunmaq icazə Sizin array çox gedərək 149 00:06:10,450 --> 00:06:12,870 və ya olub, indi başlayır Siz toxunan edirik, çünki bu 150 00:06:12,870 --> 00:06:14,780 yalnız bir zibil dəyəri yaddaş. 151 00:06:14,780 --> 00:06:18,230 >> Belə ki, burada star x bunu undefined davranış sort. 152 00:06:18,230 --> 00:06:22,030 Siz bahis çünki heç vaxt , proqram yalnız qəza olacaq ki, 153 00:06:22,030 --> 00:06:24,050 deyərək edirik, çünki, bu ünvana getmək 154 00:06:24,050 --> 00:06:27,000 və siz heç bir fikrim burada var ki, ünvan əslində. 155 00:06:27,000 --> 00:06:30,300 Belə ki, əməliyyat sistemi çox güman ki, proqram qəza gedir 156 00:06:30,300 --> 00:06:33,840 nəticəsində həqiqətən kimi deyil nə Binky orada oldu. 157 00:06:33,840 --> 00:06:37,210 Belə ki, son nəticədə, Binky sabit Bu bu problem. 158 00:06:37,210 --> 00:06:38,909 Proqram özü flawed edilib. 159 00:06:38,909 --> 00:06:41,450 Amma sort irəliləmək əgər əvəzinə bu xətt icra, 160 00:06:41,450 --> 00:06:45,580 y yalnız x bərabərdir deməkdir nə Ünvan x, həmçinin y qoyun. 161 00:06:45,580 --> 00:06:48,740 >> Və belə pictorially, biz iki oxları ilə bu təmsil 162 00:06:48,740 --> 00:06:51,570 x və y işarə olan eyni yerə. 163 00:06:51,570 --> 00:06:55,760 Belə ki, semantically, x bərabərdir y o, həm də, çünki 164 00:06:55,760 --> 00:07:00,300 Eyni saxlanılması ünvan, bundan dolayı, 42 işarə 165 00:07:00,300 --> 00:07:04,910 və indi, zaman ulduz demək y, y ünvana getmək 166 00:07:04,910 --> 00:07:06,790 Bu maraqlı yan təsiri var. 167 00:07:06,790 --> 00:07:10,320 Belə ki, y ünvanı x Ünvan eyni şey. 168 00:07:10,320 --> 00:07:15,060 Belə ki, əgər ünvana getmək demək və y 13 dəyər dəyişdirmək, 169 00:07:15,060 --> 00:07:17,140 olan başqa təsir edir? 170 00:07:17,140 --> 00:07:21,100 X, point D, belə ki, danışmaq ki, eləcə də təsir edilməlidir. 171 00:07:21,100 --> 00:07:24,340 >> Həqiqətən, necə Nick bu şəkil çəkdi claymation məhz idi. 172 00:07:24,340 --> 00:07:28,665 Biz göstərici edin baxmayaraq y, biz eyni yerdə sona çatdı 173 00:07:28,665 --> 00:07:32,780 və biz çap olsaydı X və ya Y-nin pointee həyata, 174 00:07:32,780 --> 00:07:35,720 sonra biz 13 dəyəri görmək olardı. 175 00:07:35,720 --> 00:07:37,927 İndi pointee olmaq demək video ilə uyğundur. 176 00:07:37,927 --> 00:07:39,760 Programmers üçün mənim bilik, əslində heç 177 00:07:39,760 --> 00:07:42,460 söz pointee demək, guşəli edir ki, 178 00:07:42,460 --> 00:07:44,650 , lakin ardıcıllıq üçün video ilə həyata 179 00:07:44,650 --> 00:07:47,520 idi ki, bütün var ki, vəziyyət idi. 180 00:07:47,520 --> 00:07:54,190 Claymation Belə ki, hər hansı bir sualınız və ya göstəricilərinə və ya malloc yalnız hələ? 181 00:07:54,190 --> 00:07:54,850 Yox? 182 00:07:54,850 --> 00:07:55,470 Oldu. 183 00:07:55,470 --> 00:07:58,560 >> Belə ki, daha olmadan ado, Bir nəzər salaq 184 00:07:58,560 --> 00:08:00,700 Bu, həqiqətən, var harada bir müddət istifadə edilmişdir. 185 00:08:00,700 --> 00:08:03,580 Beləliklə, biz bu CS50 kitabxana etdik ki, bu funksiyaları bütün var. 186 00:08:03,580 --> 00:08:06,810 Biz GetInt GetString bir çox istifadə etdik yəqin ki, əvvəllər GetLongLong 187 00:08:06,810 --> 00:08:09,840 Mənim pset bir və ya belə, lakin həqiqətən nə davam edir? 188 00:08:09,840 --> 00:08:12,920 Yaxşı, tez nəzər salaq bir proqramda başlıq altında ki, 189 00:08:12,920 --> 00:08:17,017 biz sizə CS50 veririk ruhlandırır kitabxana, və həqiqətən keçən həftə etibarilə, 190 00:08:17,017 --> 00:08:18,850 biz bu qəbuluna başlamışdır təlim təkərlər off. 191 00:08:18,850 --> 00:08:21,080 Belə ki, bu, indi çeşidlənir bir postmortem nə 192 00:08:21,080 --> 00:08:23,690 var davam CS50 kitabxana daxili, 193 00:08:23,690 --> 00:08:27,250 biz indi hərəkət başlayacaq olsa da Ondan ən çox proqramları üçün. 194 00:08:27,250 --> 00:08:29,460 >> Belə ki, bu 0 scanf adlanan bir proqramdır. 195 00:08:29,460 --> 00:08:30,510 Bu super qısa. 196 00:08:30,510 --> 00:08:33,909 Bu, sadəcə bu xətləri var, lakin bir funksiyası adlanır scanf təqdim 197 00:08:33,909 --> 00:08:36,909 biz, həqiqətən, görmək olacaq ki, CS50 kitabxana daxilində bir an, 198 00:08:36,909 --> 00:08:38,600 bir az fərqli formada olsa. 199 00:08:38,600 --> 00:08:41,330 Line 16 Belə ki, bu proqram bir dəyişən x elan edir. 200 00:08:41,330 --> 00:08:43,150 Belə ki, mənə bir int üçün dörd bayt verir. 201 00:08:43,150 --> 00:08:45,750 Bu istifadəçi izah edilmişdir sayı edin, və sonra 202 00:08:45,750 --> 00:08:49,010 Bu maraqlı xətt ki, həqiqətən keçən həftə birlikdə əlaqələri 203 00:08:49,010 --> 00:08:49,790 və bu. 204 00:08:49,790 --> 00:08:53,230 Scanf, və sonra bir edir bildiriş format string, yalnız printf kimi, 205 00:08:53,230 --> 00:08:57,480 % I bir int deməkdir və sonra bir edir bir az görünür ikinci arqument 206 00:08:57,480 --> 00:08:58,260 funky. 207 00:08:58,260 --> 00:09:01,880 Bu işareti x, və geri, biz yalnız bu dəfə ötən həftə gördüm. 208 00:09:01,880 --> 00:09:03,465 Işareti x nəyi təmsil edir? 209 00:09:03,465 --> 00:09:06,210 210 00:09:06,210 --> 00:09:08,450 Işareti C nə edir? 211 00:09:08,450 --> 00:09:08,950 Evet? 212 00:09:08,950 --> 00:09:10,024 >> Auditoriya: ünvanı. 213 00:09:10,024 --> 00:09:11,190 DAVID Malan: ünvanı. 214 00:09:11,190 --> 00:09:13,190 Belə ki, əks edir star operator, 215 00:09:13,190 --> 00:09:17,270 star operator deyir halbuki, getmək Bu ünvan, işareti operator 216 00:09:17,270 --> 00:09:20,280 anlamaq deyir Bu dəyişən ünvan, 217 00:09:20,280 --> 00:09:23,530 və bu, çünki əsas həyat scanf məqsədi 218 00:09:23,530 --> 00:09:26,320 istifadəçi scan edir klaviatura giriş, 219 00:09:26,320 --> 00:09:29,970 nə asılı olaraq o növləri və sonra istifadəçi daxil oxumaq 220 00:09:29,970 --> 00:09:32,970 bir dəyişən, lakin biz Son iki həftə gördüm 221 00:09:32,970 --> 00:09:36,080 ki, svop funksiyası ki, biz həyata keçirilməsi üçün çaba cəhd 222 00:09:36,080 --> 00:09:37,110 yalnız qırıldı. 223 00:09:37,110 --> 00:09:42,470 Svop funksiyası ilə Xatırladaq ki, biz yalnız ints kimi A və B elan əgər, 224 00:09:42,470 --> 00:09:47,040 biz uğurla dəyişdirmək idi svop daxilində iki dəyişənlərin 225 00:09:47,040 --> 00:09:50,080 yalnız süd və OJ ilə kimi, lakin svop, geri qısa müddətdə 226 00:09:50,080 --> 00:09:55,200 hörmətlə nəticə nə oldu x və y, orijinal dəyərlər? 227 00:09:55,200 --> 00:09:55,700 Heç bir şey. 228 00:09:55,700 --> 00:09:56,200 Bəli. 229 00:09:56,200 --> 00:09:59,754 Heç bir şey, çünki o vaxt baş svopları, yalnız yerli nüsxə dəyişdirmək 230 00:09:59,754 --> 00:10:01,670 bütün demək olan bu dəfə, zaman biz 231 00:10:01,670 --> 00:10:04,010 dəlilləri keçir funksiyaları, biz istəyirik 232 00:10:04,010 --> 00:10:05,939 yalnız həmin dəlilləri nüsxə keçən. 233 00:10:05,939 --> 00:10:07,980 Siz ilə edə bilərsiniz Siz onlarla istədiyiniz nə olursa olsun, 234 00:10:07,980 --> 00:10:10,890 lakin onlar heç bir olacaq ilkin dəyərlərini təsir. 235 00:10:10,890 --> 00:10:13,650 Belə ki, bu, əgər problemlidir scanf kimi bir funksiyası var istəyirəm 236 00:10:13,650 --> 00:10:17,170 həyat, onun məqsədi scan edir klaviatura istifadəçi giriş 237 00:10:17,170 --> 00:10:22,010 və sonra, belə ki, blanklara doldurmaq danışmaq, ki, x kimi bir dəyişən vermək 238 00:10:22,010 --> 00:10:25,410 dəyəri, mən əgər çünki yalnız scanf x keçmək, 239 00:10:25,410 --> 00:10:28,790 son məntiqi hesab əgər həftə, scanf istəsə nə edə bilər 240 00:10:28,790 --> 00:10:33,100 x surəti ilə, lakin bilmədi veririk halda daimi x dəyişə 241 00:10:33,100 --> 00:10:37,120 , belə danışmaq, bir xəzinə xəritəsi scanf x spot qeyd harada vasitəsi 242 00:10:37,120 --> 00:10:41,860 biz ki, x ünvanı keçmək scanf var və həqiqətən dəyişiklik getmək bilər 243 00:10:41,860 --> 00:10:42,920 x dəyəri. 244 00:10:42,920 --> 00:10:45,080 Və, həqiqətən, bütün Bu proqram ki, 245 00:10:45,080 --> 00:10:53,180 Mən mənbə scanf 0, əgər 5m directory, scanf 0 etmək, 246 00:10:53,180 --> 00:10:57,730 dot scanf doğramaq sayı 50, xahiş edirik, 50 üçün təşəkkür edirik. 247 00:10:57,730 --> 00:11:01,020 >> Belə ki, bütün maraqlı deyil lakin həqiqətən nə baş 248 00:11:01,020 --> 00:11:04,820 tezliklə mən zəng kimi ki, burada x dəyəri scanf 249 00:11:04,820 --> 00:11:06,410 daimi dəyişib olunur. 250 00:11:06,410 --> 00:11:08,335 İndi bu gözəl görünür və yaxşı, və əslində, onu 251 00:11:08,335 --> 00:11:11,200 Biz, həqiqətən, ehtiyac yoxdur kimi görünür Bütün artıq at CS50 kitabxana. 252 00:11:11,200 --> 00:11:13,960 Məsələn, run edək Burada bu bir daha. 253 00:11:13,960 --> 00:11:15,750 Mənə bir ikinci üçün yenidən edək. 254 00:11:15,750 --> 00:11:20,600 Nin bir sıra cəhd edək edin və əvəzinə əvvəl 50 deyərək, 255 00:11:20,600 --> 00:11:22,810 Yalnız heç bir deyək. 256 00:11:22,810 --> 00:11:24,000 OK, bir az qəribə deyil. 257 00:11:24,000 --> 00:11:25,270 OLDU. 258 00:11:25,270 --> 00:11:28,680 Burada yalnız bir cəfəngiyatdır. 259 00:11:28,680 --> 00:11:31,170 Belə ki, görünmür səhv vəziyyətlərdə idarə. 260 00:11:31,170 --> 00:11:33,620 Beləliklə, biz start minimal lazımdır bəzi səhv yoxlanılması əlavə 261 00:11:33,620 --> 00:11:37,460 istifadəçi var ki, əmin etmək 50 kimi faktiki sayı tipli, 262 00:11:37,460 --> 00:11:40,720 yəqin yazaraq sözləri çünki problemli kimi aşkar deyil, 263 00:11:40,720 --> 00:11:42,020 lakin yəqin ki, olmalıdır. 264 00:11:42,020 --> 00:11:46,450 >> Indi ki, bu versiyası baxaq mənim cəhd GetString reimplement. 265 00:11:46,450 --> 00:11:48,437 Scanf bütün bu varsa funksionallığı inşa 266 00:11:48,437 --> 00:11:51,270 niyə biz bu ilə dabbling edilmişdir GetString kimi təlim təkərlər? 267 00:11:51,270 --> 00:11:55,450 Yaxşı, burada bəlkə mənim öz GetString sadə versiyası 268 00:11:55,450 --> 00:12:00,766 vasitəsi bir həftə əvvəl, dedim ola bilər, Mənə bir string vermək və bufer zəng. 269 00:12:00,766 --> 00:12:03,390 Bu gün mən yalnız başlamaq üçün gedirəm , char ulduz, geri söyləyərək 270 00:12:03,390 --> 00:12:04,400 yalnız sinonimi var. 271 00:12:04,400 --> 00:12:06,629 Bu scarier görünür, ancaq bu eyni şey. 272 00:12:06,629 --> 00:12:09,420 Belə ki, mənə dəyişən adlı bufer vermək ki, bir simli saxlamaq olacaq, 273 00:12:09,420 --> 00:12:12,780 istifadəçi simli edin deyə və sonra, əvvəl kimi, 274 00:12:12,780 --> 00:12:17,760 Bu dərs borc edək scanf % S bu dəfə və sonra bufer keçir. 275 00:12:17,760 --> 00:12:19,310 İndi tez ağlı başında olma çek. 276 00:12:19,310 --> 00:12:22,120 Niyə demirəm işareti bu dəfə bufer? 277 00:12:22,120 --> 00:12:25,190 278 00:12:25,190 --> 00:12:26,625 Əvvəlki misal nəticə çıxarmaq. 279 00:12:26,625 --> 00:12:28,000 Auditoriya: Char ulduz bir göstəricisidir. 280 00:12:28,000 --> 00:12:29,920 DAVID Malan: Məhz, bu dəfə char, çünki 281 00:12:29,920 --> 00:12:34,080 star, artıq bir göstərici, bir ünvanı orada olan ulduz müəyyən. 282 00:12:34,080 --> 00:12:37,530 Və scanf ünvan gözləyirsə, yalnız bufer keçmək kifayətdir. 283 00:12:37,530 --> 00:12:39,260 Mən işareti bufer demək ehtiyac yoxdur. 284 00:12:39,260 --> 00:12:42,177 Maraqlı, siz ola bilər bu kimi bir şey. 285 00:12:42,177 --> 00:12:43,510 Bu, müxtəlif məna olardı. 286 00:12:43,510 --> 00:12:47,240 Bu göstərici verəcək əslində bir göstərici üçün 287 00:12:47,240 --> 00:12:50,050 C, ancaq etibarlı şey İndi sadə saxlamaq imkan 288 00:12:50,050 --> 00:12:51,750 və ardıcıl hekayə saxlamaq. 289 00:12:51,750 --> 00:12:54,100 Mən yalnız keçmək gedirəm bufer ki, doğru deyil. 290 00:12:54,100 --> 00:12:56,487 problem olsa bu. 291 00:12:56,487 --> 00:12:58,820 Mənə davam və bu run edək onu tərtib sonra proqramı. 292 00:12:58,820 --> 00:13:00,902 Scanf 1 olun. 293 00:13:00,902 --> 00:13:02,610 Lanet olsun, bu, mənim compiler nin Mənim səhv tutmaq. 294 00:13:02,610 --> 00:13:04,090 Mənə bir ikinci verin. 295 00:13:04,090 --> 00:13:05,460 Cingilti. 296 00:13:05,460 --> 00:13:06,990 Nin scanf-1.c deyirlər. 297 00:13:06,990 --> 00:13:10,880 298 00:13:10,880 --> 00:13:11,380 OLDU. 299 00:13:11,380 --> 00:13:12,720 Biz orada getmək. 300 00:13:12,720 --> 00:13:14,280 Mənim buna ehtiyacım var. 301 00:13:14,280 --> 00:13:16,750 CS50 ID müxtəlif var konfiqurasiya parametrləri 302 00:13:16,750 --> 00:13:18,280 ki, özünüz qarşı qoruyur. 303 00:13:18,280 --> 00:13:21,300 Mən həmin aradan lazım özünüz bu dəfə cingilti çalışır. 304 00:13:21,300 --> 00:13:22,140 Belə ki, simli edin. 305 00:13:22,140 --> 00:13:25,560 Mən irəli getmək və yazın gedirəm mənim sevimli salam dünyada. 306 00:13:25,560 --> 00:13:26,490 Null, OK. 307 00:13:26,490 --> 00:13:27,700 Mən tipli nə deyil. 308 00:13:27,700 --> 00:13:29,690 Belə ki, göstəricisi var bir şey yanlış olan. 309 00:13:29,690 --> 00:13:33,920 Mənə davam və yazın imkan bir həqiqətən uzun simli. 310 00:13:33,920 --> 00:13:37,210 Null üçün təşəkkür edirik və mən bilmirəm əgər mən onu qəza etmək gedirəm. 311 00:13:37,210 --> 00:13:40,240 Bir az surəti cəhd edək yapışdırıb və bu kömək oldu. 312 00:13:40,240 --> 00:13:43,290 Məhz bu bir çox yapışdırıb. 313 00:13:43,290 --> 00:13:47,310 Bu, mütləq bir böyükdür adi daha string. 314 00:13:47,310 --> 00:13:51,450 Yalnız həqiqətən yazmaq edək. 315 00:13:51,450 --> 00:13:51,950 Yox. 316 00:13:51,950 --> 00:13:52,650 Lənət olsun. 317 00:13:52,650 --> 00:13:53,480 Command tapılmadı. 318 00:13:53,480 --> 00:13:54,550 Belə ki, olmayan var. 319 00:13:54,550 --> 00:13:56,440 Mən yapışdırılır ki, var bəzi pis simvol, 320 00:13:56,440 --> 00:13:59,780 lakin bu çıxır işləmək niyyətində deyil. 321 00:13:59,780 --> 00:14:03,510 >> , Çünki bu bir daha cəhd edək biz, həqiqətən, qəza əgər daha çox əyləncə var. 322 00:14:03,510 --> 00:14:09,116 Bu yazın edək və indi, mən həqiqətən uzun simli surəti gedir 323 00:14:09,116 --> 00:14:10,990 və indi əgər görək biz bu şey qəza bilər. 324 00:14:10,990 --> 00:14:14,235 Mən boşluq çıxarılmışdır və bildiriş yeni xətləri və semicolons 325 00:14:14,235 --> 00:14:16,035 bütün funky simvol. 326 00:14:16,035 --> 00:14:16,535 Daxil edin. 327 00:14:16,535 --> 00:14:21,090 328 00:14:21,090 --> 00:14:22,880 İndi şəbəkə yalnız yavaş olan oldu. 329 00:14:22,880 --> 00:14:27,460 Mən aydın çox uzun Command-V aşağı keçirilib. 330 00:14:27,460 --> 00:14:28,190 Lənət olsun! 331 00:14:28,190 --> 00:14:29,260 Command tapılmadı. 332 00:14:29,260 --> 00:14:29,780 >> OLDU. 333 00:14:29,780 --> 00:14:32,240 Yaxşı, nöqtə yenə aşağıdakı. 334 00:14:32,240 --> 00:14:36,910 Belə ki, həqiqətən gedir nə Bu bəyannamə ilə 335 00:14:36,910 --> 00:14:39,240 line 16 char ulduz bufer? 336 00:14:39,240 --> 00:14:41,820 Belə ki, əldə nə am Mən bir pointer elan zaman? 337 00:14:41,820 --> 00:14:47,440 Alıram bütün dörd byte dəyəri bufer adlanır, lakin onun daxilində nə var 338 00:14:47,440 --> 00:14:49,540 Hal-hazırda? 339 00:14:49,540 --> 00:14:50,930 Bu, sadəcə bəzi zibil dəyəri var. 340 00:14:50,930 --> 00:14:54,170 Hər hansı bir zamanda, çünki bir dəyişən elan C, yalnız bəzi zibil dəyəri var, 341 00:14:54,170 --> 00:14:56,220 və biz başlanğıc edirik Bu reallıq üzərində səfər. 342 00:14:56,220 --> 00:14:59,720 İndi scanf demək zaman, bu ünvana getmək 343 00:14:59,720 --> 00:15:01,520 və nə istifadəçi növləri qoydu. 344 00:15:01,520 --> 00:15:06,400 Istifadəçi növləri əgər salam dünya, yaxşı, mən harada qoymaq bilərəm? 345 00:15:06,400 --> 00:15:07,750 Buffer bir zibil dəyəri. 346 00:15:07,750 --> 00:15:11,510 >> Belə ki, ox kimi növ var ki, harada bilir işarə edir. 347 00:15:11,510 --> 00:15:13,880 Bəlkə işarə burada mənim yaddaş. 348 00:15:13,880 --> 00:15:16,560 Və belə zaman istifadəçi salam dünyada növləri, 349 00:15:16,560 --> 00:15:22,380 Proqram çalışır string salam dünya backslash 0 350 00:15:22,380 --> 00:15:23,910 yaddaş ki, yığın. 351 00:15:23,910 --> 00:15:27,070 Lakin yüksək ehtimalı ilə, lakin aydın deyil 100% ehtimalı, 352 00:15:27,070 --> 00:15:30,440 Kompüter sonra qəza gedir proqramı bu deyil, çünki 353 00:15:30,440 --> 00:15:32,490 yaddaş I toxunmaq icazə verilməlidir. 354 00:15:32,490 --> 00:15:36,330 Belə ki, qısa, bu proqram məhz səbəbdən qüsurlu. 355 00:15:36,330 --> 00:15:38,070 Mən əsaslı nə deyiləm? 356 00:15:38,070 --> 00:15:42,366 Hansı addımları Mən yalnız kimi, çıxarılmışdır var biz Binky nin ilk nümunəsi ilə çıxarılmışdır? 357 00:15:42,366 --> 00:15:42,866 Evet? 358 00:15:42,866 --> 00:15:43,710 >> Auditoriya: Yaddaş ayrılması? 359 00:15:43,710 --> 00:15:45,001 >> DAVID Malan: Yaddaş ayrılması. 360 00:15:45,001 --> 00:15:48,400 Mən, həqiqətən, ayrılan deyil ki, simli üçün hər hansı bir yaddaş. 361 00:15:48,400 --> 00:15:50,270 Beləliklə, biz yolları bir neçə bu düzeltebilirsiniz. 362 00:15:50,270 --> 00:15:52,700 Bir, biz sadə saxlamaq bilər və əslində, indi istəyirik 363 00:15:52,700 --> 00:15:55,116 bir blurring görmək üçün başlamaq niyyətindədir nə arasında xətləri 364 00:15:55,116 --> 00:15:58,520 bir sıra, bir string nə, nə var char ulduz chars nə bir sıra edir 365 00:15:58,520 --> 00:15:59,020 edir. 366 00:15:59,020 --> 00:16:02,450 Burada ikinci bir misal var strings və bildiriş cəlb 367 00:16:02,450 --> 00:16:05,690 bütün Mən line etdik 16 əvəzinə söyləyərək edir 368 00:16:05,690 --> 00:16:09,530 ki, bufer bir char olacaq star, yaddaş yığın bir göstərici, 369 00:16:09,530 --> 00:16:14,057 Mən çox fəal vermək gedirəm 16 simvol üçün özümü bir bufer, 370 00:16:14,057 --> 00:16:16,390 və əslində, tanış değilseniz müddətli Buffering ilə, 371 00:16:16,390 --> 00:16:20,570 yəqin ki, video dünyanın, bir video buffering, buffering olduğu, 372 00:16:20,570 --> 00:16:21,175 buffering. 373 00:16:21,175 --> 00:16:22,550 Yaxşı, əlaqəsi burada nə var? 374 00:16:22,550 --> 00:16:24,960 YouTube Yaxşı, Inside və video oyunçuların daxili 375 00:16:24,960 --> 00:16:27,200 ümumiyyətlə bir sıra edir 16-dən çox böyükdür. 376 00:16:27,200 --> 00:16:30,340 Bu ölçüsü bir bir sıra ola bilər MB, bəlkə 10 megabayt, 377 00:16:30,340 --> 00:16:34,330 ki, array daxil brauzerinizin yoxdur , bayt bütün dəstə download 378 00:16:34,330 --> 00:16:37,500 megabayt bütün dəstə video, və video player, 379 00:16:37,500 --> 00:16:40,930 YouTube və ya kim var, başlayır ki array bayt oxu, 380 00:16:40,930 --> 00:16:43,530 və hər zaman görmək söz buffering, buffering, 381 00:16:43,530 --> 00:16:46,350 oyunçu var deməkdir ki, serialın sonunda kazanılmış. 382 00:16:46,350 --> 00:16:50,430 şəbəkə deyil ki, belə yavaş daha bayt ilə array artırıldığı 383 00:16:50,430 --> 00:16:55,610 və siz bit bitti istifadəçi keçirmək üçün. 384 00:16:55,610 --> 00:16:59,430 >> Belə ki, bufer bir apt müddətli ki, burada yalnız bir sıra, yaddaş yığın var. 385 00:16:59,430 --> 00:17:02,530 Və bu düzeltmek edəcək bu çıxır, çünki 386 00:17:02,530 --> 00:17:07,410 serialların müalicə edə bilər ki, sanki hətta bufer baxmayaraq, ünvanları 387 00:17:07,410 --> 00:17:10,710 yalnız bir simvolu, bir var edir simvol ardıcıllıqla, bufer, 388 00:17:10,710 --> 00:17:14,760 mənim üçün faydalıdır, proqramçı, Əgər ətrafında onun adı keçə bilər 389 00:17:14,760 --> 00:17:17,079 Bu sanki bir pointer, kimi olsa 390 00:17:17,079 --> 00:17:21,000 bir yığın ünvanı idi 16 chars üçün yaddaş. 391 00:17:21,000 --> 00:17:24,530 Ki, belə ki, mən keçə bilər tam scanf söz 392 00:17:24,530 --> 00:17:30,670 və indi, mən bu proqram etmək, scanf 2 etmək, dot çizgi scanf 2, 393 00:17:30,670 --> 00:17:35,386 və yazın salam dünya, Ki, sýrada daxil edin 394 00:17:35,386 --> 00:17:37,590 >> Hmm, nə oldu? 395 00:17:37,590 --> 00:17:39,340 String edin. 396 00:17:39,340 --> 00:17:41,430 Mən yanlış nə idi? 397 00:17:41,430 --> 00:17:43,800 Salam dünya, bufer. 398 00:17:43,800 --> 00:17:44,705 Salam Dünya. 399 00:17:44,705 --> 00:17:48,201 400 00:17:48,201 --> 00:17:49,420 Ah, mən bunu nə bilirik. 401 00:17:49,420 --> 00:17:49,920 OLDU. 402 00:17:49,920 --> 00:17:51,628 Belə ki, bu qədər oxu ilk kosmik qədər. 403 00:17:51,628 --> 00:17:55,680 Belə ki, yalnız bir an fırıldaqçı imkan və Mən yalnız bir şey yazın istədiyini deyirlər 404 00:17:55,680 --> 00:18:01,408 həqiqətən uzun bu uzun cümlə kimi ki, bir, iki, üç, dörd, beş, 405 00:18:01,408 --> 00:18:04,420 altı, yeddi, səkkiz, doqquz, 10, 11, 12, 13, 14, 15, 16. 406 00:18:04,420 --> 00:18:05,300 OLDU. 407 00:18:05,300 --> 00:18:07,600 Bu, həqiqətən uzun cümlə. 408 00:18:07,600 --> 00:18:10,710 Belə ki, bu cümlə artıq 16 simvol 409 00:18:10,710 --> 00:18:13,670 və mən daxil edin hit zaman nə baş verəcək? 410 00:18:13,670 --> 00:18:16,940 Yaxşı, bu halda hekayə, mən elan etdi bufer 411 00:18:16,940 --> 00:18:22,190 həqiqətən bir sıra olan getmək üçün 16 chars hazır. 412 00:18:22,190 --> 00:18:27,426 Belə bir, iki, üç, dörd, beş, altı, yeddi, səkkiz, doqquz, 10, 11, 12, 13, 14, 413 00:18:27,426 --> 00:18:29,440 15, 16. 414 00:18:29,440 --> 00:18:34,410 Belə ki, 16 simvol və indi mən Bu uzun kimi bir şey oxumaq 415 00:18:34,410 --> 00:18:43,950 cümlə, nə etmək olacaq Mən bu oxumaq gedirəm ki, uzun 416 00:18:43,950 --> 00:18:49,660 S-E-N-T-E-N-C-E, cümlə. 417 00:18:49,660 --> 00:18:52,270 >> Belə ki, bu qəsdən deyil pis bir şey ki, mən 418 00:18:52,270 --> 00:18:55,060 kənarda yazılı saxlamaq Mənim serialın sərhədləri, 419 00:18:55,060 --> 00:18:56,660 Mənim bufer hüdudlarından kənarda. 420 00:18:56,660 --> 00:19:00,100 Mən xoşbəxt və proqram ala bilər qayğı çalışan saxlamaq və deyil, 421 00:19:00,100 --> 00:19:03,450 lakin ümumiyyətlə, bu danışan Həqiqətən mənim proqram qəza edəcək, 422 00:19:03,450 --> 00:19:06,440 və bir səhv mənim Mən addım an kod 423 00:19:06,440 --> 00:19:08,576 hüdudlarından kənarda ki, serialın, çünki 424 00:19:08,576 --> 00:19:10,450 bu əgər bilmirəm mütləq qəza gedir 425 00:19:10,450 --> 00:19:12,120 və ya yalnız şanslı almaq üçün gedirəm əgər. 426 00:19:12,120 --> 00:19:15,750 Belə ki, bu problemlidir, çünki Bu halda, bu iş görünür etmir 427 00:19:15,750 --> 00:19:20,931 və hətta baxmayaraq ki, burada taleyi aldatmaq imkan IDE bir qədər dözmək görünür 428 00:19:20,931 --> 00:19:21,430 of-- 429 00:19:21,430 --> 00:19:22,040 >> Biz orada getmək. 430 00:19:22,040 --> 00:19:23,240 Nəhayət. 431 00:19:23,240 --> 00:19:26,470 Mən bu edə bilərsiniz yalnız bir deyiləm. 432 00:19:26,470 --> 00:19:29,630 Mən yalnız əyləncə yazaraq bir çox idi həqiqətən uzun faktiki söz həyata 433 00:19:29,630 --> 00:19:32,800 əlbəttə ötüb ki, 16 bytes, çünki 434 00:19:32,800 --> 00:19:38,050 Bu crazy uzun multi-line tipli söz, sonra nə görürsünüz. 435 00:19:38,050 --> 00:19:41,110 proqram çap cəhd və sonra bir seqmentasiya günah var 436 00:19:41,110 --> 00:19:44,430 və seqmentləşdirmə çatışmazlıqlar zaman bu kimi bir şey olur 437 00:19:44,430 --> 00:19:47,650 və əməliyyat sistemi deyir heç bir ki, yaddaş toxuna bilməz. 438 00:19:47,650 --> 00:19:49,570 Biz öldürmək olacaq cəmi proqramı. 439 00:19:49,570 --> 00:19:51,180 >> Belə ki, bu problemli görünür. 440 00:19:51,180 --> 00:19:54,540 Mən proqram vasitəsi təkmilləşdirilmiş etdik ən azı, bəzi yaddaş 441 00:19:54,540 --> 00:19:58,000 lakin bu məhdudlaşdırmaq görünür əldə funksiyası GetString 442 00:19:58,000 --> 00:20:00,780 bəzi məhdud uzunluğu 16 strings. 443 00:20:00,780 --> 00:20:04,200 Artıq dəstək istəyirsinizsə Belə ki, 16 simvol cümlələr, 444 00:20:04,200 --> 00:20:04,880 Sən nə edirsən? 445 00:20:04,880 --> 00:20:07,970 Yaxşı, siz artıra bilər 32 bu bufer ölçüsü 446 00:20:07,970 --> 00:20:09,190 və ya bu cür qısa görünür. 447 00:20:09,190 --> 00:20:12,260 Niyə biz yalnız yoxdur 1000 lakin geri itələmək. 448 00:20:12,260 --> 00:20:17,100 Daxilən cavab nədir yalnız edərək bu problemi aradan qaldırılması 449 00:20:17,100 --> 00:20:20,660 1000 chars kimi, böyük mənim bufer? 450 00:20:20,660 --> 00:20:23,470 Bu şəkildə GetString həyata keçirməklə. 451 00:20:23,470 --> 00:20:27,130 Burada yaxşı və ya pis? 452 00:20:27,130 --> 00:20:28,033 Evet? 453 00:20:28,033 --> 00:20:30,574 Auditoriya: siz bir çox məcburidir varsa yer və siz onu istifadə etməyin, 454 00:20:30,574 --> 00:20:33,500 sonra siz ki, yer təkrar bölüşdürə bilməz. 455 00:20:33,500 --> 00:20:34,500 DAVID Malan: Absolutely. 456 00:20:34,500 --> 00:20:38,480 Siz deyil insofar kimi bu israfçı var həqiqətən o bayt 900 lazımdır 457 00:20:38,480 --> 00:20:41,057 və hələ üçün xahiş edirik Hər halda cəmi 1000, 458 00:20:41,057 --> 00:20:44,140 Siz yalnız daha çox yaddaş istehlak edirik sizə lazım çox istifadəçi kompüter, 459 00:20:44,140 --> 00:20:45,740 və bütün bir sonra Əgər siz artıq karşılaştıysanız 460 00:20:45,740 --> 00:20:47,620 həyat sizə etdiyiniz zaman ki, proqramları çox çalışan 461 00:20:47,620 --> 00:20:50,470 və onlar yaddaş çox qədər yemək edirik Bu, həqiqətən, performans təsir edə bilər 462 00:20:50,470 --> 00:20:52,220 və istifadəçi təcrübəsi kompüter. 463 00:20:52,220 --> 00:20:56,090 Belə ki, belə bir tənbəl həll, əmin üçün, və əksinə, 464 00:20:56,090 --> 00:21:00,140 Bu yalnız israfçı var, nə problem hələ mən bufer etmək olsa da, qalır 465 00:21:00,140 --> 00:21:02,100 1000? 466 00:21:02,100 --> 00:21:02,600 Evet? 467 00:21:02,600 --> 00:21:04,475 >> Auditoriya: simli uzunluğu 1,001 edir. 468 00:21:04,475 --> 00:21:05,350 DAVID Malan: Məhz. 469 00:21:05,350 --> 00:21:08,280 Sizin string uzunluğu 1,001 varsa, Siz eyni problem var, 470 00:21:08,280 --> 00:21:10,705 və dəlil ilə, mən yalnız o 2000 etmək 471 00:21:10,705 --> 00:21:12,830 ancaq bilmirəm bu olmalıdır necə böyük inkişaf, 472 00:21:12,830 --> 00:21:16,890 və hələ, mən proqram tərtib etmək lazımdır insanlar istifadə imkan əvvəl və download 473 00:21:16,890 --> 00:21:17,390 Bu. 474 00:21:17,390 --> 00:21:21,490 Belə ki, bu tam növüdür stuff CS50 kitabxana çalışır ki, 475 00:21:21,490 --> 00:21:24,750 ilə bizə kömək və biz yalnız nəzər lazımdır üçün əsas həyata bəzi 476 00:21:24,750 --> 00:21:29,790 Burada, lakin bu CS50 dot C. Bu CS50 IDE olmuşdur ki, fayl 477 00:21:29,790 --> 00:21:31,420 Siz istifadə etdiyiniz bütün bu həftə. 478 00:21:31,420 --> 00:21:34,280 Bu pre-tərtib və siz var avtomatik olaraq istifadə edilmişdir 479 00:21:34,280 --> 00:21:38,780 olan təbiət cingilti ilə L CS50 bayrağı dash, 480 00:21:38,780 --> 00:21:42,300 amma bütün vasitəsilə aşağı diyirləyin əgər bu funksiyaları, burada GetString var, 481 00:21:42,300 --> 00:21:44,636 və yalnız bir vermək nə dadı olur 482 00:21:44,636 --> 00:21:46,760 nin bir sürətli nəzər salaq nisbi mürəkkəbliyi. 483 00:21:46,760 --> 00:21:48,870 Bu super uzun funksiyası, lakin biz olmadı 484 00:21:48,870 --> 00:21:52,530 bütün ağır düşünmək lazımdır necə strings alınması haqqında getmək üçün. 485 00:21:52,530 --> 00:21:55,660 >> Belə ki, burada mənim bufer və mən var yəqin null onu başlamaq. 486 00:21:55,660 --> 00:21:57,990 Bu, əlbəttə, char ulduz kimi eyni şey, 487 00:21:57,990 --> 00:22:00,585 amma qərar CS50 kitabxana həyata 488 00:22:00,585 --> 00:22:02,460 biz olacaq əgər ki, tamamilə dinamik 489 00:22:02,460 --> 00:22:05,770 Mən necə böyük əvvəlcədən bilmirəm string users almaq istəyirəm edir. 490 00:22:05,770 --> 00:22:08,140 Belə ki, başlamaq üçün gedirəm yalnız bir boş simli ilə 491 00:22:08,140 --> 00:22:11,507 və mən daha çox yaratmaq üçün gedirəm Yaddaş Mən istifadəçi simli uyğun lazımdır 492 00:22:11,507 --> 00:22:13,340 Mən yoxsa kifayət qədər, mən xahiş gidiyorum 493 00:22:13,340 --> 00:22:15,010 daha çox yaddaş üçün əməliyyat sistemi. 494 00:22:15,010 --> 00:22:17,510 Mən onların simli hərəkət gedirəm yaddaş böyük bir yığın daxil 495 00:22:17,510 --> 00:22:21,847 və mən azad və ya azad gedirəm yaddaş kifayət qədər böyük bir yığın 496 00:22:21,847 --> 00:22:23,680 və biz yalnız olacaq iteratively bunu. 497 00:22:23,680 --> 00:22:25,570 >> Belə ki, bir Söyle, Burada yalnız bir dəyişən var 498 00:22:25,570 --> 00:22:28,780 olan I takip gedirəm Mənim bufer tutumu. 499 00:22:28,780 --> 00:22:30,071 Neçə bytes uyğun? 500 00:22:30,071 --> 00:22:32,070 Burada dəyişən n ilə var Mən saxlamaq üçün gedirəm olan 501 00:22:32,070 --> 00:22:36,200 həqiqətən neçə bayt track istifadəçi çap və ya ki, bufer. 502 00:22:36,200 --> 00:22:39,900 Siz əvvəl bu görmədim varsa, siz daxil edə bilərsiniz ki, bir int kimi bir dəyişən 503 00:22:39,900 --> 00:22:46,370 , adı təklif kimi olan, imzasız edir deməkdir qeyri-mənfi, və niyə 504 00:22:46,370 --> 00:22:50,590 Mən heç ifadə narahat istəyirəm bir int yalnız bir int deyil ki, 505 00:22:50,590 --> 00:22:52,540 lakin bir imzasız int var? 506 00:22:52,540 --> 00:22:55,064 Bu qeyri-mənfi int var. 507 00:22:55,064 --> 00:22:56,355 [Işitilemez] nə deməkdir? 508 00:22:56,355 --> 00:22:58,910 >> Auditoriya: Bu məbləğ izah edir yaddaş [Işitilemez] ola bilər. 509 00:22:58,910 --> 00:22:59,660 >> DAVID Malan: Bəli. 510 00:22:59,660 --> 00:23:03,710 Mən imzasız demək Belə ki, bu əslində əlavə yaddaş bir az verilməsi 511 00:23:03,710 --> 00:23:07,440 əgər və silly cür görünür, lakin , əlavə yaddaş bir az var 512 00:23:07,440 --> 00:23:09,940 bir çox kimi iki dəfə var deməkdir Siz təmsil edə bilər dəyərləri, 513 00:23:09,940 --> 00:23:11,570 bir 0 və ya 1 ola bilər, çünki. 514 00:23:11,570 --> 00:23:14,660 Belə ki, ismarıcları, bir int təxminən ola bilər mənfi 2 milyard bütün yolu 515 00:23:14,660 --> 00:23:16,030 müsbət 2 milyard qədər. 516 00:23:16,030 --> 00:23:18,540 Bu böyük silsilələri, lakin hələ də cür israfçı var 517 00:23:18,540 --> 00:23:21,280 Yalnız qayğı əgər ölçüləri olan yalnız daxilən 518 00:23:21,280 --> 00:23:24,620 mənfi olmayan olmalıdır və ya müsbət və ya 0, yaxşı, sonra, 519 00:23:24,620 --> 00:23:28,884 niyə 2 milyard israf edilir mənfi nömrələri üçün mümkün dəyərlər 520 00:23:28,884 --> 00:23:30,300 heç vaxt onlara istifadə etmək olacaq əgər? 521 00:23:30,300 --> 00:23:35,350 Belə bilərsiniz imzasız, indi mənim int deyərək 4 milyard 0 arasında təxminən olun. 522 00:23:35,350 --> 00:23:39,280 >> Belə ki, burada səbəblərdən yalnız bir int C var biz yalnız indi daxil deyil 523 00:23:39,280 --> 00:23:42,280 Bu əvəzinə int nə üçün bir char, lakin burada 524 00:23:42,280 --> 00:23:44,630 neler mahiyyət Siz və bəzi 525 00:23:44,630 --> 00:23:48,340 məsələn, istifadə edilə bilər, hətta pset dörd fgetc funksiyası 526 00:23:48,340 --> 00:23:51,580 və ya sonra, biz bunu görəcəyik yenidən problem beş, müəyyən 527 00:23:51,580 --> 00:23:55,410 fgetc çünki adı kimi gözəl növ, sort arcanely təklif 528 00:23:55,410 --> 00:23:57,940 bu bir funksiyası var ki, Bir xarakter alır və belə 529 00:23:57,940 --> 00:24:00,690 nə əsaslı müxtəlif biz GetString işle haqqında 530 00:24:00,690 --> 00:24:03,110 biz istifadə etdiyiniz deyil eyni şəkildə scanf. 531 00:24:03,110 --> 00:24:07,550 Biz yalnız addım-addım boyunca sürünən olunur nə üzərində istifadəçi tipli, 532 00:24:07,550 --> 00:24:10,970 biz həmişə bir ayıra bilər, çünki char, və biz həmişə təhlükəsiz edə bilərsiniz 533 00:24:10,970 --> 00:24:15,599 bir-bir char baxmaq və sehrli burada baş başlayır. 534 00:24:15,599 --> 00:24:17,890 Mən aşağı diyirləyin gedirəm Bu funksiya orta 535 00:24:17,890 --> 00:24:20,360 yalnız qısa bu funksiyanı təqdim etmək. 536 00:24:20,360 --> 00:24:22,670 Çox var kimi malloc funksiyası var 537 00:24:22,670 --> 00:24:27,740 bir realloc funksiyası olduğu realloc Siz yaddaş yığın təkrar bölüşdürə imkan verir 538 00:24:27,740 --> 00:24:29,570 və bu böyük və ya kiçik etmək. 539 00:24:29,570 --> 00:24:33,060 Belə ki, uzun hekayə qısa və Bu gün əlimdə bir dalğa, 540 00:24:33,060 --> 00:24:35,620 nə GetString bilir edir ki, sort var edir 541 00:24:35,620 --> 00:24:39,720 bir magically artan və ya istifadəçi kimi bufer azalan 542 00:24:39,720 --> 00:24:41,440 onun simli növləri. 543 00:24:41,440 --> 00:24:43,962 >> Belə ki, əgər istifadəçi bir qısa string, bu kodu 544 00:24:43,962 --> 00:24:45,920 yalnız kifayət qədər vəsait ayırıb yaddaş simli uyğun. 545 00:24:45,920 --> 00:24:48,086 Istifadəçi yazaraq saxlayır Mən bir daha və yenidən kimi 546 00:24:48,086 --> 00:24:50,330 və yenidən, yaxşı, əgər bufer nin ilkin bu böyük 547 00:24:50,330 --> 00:24:53,310 və proqram həyata keçirir bir dəqiqə gözləyin, mən kosmik həyata deyiləm, 548 00:24:53,310 --> 00:24:55,410 Bu ikiqat olacaq bufer ölçüsü 549 00:24:55,410 --> 00:24:59,110 və sonra bufer ölçüsü ikiqat və misli yoxdur indeksi, 550 00:24:59,110 --> 00:25:03,170 Biz burada baxmaq əgər, bu bu ağıllı bir-liner. 551 00:25:03,170 --> 00:25:06,830 Bu sintaksis görmüşəm bilər əvvəl, ancaq ulduz bərabərdir demək əgər, 552 00:25:06,830 --> 00:25:10,470 Bu eyni şey kimi gücü dəfə 2 söyləyərək. 553 00:25:10,470 --> 00:25:13,390 Belə ki, yalnız misli saxlayır bufer tutumu 554 00:25:13,390 --> 00:25:17,480 və sonra realloc izah vermək özü ki, daha çox yaddaş. 555 00:25:17,480 --> 00:25:19,720 >> İndi kimi bir kənara var Burada digər funksiyaları 556 00:25:19,720 --> 00:25:23,680 Biz hər hansı bir detal baxmaq deyil ki, GetInt göstərmək üçün başqa, 557 00:25:23,680 --> 00:25:26,150 biz GetInt GetString istifadə edin. 558 00:25:26,150 --> 00:25:28,192 Biz bu deyil ki, yoxlamaq null, olan, geri, 559 00:25:28,192 --> 00:25:30,400 xüsusi dəyər ki, bir şey yanlış getdi deməkdir. 560 00:25:30,400 --> 00:25:31,233 Biz yaddaş bitti. 561 00:25:31,233 --> 00:25:32,310 Better ki yoxlayın. 562 00:25:32,310 --> 00:25:33,710 Və biz bir sentinel dəyər qayıtmaq. 563 00:25:33,710 --> 00:25:37,850 Amma kimi şərh təxirə lazımdır niyə sonra biz scanf bu əmisi oğlu istifadə 564 00:25:37,850 --> 00:25:42,100 sscanf adlanır və bu çıxır ki sscanf, və ya simli scanf, 565 00:25:42,100 --> 00:25:45,310 Siz line nəzər imkan verir ki, istifadəçi tipli və imkan edib 566 00:25:45,310 --> 00:25:49,610 mahiyyətcə təhlil və mən nə Burada bunu mən sscanf deyirəm ki, 567 00:25:49,610 --> 00:25:54,440 istifadəçi var nə təhlil Yığdığınız və əmin% i etmək, 568 00:25:54,440 --> 00:25:59,250 Orada bir tam və biz deyil də var dəqiq niyə bu gün daxil 569 00:25:59,250 --> 00:26:03,760 Özetle bir% burada c, lakin imkan verir istifadəçi tipli əgər bizə aşkar etmək üçün 570 00:26:03,760 --> 00:26:06,050 sıra sonra saxta bir şey. 571 00:26:06,050 --> 00:26:11,766 Belə ki, səbəb ki, GetInt və GetString yeniden, yeniden sizə, yeniden 572 00:26:11,766 --> 00:26:13,640 çünki bütün edir biz yazdıq ki indeksi, 573 00:26:13,640 --> 00:26:17,900 bu cür istifadəçi girişinə axtarır əmin edilməsi tamamilə rəqəmli var 574 00:26:17,900 --> 00:26:21,700 və ya faktiki üzən var point dəyəri və ya kimi, 575 00:26:21,700 --> 00:26:24,233 nə dəyərindən asılı olaraq istifadə etdiyiniz fəaliyyət göstərir. 576 00:26:24,233 --> 00:26:25,060 >> Whew. 577 00:26:25,060 --> 00:26:25,710 OLDU. 578 00:26:25,710 --> 00:26:27,592 Ki, bir qurtum idi lakin baxımından burada 579 00:26:27,592 --> 00:26:29,550 ki, biz idi səbəbi bu təlim təkərlər haqqında 580 00:26:29,550 --> 00:26:32,880 Çünki ən aşağı səviyyədədir yalnız çox şey var ki, 581 00:26:32,880 --> 00:26:35,674 istədik ki, yanlış getmək bilər preemptively idarə etmək 582 00:26:35,674 --> 00:26:38,090 əlbəttə o şeyi sinif erkən həftə, 583 00:26:38,090 --> 00:26:42,230 lakin indi pset dörd və pset beş ilə kənarda ona daha çox olduğunu görəcəksiniz 584 00:26:42,230 --> 00:26:45,570 Siz həm də daha çox qadir olduğunuz problemləri bu cür həll 585 00:26:45,570 --> 00:26:47,180 Özünüz. 586 00:26:47,180 --> 00:26:51,770 GetString ya GetInt hər hansı suallar? 587 00:26:51,770 --> 00:26:52,630 Evet? 588 00:26:52,630 --> 00:26:55,130 >> Auditoriya: Niyə iki dəfə olardı bufer tutumu 589 00:26:55,130 --> 00:26:57,630 deyil, yalnız artan çox Bu dəqiq məbləği? 590 00:26:57,630 --> 00:26:58,100 >> DAVID Malan: Yaxşı sualdır. 591 00:26:58,100 --> 00:27:00,474 Niyə biz gücü iki dəfə olardı Bufer fərqli olaraq 592 00:27:00,474 --> 00:27:02,800 yalnız artan bəzi sabit dəyər? 593 00:27:02,800 --> 00:27:03,900 Bu dizayn qərar idi. 594 00:27:03,900 --> 00:27:08,590 Biz yalnız çalışır, çünki ki, qərar vaxt müdrik bahalı az xahiş olmaq 595 00:27:08,590 --> 00:27:10,440 əməliyyat sistemi yaddaş üçün, biz etmədik 596 00:27:10,440 --> 00:27:13,210 minərkən başa istəyirəm böyük strings üçün bir vəziyyət 597 00:27:13,210 --> 00:27:14,960 biz xahiş edilmişdir ki, Təkrar OS 598 00:27:14,960 --> 00:27:17,500 və yenidən və yenidən Yaddaş üçün sürətli ardıcıllıqla. 599 00:27:17,500 --> 00:27:20,387 Belə ki, biz yalnız bir qədər qərar özbaşına lakin biz əsaslı ümid, 600 00:27:20,387 --> 00:27:22,720 ki, siz edək nə irəlidə özümüz almaq üçün cəhd 601 00:27:22,720 --> 00:27:25,520 və yalnız ki, bunu iki dəfə saxlamaq biz dəfə məbləği azaltmaq 602 00:27:25,520 --> 00:27:29,010 biz malloc zəng etmək və ya realloc, lakin ümumi qərar 603 00:27:29,010 --> 00:27:31,820 bilmədən olmaması zəng Nə istifadəçilər yazın edə bilərsiniz. 604 00:27:31,820 --> 00:27:33,600 Hər iki yolları əsaslı ola bilər. 605 00:27:33,600 --> 00:27:35,430 Arguably yaxşı. 606 00:27:35,430 --> 00:27:39,240 >> Belə ki, bir neçə nəzər salaq Yaddaş digər yan təsirləri, 607 00:27:39,240 --> 00:27:41,610 yanlış getmək bilər şeylər və alətləri bilərsiniz 608 00:27:41,610 --> 00:27:43,880 səhvlər bu cür tutmaq üçün istifadə edin. 609 00:27:43,880 --> 00:27:47,800 Bu baxmayaraq, siz bütün çıxır check50, siz kimi çox bildirmədi 610 00:27:47,800 --> 00:27:50,050 arabası yazılı edilmişdir Həftə bəri indeksi, 611 00:27:50,050 --> 00:27:53,630 hətta bütün check50 testlər əgər keçdi və hətta sizin və TF 612 00:27:53,630 --> 00:27:56,010 ki, super əminik nəzərdə tutulan kimi code işləyir. 613 00:27:56,010 --> 00:27:59,190 Sizin kodu arabası olmuşdur və ya Siz ki, bütün flawed, 614 00:27:59,190 --> 00:28:02,540 CS50 kitabxana istifadə, yaddaş sızan edilmişdir. 615 00:28:02,540 --> 00:28:06,040 Siz əməliyyat sistemi xahiş etdik proqramların ən xatirə 616 00:28:06,040 --> 00:28:08,850 Siz yazdıq, lakin siz var həqiqətən geri heç vaxt. 617 00:28:08,850 --> 00:28:12,110 Siz GetString adlı etdik və GetInt və GetFloat, 618 00:28:12,110 --> 00:28:15,270 lakin GetString ilə, siz var unGetString və ya ver adlı heç vaxt 619 00:28:15,270 --> 00:28:19,890 String Back ya kimi, lakin biz gördük GetString yaddaş ayrılması ki, 620 00:28:19,890 --> 00:28:22,810 malloc yolu və ya bu yalnız funksiyası realloc, 621 00:28:22,810 --> 00:28:25,670 ruhunda çox oxşar, və hələ biz oldum 622 00:28:25,670 --> 00:28:28,629 üçün əməliyyat sistemi xahiş yaddaşı və yaddaş təkrar 623 00:28:28,629 --> 00:28:29,670 lakin onu geri verilməsi heç vaxt. 624 00:28:29,670 --> 00:28:33,550 >> İndi kənara kimi, bu çıxır ki, bir proqram yaddaş bütün fit zaman 625 00:28:33,550 --> 00:28:34,870 avtomatik azad olunur. 626 00:28:34,870 --> 00:28:36,150 Belə ki, böyük bir şey olmuşdur deyil. 627 00:28:36,150 --> 00:28:38,590 Bu qırmaq niyyətində deyil IDE və ya yavaş şeyi aşağı, 628 00:28:38,590 --> 00:28:40,670 lakin zaman proqramları yoxdur ümumiyyətlə yaddaş sızma 629 00:28:40,670 --> 00:28:42,170 və onlar uzun müddət çalışan edirik. 630 00:28:42,170 --> 00:28:45,640 Əgər axmaq az gördüm varsa Mac OS və ya hourglass çimərlik top 631 00:28:45,640 --> 00:28:51,160 Windows bu cür olduğu aşağı yavaşlatan və ya düşüncə və ya düşüncə 632 00:28:51,160 --> 00:28:53,770 və ya yalnız həqiqətən başlayır bir tarama üçün yavaş, 633 00:28:53,770 --> 00:28:56,960 bu, çox bəlkə ola bilər yaddaş sızması nəticəsində baş. 634 00:28:56,960 --> 00:28:59,970 yazdı proqramçılar istifadə etdiyiniz proqram 635 00:28:59,970 --> 00:29:03,570 yaddaş üçün əməliyyat sistemi xahiş bir neçə dəqiqə, hər saat. 636 00:29:03,570 --> 00:29:05,570 Amma yayınlıyorsanız Bu belə software, 637 00:29:05,570 --> 00:29:08,680 Sizin kompüter minimuma sonunda saat və ya gün, 638 00:29:08,680 --> 00:29:11,980 Daha çox və daha çox üçün xahiş edilə bilər yaddaş və əslində heç istifadə 639 00:29:11,980 --> 00:29:15,180 və sizin code ola bilər, və ya proqramları, yaddaş sızması ola bilər 640 00:29:15,180 --> 00:29:18,350 və yaddaş sızma başlamaq əgər, digər proqramları üçün daha az yaddaş var, 641 00:29:18,350 --> 00:29:21,220 və təsiri edir hər şeyi aşağı yavaş. 642 00:29:21,220 --> 00:29:23,600 >> İndi, bu günə qədər biri ilə ən dəhşətli proqramları 643 00:29:23,600 --> 00:29:26,350 Siz imkanlar var CS50 run insofar 644 00:29:26,350 --> 00:29:31,650 onun çıxış daha çox ezoterik kimi cingilti və ya nin və ya komanda hər hansı 645 00:29:31,650 --> 00:29:35,930 biz əvvəl etdik line proqramları lakin təşəkkürlə, onun çıxışı əlaqədar 646 00:29:35,930 --> 00:29:39,810 bəzi super faydalı məsləhətləri ki, faydalı bilərsiniz pset dörd olacaq 647 00:29:39,810 --> 00:29:41,510 və ya əlbəttə beş pset. 648 00:29:41,510 --> 00:29:44,250 Belə Valgrind bir vasitədir ki, baxmaq üçün istifadə edilə bilər 649 00:29:44,250 --> 00:29:46,930 proqram yaddaş sızıntıları üçün. 650 00:29:46,930 --> 00:29:48,570 Bu çalıştırmak üçün nisbətən sadə. 651 00:29:48,570 --> 00:29:51,420 Siz hətta valgrind və sonra run bir az verbose baxmayaraq, 652 00:29:51,420 --> 00:29:54,440 dash dash qaçağı tam bərabərdir, və sonra dot 653 00:29:54,440 --> 00:29:56,320 doğramaq və proqram adı. 654 00:29:56,320 --> 00:30:00,010 Belə ki, valgrind sonra proqramı davam edəcək və proqram çox sonunda 655 00:30:00,010 --> 00:30:02,240 fit əvvəl çalışan və , başqa bir tez verir 656 00:30:02,240 --> 00:30:04,980 Bu təhlil etmək olacaq sizin Bu proqram çalışan edilmişdir isə 657 00:30:04,980 --> 00:30:07,740 və siz sızma idi demək daha yaxşı hələ hər hansı bir yaddaş və, 658 00:30:07,740 --> 00:30:10,610 Siz yaddaş toxunmaq ki, Sizə aid deyil? 659 00:30:10,610 --> 00:30:13,700 O hər şeyi tutmaq bilməz, lakin bu ən şey tutmaq olduqca yaxşı. 660 00:30:13,700 --> 00:30:19,700 >> Belə ki, burada mənim olan run bir misal var Bu proqram, run Valgrind olan, 661 00:30:19,700 --> 00:30:21,470 adlı proqramı üzrə yaddaş və mən gedirəm 662 00:30:21,470 --> 00:30:24,730 xətləri qeyd etmək nəticədə bizim üçün maraq. 663 00:30:24,730 --> 00:30:27,690 Belə ki, daha çox distractions var Mən slayd silindi etdik ki. 664 00:30:27,690 --> 00:30:30,930 Amma yalnız nə bu görək Proqram izah etməyə qadirdir. 665 00:30:30,930 --> 00:30:34,800 Bu, bizə hər şeyi izah qadir ölçüsü 4 etibarsız yazmaq kimi. 666 00:30:34,800 --> 00:30:38,020 Başqa sözlə, siz yaddaş toxunmaq, əgər, Yaddaş xüsusi 4 bayt 667 00:30:38,020 --> 00:30:40,350 Siz var ki, valgrind sizə deyə bilərəm ki. 668 00:30:40,350 --> 00:30:41,660 Ölçüsü 4 Yanlış yazmaq. 669 00:30:41,660 --> 00:30:43,640 Siz dörd bayt toxunub Siz var ki,. 670 00:30:43,640 --> 00:30:44,840 Harada siz bunu etdiniz? 671 00:30:44,840 --> 00:30:45,900 Bu gözəllik deyil. 672 00:30:45,900 --> 00:30:50,000 Yaddaş dot c line 21 harada var qıfıllar və faydalıdır edirdi. 673 00:30:50,000 --> 00:30:53,410 Çox gdb kimi, bu kömək edə bilər faktiki səhv qeyd. 674 00:30:53,410 --> 00:30:57,170 >> İndi, bu bir az daha var verbose, confusing əgər. 675 00:30:57,170 --> 00:31:01,307 1 blok 40 bayt mütləq loss rekord 1 1 itirdi. 676 00:31:01,307 --> 00:31:02,140 Bunun mənası nədir? 677 00:31:02,140 --> 00:31:05,920 Bəli, bu yalnız sizin üçün xahiş deməkdir 40 bytes və onu geri verdi, heç vaxt. 678 00:31:05,920 --> 00:31:08,930 Siz malloc adlı ya adlı GetString və əməliyyat sistemi 679 00:31:08,930 --> 00:31:12,450 40 bytes, ancaq heç vaxt verdi azad və ya yaddaş azad, 680 00:31:12,450 --> 00:31:15,400 və ədalətli olmaq, biz heç etdik Siz necə yaddaş geri vermək. 681 00:31:15,400 --> 00:31:17,910 Super var çıxır sadə funksiyası pulsuz çağırıb. 682 00:31:17,910 --> 00:31:21,170 Bir dəlil, şey edir Siz pulsuz və ya geri vermək istəyirəm 683 00:31:21,170 --> 00:31:23,430 lakin 40 bayt, yəqin, Bu proqram 684 00:31:23,430 --> 00:31:27,300 xəttində itirmişdir Yaddaş 20 c nöqtə. 685 00:31:27,300 --> 00:31:28,650 >> Belə ki, bu proqram görək. 686 00:31:28,650 --> 00:31:31,020 Bu super yararsız var. 687 00:31:31,020 --> 00:31:33,980 Bu, yalnız nümayiş etdirir bu səhv. 688 00:31:33,980 --> 00:31:34,920 Belə ki, bir nəzər salaq. 689 00:31:34,920 --> 00:31:39,920 Burada əsas və əsas, bildiriş, zənglər edir bir funksiyası f və sonra yekunları çağırıb. 690 00:31:39,920 --> 00:31:41,550 Belə ki, bütün maraqlı deyil. 691 00:31:41,550 --> 00:31:42,664 F nə edir? 692 00:31:42,664 --> 00:31:44,330 Mən bir prototip ilə narahat etmədi edək. 693 00:31:44,330 --> 00:31:46,520 Mən kodu saxlamaq istəyirdi mümkün qədər minimal. 694 00:31:46,520 --> 00:31:49,530 Belə ki, əsas yuxarıda f qoymaq və ki, əlbəttə, gözəl 695 00:31:49,530 --> 00:31:51,500 bu kimi qısa proqramları üçün. 696 00:31:51,500 --> 00:31:56,910 Belə ki, f şey qayıtmaq və etmir Biz bir şey almaq, lakin bunu etmir. 697 00:31:56,910 --> 00:31:59,620 Bu çox kimi bəyan edir Binky məsələn, 698 00:31:59,620 --> 00:32:02,682 ki, x adlı göstərici olacaq bir int ünvanı saxlamaq üçün. 699 00:32:02,682 --> 00:32:03,890 Belə ki, sol tərəfi var. 700 00:32:03,890 --> 00:32:07,230 İngilis, nə bunu sağ tərəfində? 701 00:32:07,230 --> 00:32:09,770 Hər kəs? 702 00:32:09,770 --> 00:32:13,665 Bu, bizim üçün nə edir? 703 00:32:13,665 --> 00:32:14,651 Evet? 704 00:32:14,651 --> 00:32:16,623 >> Auditoriya: [işitilemez] dəfə bir int ölçüsü 705 00:32:16,623 --> 00:32:19,175 olan 10 dəfə ki, [işitilemez] 706 00:32:19,175 --> 00:32:20,800 DAVID Malan: Yaxşı və mənə yekunlaşdırmaq bildirin. 707 00:32:20,800 --> 00:32:25,480 Belə ki, 10 integers üçün kifayət qədər yer ayırmaq və ya 10, bir int ölçüsü, nə 708 00:32:25,480 --> 00:32:29,340 4 dörd bayt, belə ki, 10 dəfə var 40, mən etdik ki sağ tərəfində belə 709 00:32:29,340 --> 00:32:33,930 Qeyd mənə 40 bayt verir və ilk byte ünvan saxlamaq 710 00:32:33,930 --> 00:32:34,940 x daxil. 711 00:32:34,940 --> 00:32:38,380 İndi nəhayət, burada harada Bu proqram arabası, nə var 712 00:32:38,380 --> 00:32:41,540 line 21 ilə yanlış məntiq əsasında? 713 00:32:41,540 --> 00:32:45,197 714 00:32:45,197 --> 00:32:46,280 Nə line 21 ilə yanlış var? 715 00:32:46,280 --> 00:32:46,780 Evet? 716 00:32:46,780 --> 00:32:49,550 Auditoriya: Siz edə bilərsiniz [Işitilemez] x daxil index. 717 00:32:49,550 --> 00:32:50,300 DAVID Malan: Bəli. 718 00:32:50,300 --> 00:32:52,270 Mən belə x daxil index olmamalıdır. 719 00:32:52,270 --> 00:32:53,850 Belə syntactically, ki, OK. 720 00:32:53,850 --> 00:32:56,990 Nə gözəl sizin kimi çox deyil bir sıra adını müalicə edə bilər 721 00:32:56,990 --> 00:33:01,080 sanki eyni, bir göstərici var bu sanki bir göstərici müalicə edə bilər 722 00:33:01,080 --> 00:33:06,425 bir sıra və mən syntactically bilər x bracket bir şey demək, x bracket i, 723 00:33:06,425 --> 00:33:07,800 lakin 10 problemlidir. 724 00:33:07,800 --> 00:33:09,096 Niyə? 725 00:33:09,096 --> 00:33:10,910 >> Auditoriya: daxili deyil, çünki. 726 00:33:10,910 --> 00:33:12,390 >> DAVID Malan: Bu deyil yaddaş ki, yığın daxilində. 727 00:33:12,390 --> 00:33:15,306 Böyük dəyəri Mən lazım deyil o kvadrat mötərizədə qoyulması? 728 00:33:15,306 --> 00:33:16,870 9 9, 0. 729 00:33:16,870 --> 00:33:18,160 Sıfır indeksləşdirilməsi Çünki. 730 00:33:18,160 --> 00:33:20,190 Belə ki, 9 vasitəsilə 0 gözəl olardı. 731 00:33:20,190 --> 00:33:23,960 Bracket 10 yaxşı deyil və lakin, hər dəfə olsa geri 732 00:33:23,960 --> 00:33:27,017 Mən CS50 IDE etmək üçün cəhd görünür saxta dəyərlər yazaraq crash, 733 00:33:27,017 --> 00:33:29,100 Bu həmişə əməkdaşlıq etmir və həqiqətən, tez-tez 734 00:33:29,100 --> 00:33:31,460 uğurlu olsun yalnız çünki əməliyyat sistemi deyil 735 00:33:31,460 --> 00:33:35,467 qeyd ki, heç belə yüngül yaddaş bəzi yığın keçmək, 736 00:33:35,467 --> 00:33:38,300 Əgər texniki daxilində qaldı, çünki Sizin segment, lakin daha çox ki, 737 00:33:38,300 --> 00:33:40,940 əməliyyat sistemləri sinif, bu kimi bir şey 738 00:33:40,940 --> 00:33:43,000 çox asanlıqla undetected getmək bilər. 739 00:33:43,000 --> 00:33:48,120 Proqram heç qəza olacaq ardıcıl amma bəlkə dəfə biraz. 740 00:33:48,120 --> 00:33:50,610 >> Və belə ki, Valgrind edək Bu və burada 741 00:33:50,610 --> 00:33:52,870 biz overwhelmed almaq lazımdır an çıxdı. 742 00:33:52,870 --> 00:34:00,810 Belə ki, yaddaş valgrind sızıntısı çek etmək tam dot çizgi yaddaş bərabərdir. 743 00:34:00,810 --> 00:34:03,040 Mən söz verirəm niyə və burada Bu əzmək olar. 744 00:34:03,040 --> 00:34:05,700 Burada valgrind, burada nə var nə var proqramçı, bir neçə il ago- 745 00:34:05,700 --> 00:34:08,469 yaxşı bir fikir olardı qərar kimi çıxış baxmaq üçün. 746 00:34:08,469 --> 00:34:09,750 Belə ki, bu mənada edək. 747 00:34:09,750 --> 00:34:13,120 Sol tərəfdən belə ki, bütün yol heç bir yaxşı səbəbdən yan 748 00:34:13,120 --> 00:34:16,620 proqram prosesi ID edir biz yalnız, benzersiz bir tanıdan run 749 00:34:16,620 --> 00:34:18,030 Proqram üçün biz yalnız qaçdı. 750 00:34:18,030 --> 00:34:19,738 Biz ki, silindi slide, lakin 751 00:34:19,738 --> 00:34:22,190 Burada bəzi faydalı məlumatlar var. 752 00:34:22,190 --> 00:34:24,684 >> Çox üst diyirləyin edək. 753 00:34:24,684 --> 00:34:25,600 Biz başladı burada. 754 00:34:25,600 --> 00:34:27,040 Belə ki, bütün çox çıxış deyil. 755 00:34:27,040 --> 00:34:30,429 Burada yalnış yazmaq deyil xətti 21 ölçülü 4. 756 00:34:30,429 --> 00:34:31,760 Yaxşı, line 21 nə idi? 757 00:34:31,760 --> 00:34:34,500 Line 21 dəqiq idi Bu və bu mənada edir 758 00:34:34,500 --> 00:34:37,290 Mən validly da deyiləm ki, Mən deyiləm, çünki 4 bayt yazılı 759 00:34:37,290 --> 00:34:40,389 Bu tam qoymaq üçün çalışırıq, ki, bir şey ola bilər 760 00:34:40,389 --> 00:34:42,370 yalnız olmaq olur sıfır, amma çalışıram 761 00:34:42,370 --> 00:34:44,940 bir yerdə qoymaq üçün ki, mənə aid deyil. 762 00:34:44,940 --> 00:34:50,900 Bir Bundan əlavə, aşağı burada, 40 bytes blokları mütləq rekord 1 itir. 763 00:34:50,900 --> 00:34:56,500 Mən malloc zəng zaman, çünki burada, mən, həqiqətən, yaddaş azad, heç vaxt. 764 00:34:56,500 --> 00:34:58,140 >> Belə ki, necə biz bu düzeltmek bilər? 765 00:34:58,140 --> 00:35:02,970 Mənə davam edək və bir az daha təhlükəsiz olmaq və orada 9 və burada pulsuz x mənə bildirin. 766 00:35:02,970 --> 00:35:04,820 Bu gün yeni funksiyası var. 767 00:35:04,820 --> 00:35:11,520 İndi yaddaş dot çizgi etmək təkrar varsa, , yenidən bu valgrind run edək 768 00:35:11,520 --> 00:35:14,990 Mənim pəncərə maksimize və Enter düyməsini basın. 769 00:35:14,990 --> 00:35:16,900 İndi, bu yaxşıdır. 770 00:35:16,900 --> 00:35:19,590 Onlar yaxşı xəbər basdırmaq Bu çıxış bütün. 771 00:35:19,590 --> 00:35:20,810 Bütün yığın blokları pulsuz idi. 772 00:35:20,810 --> 00:35:23,604 Biz nə yığın geri gəlmək lazımdır , lakin heç bir sızması mümkündür. 773 00:35:23,604 --> 00:35:25,520 Belə ki, bu yalnız bir deyil Sizin alət dəsti üçün alət 774 00:35:25,520 --> 00:35:30,220 olan siz başlaya bilərsiniz İndi kimi səhv tapmaq. 775 00:35:30,220 --> 00:35:34,532 >> Amma görək nə daha zalım burada edə bilərsiniz. 776 00:35:34,532 --> 00:35:38,890 Indi keçid edək həqiqətən bir problem həll. 777 00:35:38,890 --> 00:35:42,440 Bir kənara kimi, bu azad edəcək qarışıqlıq və ya gərginlik az, 778 00:35:42,440 --> 00:35:43,430 bu artıq gülməli deyil. 779 00:35:43,430 --> 00:35:46,400 780 00:35:46,400 --> 00:35:46,900 Bəli. 781 00:35:46,900 --> 00:35:49,040 Bu olduqca yaxşı. 782 00:35:49,040 --> 00:35:50,890 Göstəricilərinə Çünki ünvanları və ünvanları 783 00:35:50,890 --> 00:35:53,098 Konvensiya ilə ümumiyyətlə hexadecimal ilə yazılı. 784 00:35:53,098 --> 00:35:54,650 Ha, ha, indi gülməli deyil. 785 00:35:54,650 --> 00:35:58,390 Afərin, belə ki, indi edək həqiqətən bir problem həll edir. 786 00:35:58,390 --> 00:36:00,840 Bu super olmuşdur super indiyə qədər aşağı səviyyədə, 787 00:36:00,840 --> 00:36:03,950 və biz, həqiqətən faydalı edə bilərsiniz bu aşağı səviyyədə detalları ilə hər şeyi. 788 00:36:03,950 --> 00:36:06,710 >> Beləliklə, biz bir neçə həftə təqdim əvvəl bir sıra anlayışı. 789 00:36:06,710 --> 00:36:09,177 Bir sıra gözəl idi, çünki bu, bizim kodu təmizləmək çətindir 790 00:36:09,177 --> 00:36:11,760 Biz yazmaq istəyirdi, çünki Çox tələbələri ilə proqram 791 00:36:11,760 --> 00:36:15,270 və ya bir neçə adları və ev və yurdda və kollec və ki, bütün, 792 00:36:15,270 --> 00:36:19,430 biz hər şeyi daha çox saxlamaq bilər temiz bir sıra daxilində. 793 00:36:19,430 --> 00:36:23,039 Amma bir İşin mənfi tərəfi odur təklif bir sıra indiyə qədər. 794 00:36:23,039 --> 00:36:26,080 Siz özünüz əziyyət etdik, hətta bir proqramda, yalnız qeyri-iradi, 795 00:36:26,080 --> 00:36:30,870 pis bir şey nə bir sıra haqqında, bəlkə? 796 00:36:30,870 --> 00:36:32,337 Mən bəzi murmurs eşitmək. 797 00:36:32,337 --> 00:36:34,170 Auditoriya: Bu çətindir ölçüsünü dəyişdirmək üçün. 798 00:36:34,170 --> 00:36:36,128 DAVID Malan: Bu çətindir ölçüsünü dəyişdirmək üçün. 799 00:36:36,128 --> 00:36:38,660 Siz ölçüsü dəyişə bilməz bir sıra, əslində, özlüyündə 800 00:36:38,660 --> 00:36:43,040 C. Başqa bir sıra ayıra bilər, köhnə bir şeyi hərəkət 801 00:36:43,040 --> 00:36:45,380 İndi yeni və daxil bəzi əlavə yer var, 802 00:36:45,380 --> 00:36:47,469 ancaq bir kimi deyil Java və ya Python kimi dil 803 00:36:47,469 --> 00:36:49,760 və ya digər hər hansı bir sayı ilə dillərində bəzi 804 00:36:49,760 --> 00:36:52,070 tanış ola bilər harada şeyi əlavə edə bilərsiniz 805 00:36:52,070 --> 00:36:53,930 bir sıra sonuna reklam nauseam. 806 00:36:53,930 --> 00:36:57,880 Siz bir sıra zaman onun ölçüsü ölçüsü 6, 807 00:36:57,880 --> 00:37:01,970 və ideya kimi əvvəllər qədər müəyyən bir ölçüsü bir bufer olan, 808 00:37:01,970 --> 00:37:05,940 Siz qapısı həyata tahmin var nə ölçüsü siz olmaq istəyirsiniz? 809 00:37:05,940 --> 00:37:07,880 Siz çox böyük tahmin varsa, Siz yer israf edirik. 810 00:37:07,880 --> 00:37:10,950 Çox kiçik tahmin varsa, siz ən azı, ki, məlumat saxlamaq olmaz 811 00:37:10,950 --> 00:37:12,940 daha çox iş olmadan. 812 00:37:12,940 --> 00:37:18,180 >> Göstəricilərinə Belə ki, bu gün, thanks, biz birlikdə öz xüsusi stitching başlamaq 813 00:37:18,180 --> 00:37:20,989 data strukturları, və Əslində burada bir şey deyil 814 00:37:20,989 --> 00:37:23,030 ki, bir az daha görünür ilk baxışdan sirli, 815 00:37:23,030 --> 00:37:26,440 lakin bu, biz bir bağlı zəng edəcəyik nə siyahısı, və ümumiləşdirir onun adı cür 816 00:37:26,440 --> 00:37:26,940 Bu. 817 00:37:26,940 --> 00:37:29,550 Bu nömrələri siyahısı, və ya Bu halda, nömrələri siyahısı, 818 00:37:29,550 --> 00:37:33,480 lakin bir şey siyahısı ola bilər, lakin bilər Bu, birlikdə oxlar yolu ilə bağlı oldu 819 00:37:33,480 --> 00:37:36,380 və yalnız bir tahmin almaq nə texnika ilə 820 00:37:36,380 --> 00:37:38,310 biz mümkün olacaq birlikdə stitch, 821 00:37:38,310 --> 00:37:42,540 sort bir mövzu ilə popcorn kimi, burada siyahıları düzbucaqlı bağlıdır? 822 00:37:42,540 --> 00:37:43,936 Onun nömrələri? 823 00:37:43,936 --> 00:37:45,560 Əsas dil xüsusiyyət nədir? 824 00:37:45,560 --> 00:37:46,350 >> Auditoriya: A pointer. 825 00:37:46,350 --> 00:37:47,308 >> DAVID Malan: A pointer. 826 00:37:47,308 --> 00:37:51,700 Belə ki, bu oxlar hər burada təmsil bir pointer və ya yalnız bir ünvanı. 827 00:37:51,700 --> 00:37:54,590 Belə ki, başqa sözlə, mən istəyirəm nömrələrin siyahısı saxlamaq üçün, 828 00:37:54,590 --> 00:37:59,040 Mən istəyirəm, mən yalnız onu saxlamaq bilməz inkişaf və shrink imkanı 829 00:37:59,040 --> 00:38:00,990 bir sıra mənim data strukturu. 830 00:38:00,990 --> 00:38:03,000 Mən bir az lazımdır daha sophistication, 831 00:38:03,000 --> 00:38:05,720 lakin bu fark şəkil cür təklif 832 00:38:05,720 --> 00:38:08,650 Siz yalnız kiçik mövzuları var, əgər ki, birlikdə hər şey birləşdirən, 833 00:38:08,650 --> 00:38:13,100 yəqin ki, yer etmək çətin deyil o düzbucaqlı arasında iki 834 00:38:13,100 --> 00:38:16,750 və ya bu qovşaqlarının iki biz başlamaq lazımdır yeni node qoymaq, onlara zəng, 835 00:38:16,750 --> 00:38:19,547 və sonra bəzi yeni mövzu ilə, yalnız üç qovşaqlarının xəndək, 836 00:38:19,547 --> 00:38:22,880 Birincisi, son bir, bir Yalnız orta daxil ki. 837 00:38:22,880 --> 00:38:26,000 >> Həqiqətən bir bağlı siyahı, bir sıra fərqli olaraq, dinamik. 838 00:38:26,000 --> 00:38:27,840 Bu inkişaf edə bilər və ola bilər shrink və siz deyil 839 00:38:27,840 --> 00:38:32,434 bilmək və ya əvvəlcədən necə qayğı var qədər data siz saxlanılması olacaq, 840 00:38:32,434 --> 00:38:35,600 lakin biz bir az olmalıdır çıxır Bu həyata necə haqqında ehtiyatlı. 841 00:38:35,600 --> 00:38:39,070 Belə ki, ilk biz həyata necə hesab edək bu kiçik düzbucaqlı biridir. 842 00:38:39,070 --> 00:38:40,690 Bu int həyata keçirilməsi üçün asandır. 843 00:38:40,690 --> 00:38:44,000 Siz yalnız sonra int n və demək Bir int 4 bayt almaq, 844 00:38:44,000 --> 00:38:49,089 amma bir int almaq necə, n zəng və sonra bir pointer, növbəti zəng edək. 845 00:38:49,089 --> 00:38:50,880 Biz bu zəng edə bilər Şeyi bir şey istəyirik 846 00:38:50,880 --> 00:38:53,590 amma xüsusi data strukturu lazımdır. 847 00:38:53,590 --> 00:38:54,257 Evet? 848 00:38:54,257 --> 00:38:57,020 >> Auditoriya: Ampersand [işitilemez]. 849 00:38:57,020 --> 00:39:00,940 >> DAVID Malan: Belə ki, işareti biz istifadə edəcək potensial bir node ünvanını almaq. 850 00:39:00,940 --> 00:39:02,740 Amma biz başqa lazımdır C xüsusiyyət üçün 851 00:39:02,740 --> 00:39:06,700 Mənə yaratmaq imkanı verir Bu xüsusi düzbucaqlı, bu xüsusi 852 00:39:06,700 --> 00:39:08,919 dəyişən siz yaddaş, olacaq. 853 00:39:08,919 --> 00:39:09,710 Auditoriya: A struct. 854 00:39:09,710 --> 00:39:10,626 DAVID Malan: A struct. 855 00:39:10,626 --> 00:39:14,310 Keçən həftə geri, biz təqdim struct, bu nisbətən sadə söz 856 00:39:14,310 --> 00:39:16,254 ki, bizə bu kimi şeylər etmək imkanı verir. 857 00:39:16,254 --> 00:39:18,420 C məlumatları ilə gəlmədi strukturu tələbə çağırıb. 858 00:39:18,420 --> 00:39:22,190 Bu int və float və char və ilə gəlir Belə, lakin tələbə ilə gəlmək deyil, 859 00:39:22,190 --> 00:39:26,750 lakin biz bir tələbə data növü yarada, Bu sintaksis ilə bir tələbə strukturu, 860 00:39:26,750 --> 00:39:27,250 burada. 861 00:39:27,250 --> 00:39:28,350 Və təkrar bu görəcəksiniz. 862 00:39:28,350 --> 00:39:30,426 Belə ki, narahat etmir açar sözlər ezberlemeye, 863 00:39:30,426 --> 00:39:33,300 lakin vacibdir söz deyil dedik ki, yalnız fakt struct 864 00:39:33,300 --> 00:39:37,590 sonra biz bu tələbə adlanır və daxili tələbə adı və bir ev idi 865 00:39:37,590 --> 00:39:39,390 bir yurt və ya kimi və ya. 866 00:39:39,390 --> 00:39:41,980 >> Və indi, bu gün, bu təklif edək. 867 00:39:41,980 --> 00:39:45,240 Mən bir neçə söz əlavə, amma istəyirsinizsə sonra ki, bu düzbucaqlı həyata keçirilməsi üçün 868 00:39:45,240 --> 00:39:48,440 bir int və bir də var pointer, siz, mən nə deyiləm bilirik 869 00:39:48,440 --> 00:39:51,540 node adlı struct bəyan olacaq. 870 00:39:51,540 --> 00:39:55,630 Mən demək gedir, onun daxilində də deyiləm bir node, bu düzbucaqlı, bir int var ki, 871 00:39:55,630 --> 00:39:59,730 və biz zəng edəcəyik n və Bu növbəti göstərici var. 872 00:39:59,730 --> 00:40:02,540 Bu, bir az verbose deyil lakin bu barədə düşünüyorsanız, 873 00:40:02,540 --> 00:40:07,300 şəkil idi oxlar bir an əvvəl nə data növü var? 874 00:40:07,300 --> 00:40:12,330 Harada o oxlar hər işarə edir məlumat strukturu hansı növ üçün necə? 875 00:40:12,330 --> 00:40:14,332 Bu, sadəcə se başına bir int işarə deyil. 876 00:40:14,332 --> 00:40:16,165 Bu işarə bütün düzbucaqlı şey 877 00:40:16,165 --> 00:40:18,720 ki, düzbucaqlı şey, bir node adlanır bildirib. 878 00:40:18,720 --> 00:40:21,720 Və belə ki, biz cür var recursively bu cür müəyyən 879 00:40:21,720 --> 00:40:26,270 bir node ki, biz deyəcəklər n adlı int ehtiva edir 880 00:40:26,270 --> 00:40:31,070 və bir pointer növbəti adlanır data strukturu növü 881 00:40:31,070 --> 00:40:35,770 ki, pointer xal yəqin deyil struct node olacaq. 882 00:40:35,770 --> 00:40:41,550 >> Belə ki, bu annoyingly verbose deyil və yalnız xırdaçı olmaq 883 00:40:41,550 --> 00:40:44,100 səbəbi biz bilməz yalnız bu demək olan səmimi 884 00:40:44,100 --> 00:40:46,860 , daha çox oxunaqlı görünür geri oxumaq C ki, çünki 885 00:40:46,860 --> 00:40:48,710 hər şeyi alt üst, sağ. 886 00:40:48,710 --> 00:40:54,120 Biz nöqtəli vergül almaq qədər bu deyil söz node həqiqətən mövcud olduğunu. 887 00:40:54,120 --> 00:40:57,980 Biz bu cür etmək istəyirsinizsə Belə ki, məlumatların daxilində cyclical arayış 888 00:40:57,980 --> 00:41:02,120 strukturu, biz bunu, harada biz, üst struct node demək olan 889 00:41:02,120 --> 00:41:06,770 Bizə bu izah uzun yol verir odur ki, biz struct node demək, sonra daxili, 890 00:41:06,770 --> 00:41:09,560 və sonra son line biz demək, bütün sağ, C, yolu ilə, 891 00:41:09,560 --> 00:41:12,060 yalnız bu bütün lənətləmək zəng şey node və dayandırmaq 892 00:41:12,060 --> 00:41:14,360 cəmi söz struct istifadə edərək. 893 00:41:14,360 --> 00:41:18,030 Belə ki, bu yalnız sort bir sintaktik deyil nəticədə bizə yaratmaq imkan verir oyun 894 00:41:18,030 --> 00:41:21,370 məhz bu kimi görünür ki, bir şey. 895 00:41:21,370 --> 00:41:25,010 >> Biz indi güman əgər biz belə C bu şey həyata, 896 00:41:25,010 --> 00:41:28,040 necə həqiqətən biz nə bu traversing başlamaq? 897 00:41:28,040 --> 00:41:32,360 Bəli, əslində, biz nə üçün bütün sağ və yalnız sol olan təkrarlamaq 898 00:41:32,360 --> 00:41:35,960 növ qovşaqlarının daxil və ya qovşaqlarının silmək və ya biz istədiyiniz yerdə şey üçün axtarış, 899 00:41:35,960 --> 00:41:39,560 lakin bunu,-nin irəli getmək və edək hər şeyi bir az daha real Çünki 900 00:41:39,560 --> 00:41:42,560 indiyə qədər super aşağı səviyyəli olmuşdur. 901 00:41:42,560 --> 00:41:45,700 Hər kəs sanki birinci olmaq istəyirsiniz? 902 00:41:45,700 --> 00:41:46,200 OLDU. 903 00:41:46,200 --> 00:41:47,092 Qədər gəlib. 904 00:41:47,092 --> 00:41:47,800 Sənin adın nədir? 905 00:41:47,800 --> 00:41:48,499 >> DAVID: David. 906 00:41:48,499 --> 00:41:49,290 DAVID Malan: David. 907 00:41:49,290 --> 00:41:49,998 Görüşmək Nice. 908 00:41:49,998 --> 00:41:50,960 Məndə həmçinin. 909 00:41:50,960 --> 00:41:52,450 Oldu. 910 00:41:52,450 --> 00:41:53,990 Və biz bir sıra 9 lazımdır. 911 00:41:53,990 --> 00:41:55,240 Kimi yaxşı deyil ilk olaraq, bəlkə də. 912 00:41:55,240 --> 00:41:56,430 OK, sayı 9. 913 00:41:56,430 --> 00:41:59,667 A sayı 17, xahiş edirik. 914 00:41:59,667 --> 00:42:01,000 Mənə bir az uzaq geri gedək. 915 00:42:01,000 --> 00:42:03,980 Number 22, xahiş edirik, və necə uzaq geri haqqında 916 00:42:03,980 --> 00:42:06,344 Mən heç bir əlləri görə bilərsiniz bütün işıq və ya heç bir. 917 00:42:06,344 --> 00:42:08,010 Biri orada könüllü olunur. 918 00:42:08,010 --> 00:42:08,968 Siz gəlmək istəyirsiniz? 919 00:42:08,968 --> 00:42:10,450 Sizin qolun zorla qədər davam edir. 920 00:42:10,450 --> 00:42:12,340 17 OK. 921 00:42:12,340 --> 00:42:13,690 22. 922 00:42:13,690 --> 00:42:15,120 26 aşağı gəlir. 923 00:42:15,120 --> 00:42:18,450 Hər kəsdən istəyirsiniz forcefully-- qədər Hadi. 924 00:42:18,450 --> 00:42:21,030 Faktiki könüllü. 925 00:42:21,030 --> 00:42:23,330 >> Belə ki, çox tez, əgər Sizlərin təşkil edə bilər 926 00:42:23,330 --> 00:42:26,550 özünüzü yalnız kimi ekranda qovşaqlarının. 927 00:42:26,550 --> 00:42:27,510 Təşəkkür edirəm. 928 00:42:27,510 --> 00:42:29,234 Və 26 olacaq. 929 00:42:29,234 --> 00:42:30,650 Bütün hüquqlar və sürətli tətbiqi. 930 00:42:30,650 --> 00:42:32,139 Beləliklə, mən David Ben və siz də var? 931 00:42:32,139 --> 00:42:32,680 DAVID: David. 932 00:42:32,680 --> 00:42:33,721 DAVID Malan: Və siz? 933 00:42:33,721 --> 00:42:34,229 JAKE: Jake. 934 00:42:34,229 --> 00:42:34,729 SUE: Sue. 935 00:42:34,729 --> 00:42:35,229 ALEX: Alex. 936 00:42:35,229 --> 00:42:36,475 RAPHAEL: Raphael. 937 00:42:36,475 --> 00:42:37,100 TAYLOR: Taylor. 938 00:42:37,100 --> 00:42:37,466 DAVID Malan: Taylor. 939 00:42:37,466 --> 00:42:37,590 Əla. 940 00:42:37,590 --> 00:42:39,810 Belə ki, bu, bizim könüllü bu gün və irəli getmək 941 00:42:39,810 --> 00:42:43,090 və yol bir az keçmək və yalnız irəli getmək və saxlamaq 942 00:42:43,090 --> 00:42:47,024 Siz və ya Sizin kimi nömrələri keçirilməsi ilk əlaməti və sol tərəfdən istifadə edərək, 943 00:42:47,024 --> 00:42:48,940 irəli getmək və yalnız həyata bu oxlar, yalnız 944 00:42:48,940 --> 00:42:51,360 Sol tərəfdən sözün ki, Siz qeyd etməlidir nə işarə 945 00:42:51,360 --> 00:42:54,610 və özünüzü ki, bir otaq vermək biz əyani həqiqətən, sizin silah edə bilərsiniz 946 00:42:54,610 --> 00:42:58,120 işarə, və yalnız qeyd edə bilərsiniz sort yerə yaxşıdır. 947 00:42:58,120 --> 00:43:03,040 >> Belə ki, burada biz bir bağlı siyahı var iki, üç, dörd, beş qovşaqlarının ilkin 948 00:43:03,040 --> 00:43:05,860 və biz bu xüsusi var fark var başında pointer 949 00:43:05,860 --> 00:43:09,770 əsas biz takip lazımdır, çünki bütün uzunluğu siyahısı birtəhər. 950 00:43:09,770 --> 00:43:13,590 Onlar tərk edirik, baxmayaraq ki bu uşaqlar, sağ, geri yaddaş geri, 951 00:43:13,590 --> 00:43:15,950 onlar həqiqətən hər yerdə ola bilər kompüter yaddaşında. 952 00:43:15,950 --> 00:43:18,240 Belə ki, bu uşaqlar ola bilər səhnədə yerdə dayanan 953 00:43:18,240 --> 00:43:20,960 və ki, uzun onlar kimi, gözəl həqiqətən bir-birinə işarə edərək, 954 00:43:20,960 --> 00:43:22,770 lakin şeyi saxlamaq üçün təmiz və sadə alacağıq 955 00:43:22,770 --> 00:43:25,728 yalnız onlara çəkmək kimi soldan sağa Bu, lakin kütləvi boşluqlar ola bilər 956 00:43:25,728 --> 00:43:26,790 bu qovşaqlarının arasında. 957 00:43:26,790 --> 00:43:30,710 >> İndi Mən, həqiqətən, bəzi əlavə etmək istəyirsinizsə, yeni dəyər, nin irəli getmək və bunu bildirin. 958 00:43:30,710 --> 00:43:33,720 Biz indi imkanı başqa bir node seçin. 959 00:43:33,720 --> 00:43:39,820 55 mallocing ilə başlamaq edək deyirlər. 960 00:43:39,820 --> 00:43:41,320 Kimsə malloc olan ağla istəyirsiniz? 961 00:43:41,320 --> 00:43:42,280 OK, qədər gəlib. 962 00:43:42,280 --> 00:43:42,992 Sənin adın nədir? 963 00:43:42,992 --> 00:43:43,700 RAINBOW: Rainbow. 964 00:43:43,700 --> 00:43:44,050 DAVID Malan: Rainbow? 965 00:43:44,050 --> 00:43:44,810 Oldu. 966 00:43:44,810 --> 00:43:46,600 Malloc Rainbow. 967 00:43:46,600 --> 00:43:47,450 Qədər gəlib. 968 00:43:47,450 --> 00:43:51,610 Belə ki, indi biz özümüz xahiş var algorithmically biz 55 qoya bilər harada. 969 00:43:51,610 --> 00:43:53,610 Belə ki, hamımızın bilməsi, Aydındır ki, burada o, yəqin ki, 970 00:43:53,610 --> 00:43:55,401 biz çalışdığınız əgər məxsusdur Bu sıralanır saxlamaq 971 00:43:55,401 --> 00:43:58,299 və uşaqlar bir almaq bilər geri addım belə ki, biz off düşmək deyil 972 00:43:58,299 --> 00:43:59,590 mərhələ, böyük olardı. 973 00:43:59,590 --> 00:44:01,420 Belə ki, həqiqətən, Rainbow, Mənimlə burada başlamaq, 974 00:44:01,420 --> 00:44:04,200 çünki biz indi bilərsiniz kompüter yalnız bir zaman bir dəyişən görürük. 975 00:44:04,200 --> 00:44:05,190 Bu ilk node əgər belə. 976 00:44:05,190 --> 00:44:07,160 O, bir node deyil edək o, yalnız bir göstərici var 977 00:44:07,160 --> 00:44:10,270 o cəlb niyə və ki bir göstərici yalnız ölçüsü deyil, 978 00:44:10,270 --> 00:44:11,780 o tam düzbucaqlı biridir. 979 00:44:11,780 --> 00:44:16,650 Belə ki, biz hər yoxlamaq olacaq iteration 9 55 az? 980 00:44:16,650 --> 00:44:17,150 Yox. 981 00:44:17,150 --> 00:44:19,060 17 55 az? 982 00:44:19,060 --> 00:44:19,720 Yox. 983 00:44:19,720 --> 00:44:20,800 22-dən az? 984 00:44:20,800 --> 00:44:22,020 26-dən az? 985 00:44:22,020 --> 00:44:23,390 34-dən az? 986 00:44:23,390 --> 00:44:25,890 Və indi, açıq-aydın Rainbow sonunda məxsusdur. 987 00:44:25,890 --> 00:44:27,270 Belə aydın ola bilər, və nə üçün adı, Taylor idi? 988 00:44:27,270 --> 00:44:27,895 >> TAYLOR: Taylor. 989 00:44:27,895 --> 00:44:32,510 DAVID MALAN: Taylor nin arasında So sol və burada Rainbow əlləri, 990 00:44:32,510 --> 00:44:38,324 Onların əl nə qeyd etmək lazımdır Bu siyahıda 55 əlavə etmək sifariş? 991 00:44:38,324 --> 00:44:39,240 Biz nə etmək lazımdır? 992 00:44:39,240 --> 00:44:39,700 Evet? 993 00:44:39,700 --> 00:44:41,140 >> Auditoriya: Taylor əli sol qeyd etmək lazımdır. 994 00:44:41,140 --> 00:44:41,680 >> DAVID Malan: Məhz. 995 00:44:41,680 --> 00:44:43,800 Belə ki, bir node daxil siyahısı sonunda 996 00:44:43,800 --> 00:44:47,140 olduqca sadə, çünki Taylor yalnız yerə yerinə, qeyd etmək var 997 00:44:47,140 --> 00:44:49,640 və ya biz, null zəng edəcəyik null olmaması sort 998 00:44:49,640 --> 00:44:51,640 bir göstərici və ya xüsusi sıfır pointer, sen 999 00:44:51,640 --> 00:44:53,740 Sizin sol ilə qeyd etmək gedir əl Rainbow və sonra Rainbow, 1000 00:44:53,740 --> 00:44:55,910 harada sol olmalıdır əl yəqin ki, qeyd? 1001 00:44:55,910 --> 00:44:56,570 Down. 1002 00:44:56,570 --> 00:45:00,140 Əlini sort əgər yaxşı deyil burada və ya sort hər hansı bir off işarə edən 1003 00:45:00,140 --> 00:45:00,640 yol. 1004 00:45:00,640 --> 00:45:02,407 Bu hesab olunacaq zibil dəyəri, 1005 00:45:02,407 --> 00:45:04,240 lakin o, işarə, əgər bəzi məlum dəyəri alacağıq 1006 00:45:04,240 --> 00:45:07,360 sıfır və ya null zəng, OK bu bir müddət var, çünki 1007 00:45:07,360 --> 00:45:09,390 və biz siyahısı indi tam bilirik. 1008 00:45:09,390 --> 00:45:11,550 >> Belə ki, nə başqa var nisbətən sadə halda? 1009 00:45:11,550 --> 00:45:13,125 Biz 5 malloc bilər? 1010 00:45:13,125 --> 00:45:14,010 Qədər gəlib. 1011 00:45:14,010 --> 00:45:14,782 Sənin adın nədir? 1012 00:45:14,782 --> 00:45:15,490 TIFFANY: Tiffany. 1013 00:45:15,490 --> 00:45:16,000 DAVID MALAN: Mən təəssüf edirəm? 1014 00:45:16,000 --> 00:45:16,470 TIFFANY: Tiffany. 1015 00:45:16,470 --> 00:45:16,880 DAVID Malan: Tiffany. 1016 00:45:16,880 --> 00:45:17,110 Oldu. 1017 00:45:17,110 --> 00:45:19,071 Tiffany malloced edilmişdir dəyəri 5. 1018 00:45:19,071 --> 00:45:19,570 Qədər gəlib. 1019 00:45:19,570 --> 00:45:23,820 Bu, çox nisbətən asandır, lakin Indi əməliyyatları üçün nəzərdən keçirək. 1020 00:45:23,820 --> 00:45:25,820 Bu olduqca asan idi sonunda Taylor ilə. 1021 00:45:25,820 --> 00:45:30,302 Number 5, əlbəttə az 9 daşıyır və biz, biz Tiffany var, David var 1022 00:45:30,302 --> 00:45:31,260 və adı nə idi? 1023 00:45:31,260 --> 00:45:31,680 >> JAKE: Jake. 1024 00:45:31,680 --> 00:45:32,470 >> DAVID Malan: Jake. 1025 00:45:32,470 --> 00:45:34,300 Tiffany, Jake, və David. 1026 00:45:34,300 --> 00:45:36,580 Kimin əli ilk satıcı tərəfindən aydınlıq olmalıdır? 1027 00:45:36,580 --> 00:45:39,260 1028 00:45:39,260 --> 00:45:40,590 Siz burada nə etmək istəyirsiniz? 1029 00:45:40,590 --> 00:45:45,244 Bir neçə mümkün yolları var, lakin bir və ya daha yanlış yolları da var. 1030 00:45:45,244 --> 00:45:46,620 >> Auditoriya: leftmost ilə başlayın. 1031 00:45:46,620 --> 00:45:47,800 >> DAVID Malan: leftmost ilə başlayın. 1032 00:45:47,800 --> 00:45:49,008 Kim sonra burada leftmost var? 1033 00:45:49,008 --> 00:45:49,700 Auditoriya: First. 1034 00:45:49,700 --> 00:45:50,366 >> DAVID Malan: OK. 1035 00:45:50,366 --> 00:45:53,781 Belə ki, ilk ilə başlamaq və siz harada nə Davudun əlləri olmaq yeniləmək istəyirsiniz? 1036 00:45:53,781 --> 00:45:54,780 Auditoriya: 5 doğru. 1037 00:45:54,780 --> 00:45:55,446 DAVID Malan: OK. 1038 00:45:55,446 --> 00:45:59,026 Beş Belə ki, David, point və ya Tiffany burada və indi? 1039 00:45:59,026 --> 00:46:01,072 >> Auditoriya: Tiffany 9 bal? 1040 00:46:01,072 --> 00:46:04,030 DAVID Malan: Perfect, Binky nin istisna olmaqla baş yalnız cür, sağ düşdü? 1041 00:46:04,030 --> 00:46:06,820 Ilə yanlış nə, çünki sanki bu şəkil? 1042 00:46:06,820 --> 00:46:08,070 Auditoriya: Heç bir şey işarə edir. 1043 00:46:08,070 --> 00:46:09,945 DAVID Malan: Heç bir şey deyil indi Jake işarə. 1044 00:46:09,945 --> 00:46:13,360 Biz sözün 9 yetim etdik 17, və biz sözün var 1045 00:46:13,360 --> 00:46:18,450 bu yaddaş bütün sızan ötəri ilk Davudun əli yenilənməsi, ki 1046 00:46:18,450 --> 00:46:21,660 düzgün kimi insofar gözəl İndi Tiffany da işarə edərək, 1047 00:46:21,660 --> 00:46:25,410 lakin heç bir olsaydı Jake qeyd etmək uzaqgörənliyi, 1048 00:46:25,410 --> 00:46:27,490 sonra biz itirdik ki, siyahıda bütövlükdə. 1049 00:46:27,490 --> 00:46:28,200 Belə ki, əvvəlki halına qaytar edək. 1050 00:46:28,200 --> 00:46:30,950 Belə ki, yaxşı bir şey idi üzərində səfər lakin indi düzəltmək edək. 1051 00:46:30,950 --> 00:46:33,624 Biz ilk əvəzinə etməliyəm? 1052 00:46:33,624 --> 00:46:34,124 Evet? 1053 00:46:34,124 --> 00:46:35,791 >> Auditoriya: Tiffany 9 qeyd etməlidir? 1054 00:46:35,791 --> 00:46:37,582 DAVID MALAN: I bilməz Sizə yaxın almaq. 1055 00:46:37,582 --> 00:46:38,720 9 Kim qeyd etməlidir? 1056 00:46:38,720 --> 00:46:39,220 >> Auditoriya: Tiffany. 1057 00:46:39,220 --> 00:46:39,390 >> DAVID Malan: Bütün hüququ. 1058 00:46:39,390 --> 00:46:41,200 Belə ki, Tiffany 9 ilk point olmalıdır. 1059 00:46:41,200 --> 00:46:43,550 Belə ki, Tiffany almaq lazımdır eyni dəyəri 1060 00:46:43,550 --> 00:46:45,820 Davuda olan görünür bir an lazımsız, 1061 00:46:45,820 --> 00:46:48,820 lakin ikinci, çünki indi gözəl var addım, biz Davudun əli təkmilləşdirə bilər 1062 00:46:48,820 --> 00:46:52,680 Tiffany, sonra əgər qeyd etmək biz yalnız növ təmiz şeyi qədər 1063 00:46:52,680 --> 00:46:55,740 Bu bahar kimi növ sanki, İndi ki, düzgün durub var. 1064 00:46:55,740 --> 00:46:56,700 Belə ki, əla. 1065 00:46:56,700 --> 00:46:57,970 Belə ki, indi biz demək olar ki, orada edirik. 1066 00:46:57,970 --> 00:47:01,075 Nin bir final daxil edək dəyəri 20 kimi dəyər. 1067 00:47:01,075 --> 00:47:03,010 Biz bir final könüllü malloc bilər? 1068 00:47:03,010 --> 00:47:04,140 Qədər gəlib. 1069 00:47:04,140 --> 00:47:06,224 Belə ki, bu bir az daha çətin. 1070 00:47:06,224 --> 00:47:08,390 Lakin, həqiqətən, kodu, biz istəyirik yazılı, şifahi də olsa, 1071 00:47:08,390 --> 00:47:10,610 Yalnız bir dəstə olan kimi İndi şərait, sağ əgər? 1072 00:47:10,610 --> 00:47:12,318 Biz vəziyyəti idi bu məxsusdur əgər yoxlanılması 1073 00:47:12,318 --> 00:47:13,840 Sonda, bəlkə əvvəlində. 1074 00:47:13,840 --> 00:47:15,940 Biz loop bir növ lazımdır ortada spot tapmaq. 1075 00:47:15,940 --> 00:47:17,400 Belə ki, adı nə ilə nə edək? 1076 00:47:17,400 --> 00:47:17,700 >> ERIC: Eric. 1077 00:47:17,700 --> 00:47:18,340 >> DAVID Malan: Eric? 1078 00:47:18,340 --> 00:47:18,660 Eric. 1079 00:47:18,660 --> 00:47:19,368 Görüşmək Nice. 1080 00:47:19,368 --> 00:47:20,490 Belə ki, biz 20 var. 1081 00:47:20,490 --> 00:47:21,220 Beş Az? 1082 00:47:21,220 --> 00:47:21,530 Yox. 1083 00:47:21,530 --> 00:47:22,160 Doqquz az? 1084 00:47:22,160 --> 00:47:22,410 Yox. 1085 00:47:22,410 --> 00:47:23,050 17-dən az? 1086 00:47:23,050 --> 00:47:23,550 Yox. 1087 00:47:23,550 --> 00:47:23,740 OLDU. 1088 00:47:23,740 --> 00:47:25,701 O, burada məxsusdur və Sizin adları yenə var? 1089 00:47:25,701 --> 00:47:26,200 SUE: Sue. 1090 00:47:26,200 --> 00:47:26,880 DAVID Malan: Sue. 1091 00:47:26,880 --> 00:47:27,379 ALEX: Alex. 1092 00:47:27,379 --> 00:47:28,790 DAVID Malan: Sue, Alex, və? 1093 00:47:28,790 --> 00:47:29,290 ERIC: Eric. 1094 00:47:29,290 --> 00:47:30,120 DAVID Malan: Eric. 1095 00:47:30,120 --> 00:47:32,140 Kimin əlləri ilk yenilənir almaq lazımdır? 1096 00:47:32,140 --> 00:47:32,930 >> Auditoriya: Eric. 1097 00:47:32,930 --> 00:47:33,429 OLDU. 1098 00:47:33,429 --> 00:47:35,200 Belə ki, Eric nin olduğu qeyd etməlidir? 1099 00:47:35,200 --> 00:47:35,930 22. 1100 00:47:35,930 --> 00:47:36,430 Yaxşı. 1101 00:47:36,430 --> 00:47:38,180 İndi nə gələn var? 1102 00:47:38,180 --> 00:47:40,800 Sue sonra Eric qeyd edə bilərsiniz və indi, əgər uşaqlar yalnız 1103 00:47:40,800 --> 00:47:44,077 gözəl bir otaq etmək vizual, indi biz durub etdik. 1104 00:47:44,077 --> 00:47:47,160 Belə ki, indi bir sual nəzərdən keçirək lakin Bizim könüllü üçün çox təşəkkür edirəm. 1105 00:47:47,160 --> 00:47:48,090 Çox yaxşı. 1106 00:47:48,090 --> 00:47:50,831 İstəsəniz, bu davam edə bilərsiniz. 1107 00:47:50,831 --> 00:47:54,140 Və biz bir sevimli ayrılıq hədiyyə əgər var Siz hər bir stress topu almaq istəyirəm. 1108 00:47:54,140 --> 00:47:56,030 Mənə yalnız bu aşağı süzmək. 1109 00:47:56,030 --> 00:47:58,430 Belə ki, bu paket nədir? 1110 00:47:58,430 --> 00:48:02,430 Bu gözəl görünür biz indi həddə 1111 00:48:02,430 --> 00:48:06,360 bir alternativ təqdim belə məhdudlaşmır array 1112 00:48:06,360 --> 00:48:07,780 bəzi sabit ölçüsü bir sıra. 1113 00:48:07,780 --> 00:48:09,380 Onlar dinamik inkişaf edə bilər. 1114 00:48:09,380 --> 00:48:13,220 >> Amma biz kimi çox həftə gördüm Keçmişdə biz pulsuz üçün bir şey almaq heç vaxt 1115 00:48:13,220 --> 00:48:15,740 kimi, şübhəsiz ki, burada ticarət-off var. 1116 00:48:15,740 --> 00:48:18,890 Bir bağlı bir ayaq ilə belə siyahısı, bu dinamizm var? 1117 00:48:18,890 --> 00:48:21,590 Bu qabiliyyəti, səmimi inkişaf və biz sil edə bilərdi 1118 00:48:21,590 --> 00:48:23,570 lazım və shrink bilər. 1119 00:48:23,570 --> 00:48:24,710 Biz nə qiymət ödəyir? 1120 00:48:24,710 --> 00:48:28,510 1121 00:48:28,510 --> 00:48:30,340 Twice ilk növbədə çox yer kimi. 1122 00:48:30,340 --> 00:48:34,010 Siz şəkil baxsaq, artıq Mən integers bir siyahısını saxlanılması. 1123 00:48:34,010 --> 00:48:36,740 Mən bir siyahısını saxlanılması alıram integers plus göstəricilər. 1124 00:48:36,740 --> 00:48:38,240 Beləliklə, mən kosmik məbləği iki dəfə alıram. 1125 00:48:38,240 --> 00:48:40,740 İndi bəlkə ki, belə deyil böyük 4 bayt, 8 bayt, 1126 00:48:40,740 --> 00:48:43,160 lakin əlbəttə əlavə edə böyük data dəstləri üçün. 1127 00:48:43,160 --> 00:48:45,570 Başqa İşin mənfi tərəfi odur nədir? 1128 00:48:45,570 --> 00:48:46,070 Evet? 1129 00:48:46,070 --> 00:48:48,010 >> Auditoriya: Biz var onlara bir-bir axır. 1130 00:48:48,010 --> 00:48:48,760 DAVID Malan: Bəli. 1131 00:48:48,760 --> 00:48:50,260 Biz onlara bir-bir axır var. 1132 00:48:50,260 --> 00:48:53,860 Siz bu super imtina nə bilirik kvadrat bracket rahat xüsusiyyət 1133 00:48:53,860 --> 00:48:57,240 notation, daha düzgün təsadüfi giriş kimi tanınan, 1134 00:48:57,240 --> 00:48:59,280 biz yalnız jump edə bilərsiniz fərdi element 1135 00:48:59,280 --> 00:49:01,470 lakin indi mən hələ də olsa burada könüllüləri, 1136 00:49:01,470 --> 00:49:04,660 Mən tapmaq istəyirdi 22 nömrəli, yalnız bilməz 1137 00:49:04,660 --> 00:49:06,620 bracket bir şey bir şey jump. 1138 00:49:06,620 --> 00:49:10,530 Mən çox siyahı üzərində baxmaq xətti bizim axtarış nümunələri kimi, 1139 00:49:10,530 --> 00:49:12,260 sayı 22 tapmaq üçün. 1140 00:49:12,260 --> 00:49:14,340 Beləliklə, biz bir qiymət ödənilir görünür. 1141 00:49:14,340 --> 00:49:16,430 Amma biz yenə bilərsiniz digər məsələləri həll etsin. 1142 00:49:16,430 --> 00:49:18,587 >> Əslində, mənə təqdim edək visuals bir neçə. 1143 00:49:18,587 --> 00:49:20,920 Aşağı olduğunuz Belə ki Mather Dining Hall yaxınlarda, 1144 00:49:20,920 --> 00:49:23,320 ki, xatırlamaq lazımdır onların oxşar qablar destesi, 1145 00:49:23,320 --> 00:49:26,300 biz bu borc Sinif əvvəl Annenberg. 1146 00:49:26,300 --> 00:49:28,930 Belə ki, qablar, bu yığını, baxmayaraq ki, nümayəndəsi əslində 1147 00:49:28,930 --> 00:49:30,860 Kompüter elm data strukturu. 1148 00:49:30,860 --> 00:49:32,910 Bir data strukturu var kompüter 1149 00:49:32,910 --> 00:49:38,010 bir yığın kimi tanınan olan çox gözəl məhz bu vizual özü verir. 1150 00:49:38,010 --> 00:49:41,380 Bu qablar hər bir deyil, əgər belə tray lakin bir sıra kimi və mən istəyirdim 1151 00:49:41,380 --> 00:49:45,010 nömrələrini saxlamaq üçün, mən burada bir aşağı qoymaq bilər, 1152 00:49:45,010 --> 00:49:48,320 və mən burada bir yazmaq bilər və nömrələr yığma davam 1153 00:49:48,320 --> 00:49:53,180 bir-birinə, və nə üst Bu barədə potensial faydalı 1154 00:49:53,180 --> 00:49:55,450 nə dolayısı var ki Bu data strukturu? 1155 00:49:55,450 --> 00:49:58,045 Mən çıxarmaq bilər ki sayı ilk ən rahat? 1156 00:49:58,045 --> 00:50:00,640 1157 00:50:00,640 --> 00:50:03,030 orada ən son bir put. 1158 00:50:03,030 --> 00:50:06,430 >> Belə ki, bu biz zəng nə edir informatika bir LIFO data strukturu. 1159 00:50:06,430 --> 00:50:08,070 , Ilk keçən. 1160 00:50:08,070 --> 00:50:10,800 Biz uzun niyə əvvəl görürsünüz ki, indi faydalı, lakin ola bilər 1161 00:50:10,800 --> 00:50:12,200 yalnız mülkiyyət hesab edir. 1162 00:50:12,200 --> 00:50:15,158 Sizcə əgər bu cür axmaq var yemekhane bunu necə haqqında. 1163 00:50:15,158 --> 00:50:17,910 Hər dəfə onlar təmiz qablar və üst tam olanları qoymaq, 1164 00:50:17,910 --> 00:50:22,160 Daha əvvəl təmiz ola bilər lakin nəticədə çox çirkli və tozlu 1165 00:50:22,160 --> 00:50:24,360 çox alt tray əgər heç həqiqətən 1166 00:50:24,360 --> 00:50:26,820 ki altına almaq yığını, çünki yalnız 1167 00:50:26,820 --> 00:50:29,380 yeni qoyaraq saxlamaq və üst təmiz olanları. 1168 00:50:29,380 --> 00:50:31,840 eyni şey baş verə bilər bir supermarket çox. 1169 00:50:31,840 --> 00:50:35,450 Bir ekran işi varsa süd və hər zaman CVS 1170 00:50:35,450 --> 00:50:37,610 və ya daha çox süd alır kim, Yalnız süd itələmək 1171 00:50:37,610 --> 00:50:39,880 Əgər siz artıq geri və Siz ön qədər yeni qoymaq 1172 00:50:39,880 --> 00:50:43,088 bəzi olduqca pis olacaq məlumat strukturu sonunda süd, 1173 00:50:43,088 --> 00:50:46,390 Bu altındakı həmişə çünki ya equivalently Bu arxa həmişə var. 1174 00:50:46,390 --> 00:50:50,407 >> Amma düşünmək üçün başqa yol var məlumat və məsələn, bu qədər astarlı. 1175 00:50:50,407 --> 00:50:53,490 Əgər insanlardan biri edirsinizsə edən bəyənir Apple mağaza kənarda sıralamaq 1176 00:50:53,490 --> 00:50:55,610 zaman yeni bir məhsul gəlir həyata, siz yəqin edirik 1177 00:50:55,610 --> 00:50:58,780 bir yığın data istifadə strukturu çünki 1178 00:50:58,780 --> 00:51:03,070 hər kəs kim uzaqlaşdırmağa olardı up astarlı bəzi yeni oyuncaq almaq. 1179 00:51:03,070 --> 00:51:06,610 Əksinə, siz yəqin ki, istifadə etdiyiniz məlumat strukturu hansı 1180 00:51:06,610 --> 00:51:10,050 sisteminin və ya hansı real dünyada? 1181 00:51:10,050 --> 00:51:13,493 Ümid edirəm ki, bir xətt var, və ya daha çox düzgün və ya daha çox British kimi, bir sıra. 1182 00:51:13,493 --> 00:51:17,700 Və bir sıra da çıxır kompüter data strukturu, 1183 00:51:17,700 --> 00:51:19,700 lakin bir sıra çox var müxtəlif mülkiyyət. 1184 00:51:19,700 --> 00:51:20,820 Bu LIFO deyil. 1185 00:51:20,820 --> 00:51:21,990 , Ilk keçən. 1186 00:51:21,990 --> 00:51:22,800 Üzdən iraq. 1187 00:51:22,800 --> 00:51:24,280 Əvəzinə FIFO var. 1188 00:51:24,280 --> 00:51:26,110 Ilk out, da. 1189 00:51:26,110 --> 00:51:27,970 Və yaxşı bir şey deyil ədalət naminə 1190 00:51:27,970 --> 00:51:30,428 əlbəttə zaman astarlı edirik səhər qədər super erkən. 1191 00:51:30,428 --> 00:51:33,400 Siz ilk orada almaq ilk yaxşı almaq istəyirəm. 1192 00:51:33,400 --> 00:51:35,880 >> Və bu məlumatların bütün strukturları, sıralarında və baca 1193 00:51:35,880 --> 00:51:39,220 və başqaları dəstələri, siz çıxır bu kimi bir sıra hesab edə bilər. 1194 00:51:39,220 --> 00:51:41,820 Bu bəlkə, bir sıra edir sabit ölçüsü 4, lakin had 1195 00:51:41,820 --> 00:51:44,990 biz yalnız qalamaq bilər cür gözəl qablar demək olar ki, sonsuz hündür biz əgər 1196 00:51:44,990 --> 00:51:46,780 ki, bir çox qablar və ya nömrələri var. 1197 00:51:46,780 --> 00:51:48,840 Belə ki, bəlkə istəyirik Burada bağlı siyahı istifadə, 1198 00:51:48,840 --> 00:51:51,800 lakin ticarət-off olacaq potensial daha çox yaddaş lazımdır ki, 1199 00:51:51,800 --> 00:51:55,930 bir az daha çox vaxt tələb edir, lakin biz yığını hündürlüyü məhdudlaşdırmaq deyil, 1200 00:51:55,930 --> 00:51:59,550 çox Mather ekran halda kimi yığını ölçüsünü məhdudlaşdıra bilər, 1201 00:51:59,550 --> 00:52:03,117 və belə ki, bu dizayn qərarları və ya var nəticədə bizə mövcud variantları. 1202 00:52:03,117 --> 00:52:04,950 Bu məlumatları So strukturları, biz açılmış etdik 1203 00:52:04,950 --> 00:52:09,360 potensial yeni yuxarı həddi görən nə əvvəllər super sürətli oldu 1204 00:52:09,360 --> 00:52:11,260 və biz tərk lazımdır off bu gün və harada 1205 00:52:11,260 --> 00:52:13,200 biz almaq üçün ümid lazımdır Çərşənbə günü, biz lazımdır 1206 00:52:13,200 --> 00:52:15,740 Bir məlumatlara baxmaq başlamaq Bizə axtarış imkan verir strukturu 1207 00:52:15,740 --> 00:52:18,260 log son vaxt data yenidən. 1208 00:52:18,260 --> 00:52:21,470 Və biz həftə sıfır, geri, gördüm ki, ikili axtarış və ya bölmək və bir 1209 00:52:21,470 --> 00:52:22,180 və fəth. 1210 00:52:22,180 --> 00:52:26,240 Bu, hələ geri və daha yaxşı gəlir Bu çərşənbə müqəddəs grail 1211 00:52:26,240 --> 00:52:29,510 ilə gəlmək olacaq həqiqətən çalışır data structure 1212 00:52:29,510 --> 00:52:32,070 və ya nəzəri-da daimi vaxt, vasitəsi 1213 00:52:32,070 --> 00:52:34,760 Bu neçə etməz milyonlarla və ya şeyi milyardlarla 1214 00:52:34,760 --> 00:52:38,470 biz data strukturunda var, o, Bizə daimi vaxt, bəlkə bir addım 1215 00:52:38,470 --> 00:52:41,387 və ya iki addımlar və ya 10 addımlar, lakin addımlar daimi nömrələri 1216 00:52:41,387 --> 00:52:42,970 ki, data strukturu vasitəsilə axtarış. 1217 00:52:42,970 --> 00:52:46,300 Həqiqətən müqəddəs grail olacaq lakin çərşənbə günü ki, daha çox. 1218 00:52:46,300 --> 00:52:49,045 Sonra ya baxın. 1219 00:52:49,045 --> 00:52:53,704 >> [MUSIC PLAYING] 1220 00:52:53,704 --> 00:56:08,448