1 00:00:00,000 --> 00:00:00,499 2 00:00:00,499 --> 00:00:11,261 [MUSIC ifa] 3 00:00:11,261 --> 00:00:12,640 >> DAVID J. MALAN: Bütün hüququ. 4 00:00:12,640 --> 00:00:14,525 Bu CS50 edir. 5 00:00:14,525 --> 00:00:16,009 Və bu həftə 5 başlanğıc. 6 00:00:16,009 --> 00:00:18,050 Və qeyd ola bilər kimi, maddi bəzi 7 00:00:18,050 --> 00:00:21,050 bir az daha artır kompleks, kiçik sıx. 8 00:00:21,050 --> 00:00:24,560 >> Və xüsusilə də əgər, çox asandır Siz, bir müddət vərdiş oldum 9 00:00:24,560 --> 00:00:28,600 ən aşağı cızmaq üçün çalışırıq biz bir şey, biz sinif deyərək edirik. 10 00:00:28,600 --> 00:00:31,626 Amma bəlkə deyil, həyata ideal pedaqoji yanaşma 11 00:00:31,626 --> 00:00:34,250 material bu cür öyrənmək üçün, və material ümumiyyətlə. 12 00:00:34,250 --> 00:00:37,250 Və belə ki, biz edirik ki, CS50 öz Gheng elan 13 00:00:37,250 --> 00:00:39,780 Gong hazırlamaq başlayıb Notların canonical dəsti 14 00:00:39,780 --> 00:00:42,100 kurs üçün, ümid bu ki, biri 15 00:00:42,100 --> 00:00:44,030 yalnız kimi xidmət arayış və resurs 16 00:00:44,030 --> 00:00:47,410 material nəzərdən və gedən üçün geri material vasitəsilə ola bilər ki, 17 00:00:47,410 --> 00:00:51,230 , ətrafında ilk dəfə qaçdı lakin də ki, sizin rəhbərləri ola bilər daha çox 18 00:00:51,230 --> 00:00:53,740 aşağı, zaman daha qədər mühazirə üçün vaxt gəlir, 19 00:00:53,740 --> 00:00:56,960 Siz məşğul ola bilər ki, daha fikirli, kimi 20 00:00:56,960 --> 00:00:59,170 daha scribbly qarşı. 21 00:00:59,170 --> 00:01:02,510 >> Dedi ki, siz tapa bilərsiniz nə veb bu kimi sənədlər. 22 00:01:02,510 --> 00:01:04,660 Və bildiriş, sol üst, var yalnız məzmunu bir masa, 23 00:01:04,660 --> 00:01:06,920 həm də vaxt kodları ki, dərhal jump edəcək 24 00:01:06,920 --> 00:01:09,077 müvafiq hissəsi video online. 25 00:01:09,077 --> 00:01:11,410 Və burada nə Chang görmüşdür , mahiyyətcə, sənədləşdirilmiş 26 00:01:11,410 --> 00:01:13,340 nə bu baş xüsusi mühazirə. 27 00:01:13,340 --> 00:01:16,370 Və mühazirələr çox artıq online indi bu URL. 28 00:01:16,370 --> 00:01:20,110 Və biz qalan göndərmək üçün davam edəcəyik bu həftə sonuna qədər o, 29 00:01:20,110 --> 00:01:22,380 ki, resurs istifadə etmək yoxdur. 30 00:01:22,380 --> 00:01:25,740 >> Belə ki, daha ADO olmadan, biz geri soymaq başladı 31 00:01:25,740 --> 00:01:28,180 olmuşdur ki, lay bir müddət string. 32 00:01:28,180 --> 00:01:30,670 Və biz bir string nə demək idi əslində keçən həftə? 33 00:01:30,670 --> 00:01:31,720 34 00:01:31,720 --> 00:01:32,900 Belə ki, char star. 35 00:01:32,900 --> 00:01:34,900 Və char ulduz, yaxşı, nə ki, həqiqətən demək idi? 36 00:01:34,900 --> 00:01:37,150 Yaxşı, bütün bu vaxt, biz əgər bir funksiyası zəng edilmişdir, 37 00:01:37,150 --> 00:01:40,450 GetString və saxlanılması kimi sözdə geri 38 00:01:40,450 --> 00:01:42,910 bir GetString dəyəri dəyişən deyirlər 39 00:01:42,910 --> 00:01:47,721 biz yazılı olduğunuz string s type up Yuxarıda kod line. 40 00:01:47,721 --> 00:01:49,970 Mən görəndə və yalnız mənim yazı burada böyüdüləcək 41 00:01:49,970 --> 00:01:51,930 Mən bu necə dəhşətli həyata yoxdur. 42 00:01:51,930 --> 00:01:54,180 >> Lakin, ki, fərz edək, sağ tərəfində 43 00:01:54,180 --> 00:01:57,070 , yenə, bir ağlabatan deyil nə təsviri 44 00:01:57,070 --> 00:01:58,880 Bütün bu davam GetString vaxt. 45 00:01:58,880 --> 00:02:00,380 getString, əlbəttə, bir simli olur. 46 00:02:00,380 --> 00:02:01,691 Amma həqiqətən nə deməkdir? 47 00:02:01,691 --> 00:02:04,190 Bu bir yığın olur deməkdir əməliyyat sistemi yaddaş 48 00:02:04,190 --> 00:02:06,040 bir funksiyası zəng, malloc çağırıb. 49 00:02:06,040 --> 00:02:07,390 Lakin daha sonra. 50 00:02:07,390 --> 00:02:09,139 Və sonra populates yaddaş ki, yığın 51 00:02:09,139 --> 00:02:11,764 hərfləri ilə istifadəçi var , çap izlədi, əlbəttə, 52 00:02:11,764 --> 00:02:14,800 bir null xarakteri, və ya backslash çox sonunda sıfır. 53 00:02:14,800 --> 00:02:18,280 >> Eyni zamanda, sol tərəfində Bu hekayə, bütün bu vaxt, 54 00:02:18,280 --> 00:02:20,850 biz s kimi bir dəyişən elan etdik. 55 00:02:20,850 --> 00:02:24,770 Və dəyişən indi nə edir Bir göstərici zəng başlayacaq. 56 00:02:24,770 --> 00:02:29,190 Bu, daxilində bir qutusu deyil biz string qoymaq Daven, özlüyündə, 57 00:02:29,190 --> 00:02:32,550 lakin biz ki, kvadrat qoymaq sol nə dəqiq qutusu? 58 00:02:32,550 --> 00:02:34,890 59 00:02:34,890 --> 00:02:35,390 Bəli? 60 00:02:35,390 --> 00:02:37,118 >> Auditoriya: ünvanı harada yaddaş yerləşir oldu. 61 00:02:37,118 --> 00:02:38,118 >> DAVID J. MALAN: Exactly. 62 00:02:38,118 --> 00:02:40,690 Daven harada ünvanı yaddaş yerləşir. 63 00:02:40,690 --> 00:02:44,650 Və Daven bütün yerləşir harada özlüyündə, lakin xüsusi olaraq ünvanı 64 00:02:44,650 --> 00:02:45,150 Nə? 65 00:02:45,150 --> 00:02:46,311 66 00:02:46,311 --> 00:02:46,810 Bəli? 67 00:02:46,810 --> 00:02:47,460 >> Auditoriya: First character. 68 00:02:47,460 --> 00:02:50,209 >> DAVID J. MALAN: İlk xarakter Bu halda Daven, olan, 69 00:02:50,209 --> 00:02:53,820 Mən əsassız idi təklif və unrealistically 1, OX1, 70 00:02:53,820 --> 00:02:55,910 olan yalnız deməkdir 1 hexadecimal sayı. 71 00:02:55,910 --> 00:02:57,993 Amma yəqin ki, olacaq daha böyük sayı üçün 72 00:02:57,993 --> 00:03:01,260 biz cəlb edə bilər ki, bir prefiks kimi bir 0x ilə, 73 00:03:01,260 --> 00:03:02,806 bir hexadecimal xarakter təmsil. 74 00:03:02,806 --> 00:03:05,930 Və biz bilmək lazım deyil, çünki Daven simvol qalan 75 00:03:05,930 --> 00:03:09,860 çünki, nə sadə dizayn qərarı bir çox il əvvəl idi? 76 00:03:09,860 --> 00:03:10,548 Bəli? 77 00:03:10,548 --> 00:03:11,651 >> Auditoriya: Backslash 0. 78 00:03:11,651 --> 00:03:12,900 DAVID J. MALAN: Bəli, dəqiq. 79 00:03:12,900 --> 00:03:18,100 The backslash 0 olsa da, sizə imkan verir xətti vaxt, simli axır, 80 00:03:18,100 --> 00:03:20,400 soldan sağa gəzmək, bir loop üçün, və ya bir müddət ilə 81 00:03:20,400 --> 00:03:22,608 loop, və ya bir şey kimi ki, burada, oh, müəyyən 82 00:03:22,608 --> 00:03:24,751 bu simli sonu. 83 00:03:24,751 --> 00:03:27,000 Yalnız bu ünvanı, simli başlanğıcı, 84 00:03:27,000 --> 00:03:30,290 biz tam əldə edə bilərsiniz Bu, bütün bu müddət, çünki, 85 00:03:30,290 --> 00:03:32,030 bir string bir char ulduz olmuşdur. 86 00:03:32,030 --> 00:03:36,370 >> Belə ki, istifadə davam etmək əlbəttə ki, gözəl var Bu CS50 kitabxana və bu abstraksiya, 87 00:03:36,370 --> 00:03:38,440 belə ki, danışmaq, lakin biz will üçün dəqiq görmək başlayacaq 88 00:03:38,440 --> 00:03:41,230 neler oldu Bütün bu vaxt altından. 89 00:03:41,230 --> 00:03:45,260 Belə ki, bu nümunə geri bilər, də son dəfə, 0 müqayisə, 90 00:03:45,260 --> 00:03:47,300 faktiki müqayisə etmədi. 91 00:03:47,300 --> 00:03:49,070 Amma biz bu həll etməyə başladı. 92 00:03:49,070 --> 00:03:52,020 >> Amma bəlkə də ixtisasartırma, Mən kimsə maraq ola bilər 93 00:03:52,020 --> 00:03:54,261 çəhrayı fil gün, da Chang etdi? 94 00:03:54,261 --> 00:03:55,760 Necə qarşısında haqqında? [Işitilemez]. 95 00:03:55,760 --> 00:03:56,660 Qədər Hadi. 96 00:03:56,660 --> 00:03:58,740 >> Və bu arada, Siz gəlmək kimi, edək 97 00:03:58,740 --> 00:04:01,670 yalnız bir an üçün hesab nə Bu kodu həqiqətən edirdi. 98 00:04:01,670 --> 00:04:04,917 Bu iki dəyişənlərin qədər elan edir top, s və t və getString zəng. 99 00:04:04,917 --> 00:04:08,250 Bu, bir çox istifadəçi dostu proqram deyil Bu demək deyil, çünki nə. 100 00:04:08,250 --> 00:04:10,541 Lakin biz istəyirik güman edək sulu hissəsi üzərində dayanılır. 101 00:04:10,541 --> 00:04:14,470 S bərabərdir əgər və sonra biz bunu ki, printf demək lazımdır t bərabərdir, 102 00:04:14,470 --> 00:04:16,170 Siz eyni şey tipli. 103 00:04:16,170 --> 00:04:16,670 Hello. 104 00:04:16,670 --> 00:04:17,050 Sizin adınız nədir? 105 00:04:17,050 --> 00:04:17,779 >> Janelle: Janelle. 106 00:04:17,779 --> 00:04:19,529 DAVID J. MALAN: Janelle, görüşmək üçün gözəl. 107 00:04:19,529 --> 00:04:21,800 Sizin problem belə Bu fil əl 108 00:04:21,800 --> 00:04:25,230 ilk bizə nə bir şəkil çəkmək üçün o ilk iki təmsil olunur 109 00:04:25,230 --> 00:04:25,970 xətləri. 110 00:04:25,970 --> 00:04:28,139 Belə ki, s və t ola bilər necə ekranda təmsil? 111 00:04:28,139 --> 00:04:30,680 Və yalnız bu cəlb edə bilər Bu böyük ekranda barmaq. 112 00:04:30,680 --> 00:04:31,780 113 00:04:31,780 --> 00:04:34,510 >> Belə ki, iki yarıya indirir var tənlik hər tərəfi. 114 00:04:34,510 --> 00:04:37,760 Belə ki, orada sol s, və sonra sağ getString. 115 00:04:37,760 --> 00:04:40,540 Və sonra t, sol var və sonra sağ getString. 116 00:04:40,540 --> 00:04:42,630 Belə ki, necə başlaya bilər bir şəkil rəsm ki, 117 00:04:42,630 --> 00:04:46,340 neler təmsil Burada yaddaş, siz deyəcəksiniz? 118 00:04:46,340 --> 00:04:49,150 Və mənə izah edək Siz getmək kimi nə edirik. 119 00:04:49,150 --> 00:04:49,820 >> Janelle: OK. 120 00:04:49,820 --> 00:04:58,890 Bəli, ilk, xahiş olunacaq Siz giriş string almaq. 121 00:04:58,890 --> 00:05:00,439 Və təəssüf, oh store-- olardı. 122 00:05:00,439 --> 00:05:01,230 DAVID J. MALAN: OK. 123 00:05:01,230 --> 00:05:01,730 Yaxşı. 124 00:05:01,730 --> 00:05:03,330 Və bu nə adlanır? 125 00:05:03,330 --> 00:05:03,950 OK, Oh. 126 00:05:03,950 --> 00:05:04,450 Davam edin. 127 00:05:04,450 --> 00:05:05,575 Mən dayandırmaq demək deyil. 128 00:05:05,575 --> 00:05:07,060 Janelle: Sorry. 129 00:05:07,060 --> 00:05:14,237 Belə ki, daxil onu daxil edəcəklərini Ünvan əmin kontormerinin Təfərrüatlar. 130 00:05:14,237 --> 00:05:17,320 Mən dəqiq sayı xatırlayıram bilməz, lakin mən 0 başlayaraq inanıram. 131 00:05:17,320 --> 00:05:18,420 >> DAVID J. MALAN: Yəni bütün doğru Mən nömrələri çünki, 132 00:05:18,420 --> 00:05:19,650 belə ki, heç düzgün cavab var. 133 00:05:19,650 --> 00:05:22,105 >> Janelle: 0 qövs ilə başlayaraq. 134 00:05:22,105 --> 00:05:24,000 >> DAVID J. MALAN: OK, belə ki, element 0. 135 00:05:24,000 --> 00:05:24,765 Sure. 136 00:05:24,765 --> 00:05:28,295 >> Janelle: Və sonra, əgər yalnız iki məktub kimi 137 00:05:28,295 --> 00:05:30,496 >> DAVID J. MALAN: OK, geri. 138 00:05:30,496 --> 00:05:33,629 >> Janelle: Belə element 0 və sonra element 1 və ya element 2. 139 00:05:33,629 --> 00:05:36,670 Parça Və: DAVID J. MALAN şəkil indi rəsm? 140 00:05:36,670 --> 00:05:37,690 GetString zəng? 141 00:05:37,690 --> 00:05:38,830 Ya s bəyannamə? 142 00:05:38,830 --> 00:05:42,890 >> Janelle: Bəyannamə s, inanıram. 143 00:05:42,890 --> 00:05:45,980 Oh, getString, bu ki, çünki hər [daxil inputted? sahəsi. ?] 144 00:05:45,980 --> 00:05:46,510 >> DAVID J. MALAN: Yaxşı. 145 00:05:46,510 --> 00:05:47,051 Dəqiq. 146 00:05:47,051 --> 00:05:49,300 Hətta bu səmərəli olsa bir sıra, geri qaytarır, 147 00:05:49,300 --> 00:05:53,300 biz bir string geri almaq zaman, biz 01 və 2 istifadə edərək simli index. 148 00:05:53,300 --> 00:05:56,180 Texniki, bu yəqin ki, Fərdi ünvanları təmsil, 149 00:05:56,180 --> 00:05:57,100 lakin gözəl var. 150 00:05:57,100 --> 00:06:00,170 >> Belə ki, güman, mən yalnız sürətli bilərsiniz biz off sol harada irəli 151 00:06:00,170 --> 00:06:04,320 Sonuncu dəfə biri əgər strings, bir b e g idi 152 00:06:04,320 --> 00:06:10,337 backslash 0, bununla təmsil gabe Agentliyi Giriş, necə biz indi ola bilər? 153 00:06:10,337 --> 00:06:12,670 Bu ki, yaddaş əgər GetString geri edilmişdir? 154 00:06:12,670 --> 00:06:14,415 155 00:06:14,415 --> 00:06:17,610 >> Janelle: bu olacaq Bir qövs təmsil? 156 00:06:17,610 --> 00:06:18,750 >> DAVID J. MALAN: bir qövs By? 157 00:06:18,750 --> 00:06:19,130 Heç bir, yaxşı. 158 00:06:19,130 --> 00:06:21,171 , Yalnız pictorially, deyirlər Mənə yalnız irəli getmək 159 00:06:21,171 --> 00:06:25,710 Bu s, əgər, ki, bu təklif GetString qaytarılması dəyəri. 160 00:06:25,710 --> 00:06:29,482 Və 0, 1, 2, bu tərtib etdiyiniz , mükəmməl ağlabatan deyil Çünki 161 00:06:29,482 --> 00:06:30,940 kimi simli index bilərsiniz. 162 00:06:30,940 --> 00:06:33,340 Amma yalnız uyğun olmaq Sonuncu dəfə mənə irəli gedək 163 00:06:33,340 --> 00:06:37,310 və özbaşına bu təklif ünvan, 1 bu ünvanı 2, 164 00:06:37,310 --> 00:06:39,597 Bu s ünvanı 3 və. 165 00:06:39,597 --> 00:06:41,430 Belə ki, yalnız super olmaq aydın, nə olacaq 166 00:06:41,430 --> 00:06:44,580 ki, nəticəsində s getmək üçün kodu ilk line, siz deyəcəksiniz? 167 00:06:44,580 --> 00:06:45,420 >> Janelle: Ünvan 1? 168 00:06:45,420 --> 00:06:46,420 >> DAVID J. MALAN: Exactly. 169 00:06:46,420 --> 00:06:47,190 Belə ki, 0x1 müraciət. 170 00:06:47,190 --> 00:06:48,220 171 00:06:48,220 --> 00:06:51,230 Və eyni zamanda, mənə irəli gedək və Siz etdiyiniz nə qədər dublikat 172 00:06:51,230 --> 00:06:52,740 və burada öz t əlavə edin. 173 00:06:52,740 --> 00:06:56,340 Mən gəbə yazın olsaydı yenə ikinci dəfə, 174 00:06:56,340 --> 00:07:01,530 GetString ilə istenir zaman, harada, Əlbəttə, gabe getmək üçün gedir? 175 00:07:01,530 --> 00:07:02,280 Yaxşı, presumably-- 176 00:07:02,280 --> 00:07:04,935 177 00:07:04,935 --> 00:07:05,975 >> Janelle: burada Like? 178 00:07:05,975 --> 00:07:06,850 DAVID J. MALAN: Bəli. 179 00:07:06,850 --> 00:07:08,516 Janelle: Yoxsa eyni qutuları da var? 180 00:07:08,516 --> 00:07:11,940 DAVID J. MALAN: Mənə Bəli, təklif edək dəqiq, bu əlavə qutuları belə. 181 00:07:11,940 --> 00:07:15,230 Amma indi nə əsas var belə ki, Mən bu olduqca yaxın tərtib etdik baxmayaraq 182 00:07:15,230 --> 00:07:18,650 together-- 0x1, bu əslində 0x2-- olunur, 183 00:07:18,650 --> 00:07:25,750 bu artıq, ünvanı 0x10 ola bilər Məsələn, və 0x11, və 0x12, 184 00:07:25,750 --> 00:07:26,870 və s. 185 00:07:26,870 --> 00:07:29,955 Və belə ki, bu halda, nə t burada sona olacaq? 186 00:07:29,955 --> 00:07:30,830 >> Janelle: 0x10? 187 00:07:30,830 --> 00:07:31,830 DAVID J. MALAN: Exactly. 188 00:07:31,830 --> 00:07:33,180 Belə ki, 0x10. 189 00:07:33,180 --> 00:07:34,570 Və indi, son sual. 190 00:07:34,570 --> 00:07:37,510 Siz uzaq, iş var günə qədər bir fil üçün ən ağır. 191 00:07:37,510 --> 00:07:42,650 İndi, mən kodu qoparmaq əgər yenə nə zaman, xətti üç, 192 00:07:42,650 --> 00:07:47,630 s bərabərdir t bərabərdir əgər, Mən, həqiqətən, nə am biz burada tərtib etdik müqayisə ki? 193 00:07:47,630 --> 00:07:49,271 >> Janelle: İki URL? 194 00:07:49,271 --> 00:07:50,270 DAVID J. MALAN: Exactly. 195 00:07:50,270 --> 00:07:53,350 Mən t bərabər bərabər oldu dedi alıram? 196 00:07:53,350 --> 00:07:56,210 Başqa sözlə, 10 bərabər bərabər 1? 197 00:07:56,210 --> 00:07:59,710 Və əlbəttə, Aşkar cavab indi heç edir. 198 00:07:59,710 --> 00:08:02,920 Və bu proqram nəticədə Siz demək nə, çap olacaq? 199 00:08:02,920 --> 00:08:05,770 200 00:08:05,770 --> 00:08:08,405 >> Janelle: bu, ola bilər Siz eyni şey tipli? 201 00:08:08,405 --> 00:08:11,446 >> DAVID J. MALAN: Belə ki s 1 və t 10? 202 00:08:11,446 --> 00:08:13,320 >> Janelle: Siz müxtəlif şeyləri yazılmış. 203 00:08:13,320 --> 00:08:13,570 >> DAVID J. MALAN: Exactly. 204 00:08:13,570 --> 00:08:14,480 Siz müxtəlif şeyləri yazılmış. 205 00:08:14,480 --> 00:08:14,850 Bütün hüquqlar. 206 00:08:14,850 --> 00:08:16,714 Belə ki, bir alqış, Burada, biz bilər. 207 00:08:16,714 --> 00:08:17,214 [Alqış] 208 00:08:17,214 --> 00:08:17,708 Ki, ağrılı idi. 209 00:08:17,708 --> 00:08:18,208 Mən bilirəm. 210 00:08:18,208 --> 00:08:19,684 Gözəl işlər. 211 00:08:19,684 --> 00:08:24,690 Belə ki, indi görək, əgər biz bilməz fix nə ayrı tease. 212 00:08:24,690 --> 00:08:28,040 Və əlbəttə, biz bunu müəyyən zaman mən indi green-- təmsil edəcəyik 213 00:08:28,040 --> 00:08:29,690 Biz burada aksesuarların bir neçə etdi. 214 00:08:29,690 --> 00:08:32,409 Birincisi, bir ağlı başında olma kimi Mən ilk yoxlanılması alıram, yoxlamaq 215 00:08:32,409 --> 00:08:35,110 s null bərabərdir və t null bərabərdir əgər. 216 00:08:35,110 --> 00:08:39,440 Və yalnız aydın olmaq, zaman güc ya t oxşar kodu null olacaq? 217 00:08:39,440 --> 00:08:43,140 218 00:08:43,140 --> 00:08:44,490 Zaman və ya t null ola bilər. 219 00:08:44,490 --> 00:08:44,990 Bəli? 220 00:08:44,990 --> 00:08:45,990 >> Auditoriya: [işitilemez]. 221 00:08:45,990 --> 00:08:49,490 222 00:08:49,490 --> 00:08:50,510 >> DAVID J. MALAN: Exactly. 223 00:08:50,510 --> 00:08:52,840 Simli istifadəçi ki, əgər Yığdığınız yol çox uzun 224 00:08:52,840 --> 00:08:56,140 yaddaş uyğun, və ya bəzi kimi qəribə künc halda, 225 00:08:56,140 --> 00:08:59,010 biz görəcəksiniz kimi, sanki, getString Bu gün, onun sənədlərin, 226 00:08:59,010 --> 00:09:02,330 kimi null qayıdacaq deyir xüsusi sentinel dəyəri, 227 00:09:02,330 --> 00:09:05,417 və ya yalnız sort xüsusi simvolu ki, bir şey yanlış getdi deməkdir. 228 00:09:05,417 --> 00:09:07,500 Belə ki, biz check istədiyiniz bu çıxır, çünki 229 00:09:07,500 --> 00:09:09,720 ki, null çox təhlükəli dəyəri nə. 230 00:09:09,720 --> 00:09:14,250 >> Tez-tez, bir şey etmək üçün cəhd edin null keçən bir funksiyası cəlb 231 00:09:14,250 --> 00:09:17,470 giriş kimi ki, funksiyası instance-- üçün çox bu, qəza və bilər, 232 00:09:17,470 --> 00:09:19,090 bütün proqram yazmaq. 233 00:09:19,090 --> 00:09:22,570 Belə ki, bu üçüncü xətt indi yalnız bir ağlı başında olma deyil Siz əgər, səhv yoxlanılması yoxlayın. 234 00:09:22,570 --> 00:09:25,450 Ki, indi yaxşı vərdiş var Bizə hər zaman almaq üçün biz 235 00:09:25,450 --> 00:09:28,050 bir dəyəri istifadə etməyə cəhd ki, , potensial, null ola bilər. 236 00:09:28,050 --> 00:09:32,000 >> İndi burada dördüncü xətti, "Əgər strcmp (s, t)," yaxşı, 237 00:09:32,000 --> 00:09:33,180 nə istinadən var? 238 00:09:33,180 --> 00:09:36,750 Bəli, biz bu çox müfəssəl a bildirib string müqayisə üçün adlı funksiyası. 239 00:09:36,750 --> 00:09:40,370 Və həyat onun məqsədi müqayisə etmək ikinci buna qarşı ilk dəlil, 240 00:09:40,370 --> 00:09:44,640 lakin onların ünvanları baxımından, biz bir an təsadüfən etdi 241 00:09:44,640 --> 00:09:48,270 əvvəl qırmızı kodu ilə, lakin deyil, həmin iki müqayisə 242 00:09:48,270 --> 00:09:53,210 Bu humanly intuitiv strings Buna qarşı, bu müqayisə ilə yol, 243 00:09:53,210 --> 00:09:56,690 bu, qarşı və qarşı sonra dayandırılması zaman əgər bir və 244 00:09:56,690 --> 00:09:59,590 və ya barmaqları hər bir backslash 0 edib. 245 00:09:59,590 --> 00:10:04,530 Belə ki, kimsə il əvvəl həyata keçirilən strcmp Funksionalığına bizim üçün həyata 246 00:10:04,530 --> 00:10:08,890 biz kazanılmış olardı ümid etdiyini yalnız iki sadə dəyərləri müqayisə. 247 00:10:08,890 --> 00:10:14,929 >> İndi səmimi, mən rəsm saxlamaq Bu müxtəlif ədəd bütün. 248 00:10:14,929 --> 00:10:17,470 Amma reallıq oldum ki, bütün vaxt bu qədər edilməsi. 249 00:10:17,470 --> 00:10:19,580 Və mənə yalnız irəli getmək və bu həyata cızmaq 250 00:10:19,580 --> 00:10:23,100 bir point etmək ki, sonunda gün və irəli hərəkət, 251 00:10:23,100 --> 00:10:30,160 biz, həqiqətən qayğı fikrində deyilik nə şeylər əslində müraciət 252 00:10:30,160 --> 00:10:30,790 yaddaş. 253 00:10:30,790 --> 00:10:34,320 Mən bu çəkmək fikrində deyiləm qədər artıq nömrələri növ, 254 00:10:34,320 --> 00:10:38,970 Mən uzaq bir bu yalnız mücərrəd deyiləm yalnız oxları ilə çox dostluq az. 255 00:10:38,970 --> 00:10:42,060 >> Başqa sözlə, bir pointer əgər, yaxşı, yalnız, sanki çəkmək imkan 256 00:10:42,060 --> 00:10:45,430 bir göstərici kimi, bir arrow işarə , başqa bir şey özü 257 00:10:45,430 --> 00:10:48,280 və çox daha çox narahat Bu ünvanları minutia 258 00:10:48,280 --> 00:10:49,910 ki, yenə, mən hər halda təşkil edib. 259 00:10:49,910 --> 00:10:52,680 Amma biz o ünvanları görmək lazımdır, bəzən kodu hata zaman. 260 00:10:52,680 --> 00:10:56,450 >> İndi isə, bu proqram burada düzeltmelerini, əlbəttə, 261 00:10:56,450 --> 00:10:58,720 müqayisə ki, problem bu iki strings. 262 00:10:58,720 --> 00:11:00,260 Amma biz başqa problem qaçdı. 263 00:11:00,260 --> 00:11:03,180 Bu surəti idi son dəfə proqram 264 00:11:03,180 --> 00:11:06,880 vasitəsi, Mən kapitallaşdırmaq çalışır simli yalnız ilk character. 265 00:11:06,880 --> 00:11:09,620 Amma simptom nə idi biz zaman sonuncu dəfə gördüm 266 00:11:09,620 --> 00:11:14,150 bir istifadəçi kimi, bir dəyər tipli kiçik gabe, s, 267 00:11:14,150 --> 00:11:19,310 sonra biz t daxil s verildi orada üçüncü xətti kimi, 268 00:11:19,310 --> 00:11:22,900 və sonra mən çalışdı t bracket 0 kapitallaşdırmaq? 269 00:11:22,900 --> 00:11:25,950 Təsiri nə idi t bracket 0 burada dəyişir? 270 00:11:25,950 --> 00:11:27,150 >> Auditoriya: Bu s dəyişdi. 271 00:11:27,150 --> 00:11:29,360 >> DAVID J. MALAN: Bəli, Mən də, s dəyişdi. 272 00:11:29,360 --> 00:11:31,050 Həqiqətən gedir nə çünki? 273 00:11:31,050 --> 00:11:34,130 Bəli, mən təmiz olar, əgər mənə görək Bu şəkil up, aşağıdakı kimi. 274 00:11:34,130 --> 00:11:41,390 >> S varsa, yenə söz g, a, b, e, backslash, 0, s 275 00:11:41,390 --> 00:11:44,084 biz bir qutu kimi rəsm davam edəcəyik Burada, lakin daha çox ünvanları. 276 00:11:44,084 --> 00:11:45,250 Nin şeyi edilməsi dayandırmaq bildirin. 277 00:11:45,250 --> 00:11:47,510 Yalnız bir şəkil çəkmək edək dünya sadələşdirmək. 278 00:11:47,510 --> 00:11:52,640 >> Mən string t ilə t bəyan edərkən, ki, yaddaş ki, yığın yaradır. 279 00:11:52,640 --> 00:11:55,850 Square 32 olur ən kompüter bit. 280 00:11:55,850 --> 00:11:59,530 Əslində, əgər heç bir eşitdim kompüter, 32-bit memarlıq olan 281 00:11:59,530 --> 00:12:03,000 həqiqətən fantezi-danışmaq, yalnız 32-bit ünvanlarını istifadə edir deməkdir. 282 00:12:03,000 --> 00:12:05,370 Və bir kənara texniki, Əgər merak etdiyiniz əgər 283 00:12:05,370 --> 00:12:09,630 niyə köhnə kompüter, həqiqətən əgər RAM çox şorbası onları çalışdı, 284 00:12:09,630 --> 00:12:12,360 yalnız maksimum ola bilər RAM dörd gigabayt, 285 00:12:12,360 --> 00:12:14,860 yaxşı sözün, çünki, Köhnə kompüter ola bilər yalnız 286 00:12:14,860 --> 00:12:17,250 4 kimi yüksək saymaq milyard, 4 milyard bayt, 287 00:12:17,250 --> 00:12:20,590 Çünki 32-bit istifadə URL üçün nömrələri. 288 00:12:20,590 --> 00:12:23,260 >> Amma hər halda, bu Məsələn, hekayə çox sadə. 289 00:12:23,260 --> 00:12:27,250 t yalnız başqa göstərici, və ya həqiqətən char ulduz, aka string. 290 00:12:27,250 --> 00:12:30,860 Və necə bu şəkil yeniləmək istəyirəm İndi kod ikinci xətti ilə, 291 00:12:30,860 --> 00:12:31,950 sağda, nöqtə, nöqtə? 292 00:12:31,950 --> 00:12:35,845 Mən nə zaman string t, s nöqtəli vergül bərabərdir bu şəkil necə dəyişə bilər? 293 00:12:35,845 --> 00:12:37,500 294 00:12:37,500 --> 00:12:38,000 Bəli? 295 00:12:38,000 --> 00:12:38,916 >> Auditoriya: [işitilemez]. 296 00:12:38,916 --> 00:12:41,087 297 00:12:41,087 --> 00:12:42,020 >> DAVID J. MALAN: Bəli. 298 00:12:42,020 --> 00:12:42,600 Dəqiq. 299 00:12:42,600 --> 00:12:45,620 Mən yalnız bir arrow qoymaq eyni ünvana t qutusu, 300 00:12:45,620 --> 00:12:47,570 eyni ilk məktubu verdi. 301 00:12:47,570 --> 00:12:50,850 Və ya texniki, əgər bu guy, 0x1 hələ ki 302 00:12:50,850 --> 00:12:53,052 I baxmayaraq kimi bu Burada 0x1 və burada 0x1. 303 00:12:53,052 --> 00:12:54,760 Ancaq yenə də, kimin umurunda URL haqqında? 304 00:12:54,760 --> 00:12:56,345 İndi məsələ ki, yalnız bir fikirdir. 305 00:12:56,345 --> 00:12:57,720 Belə ki, burada nə edir. 306 00:12:57,720 --> 00:13:02,690 Əlbəttə, əgər t bracket Belə ki, Array notation olan 0, 307 00:13:02,690 --> 00:13:05,650 of kursu və səmimi, görünür burada bir sıra var kimi, 308 00:13:05,650 --> 00:13:07,340 lakin indi bu qəribə şey var. 309 00:13:07,340 --> 00:13:11,160 Proqramlaşdırma dilini bilmək, C, bu xüsusiyyət təklif edir 310 00:13:11,160 --> 00:13:14,650 vasitəsi, t bir olsa pointer, və ya bir göstərici, 311 00:13:14,650 --> 00:13:18,050 Siz hələ ki, tanış istifadə edə bilərsiniz rahat kvadrat mötərizə 312 00:13:18,050 --> 00:13:22,520 notation ilk element getmək üçün, İkinci element, və ya hər hansı element və ya 313 00:13:22,520 --> 00:13:26,130 ki, pointer işarə edir ki, ehtimalla, çünki 314 00:13:26,130 --> 00:13:29,410 , bu halda kimi, bəzi array işarə. 315 00:13:29,410 --> 00:13:30,340 >> Belə ki, necə biz bu düzeltmek edirsiniz? 316 00:13:30,340 --> 00:13:33,660 Bir aldığı səmimi, bu ilk baxışda az böyük. 317 00:13:33,660 --> 00:13:35,340 Amma burada bir yeni və təkmilləşdirilmiş versiyası. 318 00:13:35,340 --> 00:13:37,460 >> Belə ki, ilk alıram Bu CS50 kitabxana xilas, 319 00:13:37,460 --> 00:13:41,170 yalnız həqiqətən ki, var edir ifşa bir char ulduz, yalnız bir sinonimi. 320 00:13:41,170 --> 00:13:43,540 Və t da char ulduz edir. 321 00:13:43,540 --> 00:13:48,290 Amma haqqında nə gedir ki, xətti sağ tərəfdən 322 00:13:48,290 --> 00:13:49,970 t bir dəyər təyin olunur? 323 00:13:49,970 --> 00:13:50,790 >> Malloc nədir? 324 00:13:50,790 --> 00:13:51,630 Nə strlen? 325 00:13:51,630 --> 00:13:52,547 Sizeof (char) nədir? 326 00:13:52,547 --> 00:13:54,380 Nə heck bu yoxdur line baxmaq belə kompleks? 327 00:13:54,380 --> 00:13:55,713 Nə yüksək səviyyədə edir? 328 00:13:55,713 --> 00:13:56,482 329 00:13:56,482 --> 00:13:57,440 Nə t saxlanılması? 330 00:13:57,440 --> 00:13:58,646 Bəli? 331 00:13:58,646 --> 00:14:01,104 Auditoriya: Bu ayrılması oldu bir yaddaş alanı müəyyən məbləği. 332 00:14:01,104 --> 00:14:03,032 Bu, saxlamaq üçün var hərhalda, məktublar [Işitilemez]. 333 00:14:03,032 --> 00:14:04,032 >> DAVID J. MALAN: Perfect. 334 00:14:04,032 --> 00:14:04,540 Perfect. 335 00:14:04,540 --> 00:14:06,650 Bu müəyyən ayrılması oldu yaddaş alanı məbləği 336 00:14:06,650 --> 00:14:08,940 , ehtimalla, gələcək məktublar saxlamaq üçün. 337 00:14:08,940 --> 00:14:11,310 Və xüsusilə, malloc Buna görə də nə qayıdır? 338 00:14:11,310 --> 00:14:13,114 339 00:14:13,114 --> 00:14:14,851 >> Auditoriya: [işitilemez] olmusunuz? 340 00:14:14,851 --> 00:14:15,850 DAVID J. MALAN: Exactly. 341 00:14:15,850 --> 00:14:18,850 Ki, yaddaş ünvan qaytarılması, olan deyərək bir xülya yoludur, 342 00:14:18,850 --> 00:14:21,640 Bu ünvan qaytarır ki, yaddaş ilk byte. 343 00:14:21,640 --> 00:14:25,460 Mənə yadda üzrə onus edir nə qədər yaddaş Mən, həqiqətən, 344 00:14:25,460 --> 00:14:27,140 ayrılmış və ya malloc istədi. 345 00:14:27,140 --> 00:14:28,384 >> İndi nə qədər? 346 00:14:28,384 --> 00:14:30,550 Bəli, var, baxmayaraq ki, Burada mötərizədə bir çox, 347 00:14:30,550 --> 00:14:32,970 malloc yalnız bir mübahisə edir. 348 00:14:32,970 --> 00:14:37,250 Mən s strlen ifadə vermək belə alıram Mənə çox bytes s var kimi, 349 00:14:37,250 --> 00:14:37,800 lakin bir əlavə. 350 00:14:37,800 --> 00:14:38,300 Niyə? 351 00:14:38,300 --> 00:14:39,030 352 00:14:39,030 --> 00:14:39,530 Bəli? 353 00:14:39,530 --> 00:14:40,840 >> Auditoriya: backslash 0. 354 00:14:40,840 --> 00:14:41,840 DAVID J. MALAN: Exactly. 355 00:14:41,840 --> 00:14:43,423 Biz bir az Ev təsərrüfatı nə var. 356 00:14:43,423 --> 00:14:45,970 Bir backslash var, çünki Belə ki, 0, biz daha yaxşı xatırlayıram ediyorum. 357 00:14:45,970 --> 00:14:47,310 Əks halda, biz gedirik bir string yaratmaq üçün 358 00:14:47,310 --> 00:14:49,170 xüsusi terminator yoxdur. 359 00:14:49,170 --> 00:14:52,640 >> Eyni zamanda, yalnız super olmaq anal, I, sizeof (char) var 360 00:14:52,640 --> 00:14:55,730 yalnız halda kimsə mənim çalışır deyil CS50 cihaz kodu, 361 00:14:55,730 --> 00:14:58,220 lakin bəlkə müxtəlif kompüter cəmi yerləşir chars 362 00:14:58,220 --> 00:15:01,470 Konvensiya ilə bir byte var, lakin iki bytes, və ya daha böyük bir şey. 363 00:15:01,470 --> 00:15:04,490 Bu, sadəcə super olmaq üçün var, səhvlər super qarşı. 364 00:15:04,490 --> 00:15:06,940 Baxmayaraq ki, əslində, bu çox güman ki, 1 olacaq. 365 00:15:06,940 --> 00:15:11,490 >> İndi isə, mən irəli getmək və surəti simli, t bracket i t bracket s bərabərdir. 366 00:15:11,490 --> 00:15:14,962 Mən keçən həftə üçün təxirə salmaq olacaq mənbə kodu neler görmek üçün. 367 00:15:14,962 --> 00:15:17,670 Əsas paket və ancaq səbəbi, yaşıl, indi kodu qoymaq 368 00:15:17,670 --> 00:15:22,520 ki, son line çünki t bracket 0, toupper bərabərdir 369 00:15:22,520 --> 00:15:25,230 təsiri var hərflə olan string? 370 00:15:25,230 --> 00:15:26,960 t və / və ya s? 371 00:15:26,960 --> 00:15:29,280 372 00:15:29,280 --> 00:15:30,580 Kodu ki, son line. 373 00:15:30,580 --> 00:15:32,930 374 00:15:32,930 --> 00:15:35,560 >> Nə çünki Just t, , bu dəfə baş 375 00:15:35,560 --> 00:15:41,500 Mən bir az ki, son addım geri əgər, Mən malloc zəng zaman, nə edir, baş 376 00:15:41,500 --> 00:15:45,380 Mən mahiyyətcə yaddaş yığın almaq ki, orijinal kimi eyni ölçüsü, 377 00:15:45,380 --> 00:15:47,020 ki, hesab çünki etdim. 378 00:15:47,020 --> 00:15:50,920 Mən ünvan t saxlanılması alıram yaddaş ki, yığın. 379 00:15:50,920 --> 00:15:53,370 Hətta bu gözəl görünür baxmayaraq və olduqca gözəl və boş, 380 00:15:53,370 --> 00:15:56,882 reallıq nə biz will var edir Burada, zəng zibil dəyərlər saxlamaq. 381 00:15:56,882 --> 00:15:59,340 Yaddaş ki, yığın biləcək çox də əvvəl istifadə edilmişdir, 382 00:15:59,340 --> 00:16:00,940 bir neçə saniyə, bir neçə dəqiqə əvvəl. 383 00:16:00,940 --> 00:16:04,410 Belə ki, tamamilə nömrələri ola bilər yalnız qəza var və ya məktublar,. 384 00:16:04,410 --> 00:16:08,580 Amma onlar qədər etibarlı deyilik özümü yaddaş bu yığın yaşayır 385 00:16:08,580 --> 00:16:12,510 faktiki chars ilə kimi orada loop üçün yoxdur. 386 00:16:12,510 --> 00:16:13,180 Bütün hüquqlar? 387 00:16:13,180 --> 00:16:16,180 >> Belə ki, indi orgasm Bu üç nümunələri 388 00:16:16,180 --> 00:16:20,730 ki, zahirən, son dəfə sınıq idi Bu Swap Məsələn, bu funksiya 389 00:16:20,730 --> 00:16:23,670 mənada işləyib Bu bir və b dəyişdirildikdə ki. 390 00:16:23,670 --> 00:16:25,620 Amma nə digər mənada iş deyil? 391 00:16:25,620 --> 00:16:27,616 392 00:16:27,616 --> 00:16:28,614 Bəli? 393 00:16:28,614 --> 00:16:29,612 >> Auditoriya: [işitilemez]. 394 00:16:29,612 --> 00:16:35,600 395 00:16:35,600 --> 00:16:36,700 >> DAVID J. MALAN: Exactly. 396 00:16:36,700 --> 00:16:39,530 Mən bu funksiya zəng idi əgər Məsələn another-- dən, 397 00:16:39,530 --> 00:16:42,870 , burada əsas kimi bir funksiya I I, dəyişən, x və y 398 00:16:42,870 --> 00:16:46,160 Keçən həftə olduğu, eyni kodu, və mən x və y keçmək 399 00:16:46,160 --> 00:16:49,860 Swap, sonra Swap-- zəng etmək üçün, əlbəttə, düzgün versiyası 400 00:16:49,860 --> 00:16:52,220 biz istəyirik nə edir see-- bunu etməyib. 401 00:16:52,220 --> 00:16:53,770 Belə ki, fix nədir? 402 00:16:53,770 --> 00:16:56,850 >> Yaxşı, belə ki, yalnız olmaq aydın, mənə irəli gedək 403 00:16:56,850 --> 00:17:05,450 and-- ikinci burada mənə vermək, və görmək Mən sizə son bir göstərə bilər əgər 404 00:17:05,450 --> 00:17:12,464 Mən tapa bilərsiniz əgər in görək in-- olacaq Bu real fast-- OK, [Işitilemez]. 405 00:17:12,464 --> 00:17:18,440 406 00:17:18,440 --> 00:17:19,240 OK, orada deyil. 407 00:17:19,240 --> 00:17:21,000 Mən yalnız yazaraq alıram əmrləri bilməz. 408 00:17:21,000 --> 00:17:23,780 Mən bunu almaq istəyirəm son dəqiqə nümunə 409 00:17:23,780 --> 00:17:27,960 Son dəfə, hansı indi heç bir Swap adlanır. 410 00:17:27,960 --> 00:17:30,200 >> Belə ki, heç Swap olduğu Biz son dəfə off sol 411 00:17:30,200 --> 00:17:32,930 vasitəsi, I başlatılmış 1 x və 2 y. 412 00:17:32,930 --> 00:17:35,840 Mən sonra 1 və 2 keçən Swap zəng. 413 00:17:35,840 --> 00:17:37,930 Və sonra bu funksiya müəyyən mənada işləyib, 414 00:17:37,930 --> 00:17:40,750 lakin heç daimi idi x və y təsir. 415 00:17:40,750 --> 00:17:45,430 Belə ki, əl-da məsələ necə indi, nə Biz həqiqətən bu problemi həll edirsiniz? 416 00:17:45,430 --> 00:17:47,820 Əl həlli nədir? 417 00:17:47,820 --> 00:17:53,150 >> Bəli, bu gün yeni olan swap.c da, fərqlər bir neçə bildiriş. 418 00:17:53,150 --> 00:17:54,700 x və y eynidir. 419 00:17:54,700 --> 00:17:57,250 Amma nə aydın deyil line 25 haqqında müxtəlif var? 420 00:17:57,250 --> 00:17:58,880 421 00:17:58,880 --> 00:18:01,715 Yadınızdadırsa, nə var yeni ikinci bir əvvəl kimi baxdı nə? 422 00:18:01,715 --> 00:18:02,565 >> Auditoriya: [işitilemez]. 423 00:18:02,565 --> 00:18:03,440 >> DAVID J. MALAN: Bəli. 424 00:18:03,440 --> 00:18:06,680 Belə ki, Ampersands yeni parça var sintaksis yalnız bu proqram, 425 00:18:06,680 --> 00:18:08,560 həm də ümumiyyətlə CS50. 426 00:18:08,560 --> 00:18:10,680 Tarix, mən düşünmürəm Biz hər hansı bir örnekler gördüm 427 00:18:10,680 --> 00:18:14,070 və ya, həqiqətən, hər hansı onlara danışdı bəlkə, preemptively başqa detal, 428 00:18:14,070 --> 00:18:16,467 bölməsində, bu kimi bir işareti. 429 00:18:16,467 --> 00:18:19,300 Bəli, bu işareti bir çıxır yeni sintaksis son ədəd 430 00:18:19,300 --> 00:18:20,174 biz öyrənmək olacaq. 431 00:18:20,174 --> 00:18:23,500 O deməkdir ki, bu Bəzi dəyişən ünvanı. 432 00:18:23,500 --> 00:18:25,070 Nə ünvan At x yaşayır? 433 00:18:25,070 --> 00:18:26,510 Amma y nə ünvanı yaşayır? 434 00:18:26,510 --> 00:18:28,700 Çünki əgər əvvəl fundamental problem 435 00:18:28,700 --> 00:18:32,970 ki, x və y keçib edildi biz həqiqətən etmək istəyirəm nə nüsxə kimi 436 00:18:32,970 --> 00:18:38,780 bir xəzinə kimi ilə Swap təmin edir harada x və həqiqətən y gətirib çıxarır ki, xəritə 437 00:18:38,780 --> 00:18:41,910 ki, RAM var Swap xəritəsi təqib edə bilərsiniz 438 00:18:41,910 --> 00:18:47,760 x və ya y spot qeyd yerdə və getmək və faktiki dəyərləri dəyişdirmək 1 və 2 439 00:18:47,760 --> 00:18:48,270 var. 440 00:18:48,270 --> 00:18:50,710 >> Belə ki, Swap çox az dəyişdirmək lazımdır. 441 00:18:50,710 --> 00:18:53,760 Və ilk baxışdan, bu qüdrət char ulduz bir az oxşar görünür. 442 00:18:53,760 --> 00:18:54,850 Və həqiqətən deyil. 443 00:18:54,850 --> 00:18:59,635 Belə ki, məlumatların hansı növ bir göstərici, Bu qeyd hissəsi əsaslanır? 444 00:18:59,635 --> 00:19:00,810 445 00:19:00,810 --> 00:19:01,620 Belə ki, bir int var. 446 00:19:01,620 --> 00:19:04,880 >> Belə bir artıq int edir, bir int ünvanı var. 447 00:19:04,880 --> 00:19:07,910 Və eyni, b indi gedir bir int ünvanı olacaq. 448 00:19:07,910 --> 00:19:12,470 Mən indi Əsas olan Swap zəng zaman, Mən dəyişdirmək 1 və 2 vermək fikrində deyiləm. 449 00:19:12,470 --> 00:19:15,540 Mən kimi vermək gedirəm Ox-bir və öküz bir şey, 450 00:19:15,540 --> 00:19:19,820 səbəb olacaq ki, iki ünvanları Onların faktiki yerlərdə Swap 451 00:19:19,820 --> 00:19:21,310 mənim kompüter yaddaş. 452 00:19:21,310 --> 00:19:25,580 >> Belə ki, indi mənim qalan həyata keçirilməsi bir TAD dəyişdirmək lazımdır. 453 00:19:25,580 --> 00:19:28,650 Nə indi açıq-aydın müxtəlif kod bu üç xətləri? 454 00:19:28,650 --> 00:19:31,350 Bütün bu lənətləmək stars var yer üzərində, bütün sağ? 455 00:19:31,350 --> 00:19:33,014 Bəs burada olub? 456 00:19:33,014 --> 00:19:33,514 Bəli? 457 00:19:33,514 --> 00:19:35,055 >> Auditoriya: Bu [Işitilemez] açıq-aydın var. 458 00:19:35,055 --> 00:19:36,832 459 00:19:36,832 --> 00:19:37,990 >> DAVID J. MALAN: Exactly. 460 00:19:37,990 --> 00:19:41,560 Bu kontekstdə belə və bu idi Ən yaxşı dizayn qərar, etiraf, 461 00:19:41,560 --> 00:19:42,530 il əvvəl. 462 00:19:42,530 --> 00:19:45,110 Bu çərçivədə, olduğu Siz yalnız bir ulduz var, 463 00:19:45,110 --> 00:19:48,240 və bir veri növü yoxdur, int kimi, dərhal sol, 464 00:19:48,240 --> 00:19:53,146 əvəzinə aydın, bərabər işarəsi var, Bu çərçivədə, siz deyəndə bir ulduz, 465 00:19:53,146 --> 00:19:56,980 ki, getmək deməkdir bir var ki, ünvanı. 466 00:19:56,980 --> 00:19:58,870 Belə ki, danışmaq, xəzinə xəritə edin. 467 00:19:58,870 --> 00:20:01,720 >> Və eyni zamanda, xətt 37, eyni şey deməkdir. 468 00:20:01,720 --> 00:20:05,460 Ünvan a getmək və orada nə qoymaq? 469 00:20:05,460 --> 00:20:09,520 Nə olursa olsun edir b ifadə edən yer. 470 00:20:09,520 --> 00:20:10,980 Başqa sözlə, b gedin. 471 00:20:10,980 --> 00:20:12,130 Ki, dəyəri alın. 472 00:20:12,130 --> 00:20:15,620 Bərabər başına bir gedin və imza, atama operator, 473 00:20:15,620 --> 00:20:17,010 var ki, dəyəri qoydu. 474 00:20:17,010 --> 00:20:19,272 >> Eynilə, int temp yalnız bir int edir. 475 00:20:19,272 --> 00:20:20,730 Heç temp haqqında dəyişdirmək lazımdır. 476 00:20:20,730 --> 00:20:24,810 Bu Annenberg yalnız bir ehtiyat şüşə var Bəzi süd və ya portağal şirəsi üçün. 477 00:20:24,810 --> 00:20:27,630 Amma, demək b getmək lazımdır. 478 00:20:27,630 --> 00:20:31,449 Ki, hedef gedin və orada temp dəyəri qoydu. 479 00:20:31,449 --> 00:20:32,490 Beləliklə nə? 480 00:20:32,490 --> 00:20:36,540 Mən, həqiqətən, bu dəfə Swap zəng zaman Bu ilk tray burada Main təmsil 481 00:20:36,540 --> 00:20:42,270 bu ikinci tray Swap təmsil zaman Mən işareti x və işareti y keçmək 482 00:20:42,270 --> 00:20:47,150 Main Swap, yalnız, aydın olmaq bu yığını çərçivəsində qəbul nədir? 483 00:20:47,150 --> 00:20:48,700 484 00:20:48,700 --> 00:20:49,200 Bəli? 485 00:20:49,200 --> 00:20:50,180 >> Auditoriya: [işitilemez]. 486 00:20:50,180 --> 00:20:51,180 DAVID J. MALAN: Exactly. 487 00:20:51,180 --> 00:20:53,129 X ünvanı və y ünvanı. 488 00:20:53,129 --> 00:20:55,170 Və bu hesab edə bilər poçt ünvanları kimi. 489 00:20:55,170 --> 00:20:58,772 33 Oxford Street və 35 Oxford Street, və siz 490 00:20:58,772 --> 00:21:01,230 iki bina hərəkət etmək istəyirəm həmin yerlərdə var. 491 00:21:01,230 --> 00:21:04,680 >> Bu gülünc ideya sort var, lakin biz ünvan demək bütün var. 492 00:21:04,680 --> 00:21:07,000 Dünyanın harasında bilərsiniz Bu iki ints tapmaq? 493 00:21:07,000 --> 00:21:09,470 Dünyanın harasında siz Bu iki bina tapmaq? 494 00:21:09,470 --> 00:21:15,170 Belə ki, nəhayət, əgər bütün bu vaxt I sonra bugünkü mənbə kodu daxil və tərtib 495 00:21:15,170 --> 00:21:22,110 Swap və run ./swap, nəhayət, üçün İlk dəfə biz, həqiqətən, görürsünüz 496 00:21:22,110 --> 00:21:25,330 mənim dəyərlər həqiqətən var uğurla değiştirilecek. 497 00:21:25,330 --> 00:21:30,860 İndi, biz hətta bilər bu, demək, gdb qeyd. 498 00:21:30,860 --> 00:21:32,740 >> Belə ki, mənə eyni fayl daxil edək. 499 00:21:32,740 --> 00:21:35,010 Mənə irəli getmək və ./swap və gdb run edək. 500 00:21:35,010 --> 00:21:36,590 501 00:21:36,590 --> 00:21:40,547 İndi, Swap, mən getmək üçün gedirəm irəli və Əsas bir fasilə nöqtəsini qurmaq. 502 00:21:40,547 --> 00:21:42,630 Və indi mən getmək üçün gedirəm irəli və proqramı. 503 00:21:42,630 --> 00:21:45,810 Və indi mənim kodu görəcəksiniz xətt durduruldu. 504 00:21:45,810 --> 00:21:48,330 >> Mən irəli və çap getmək əgər x, mən burada nə görürsünüz? 505 00:21:48,330 --> 00:21:49,314 506 00:21:49,314 --> 00:21:49,980 Bu bir sual var. 507 00:21:49,980 --> 00:21:51,030 508 00:21:51,030 --> 00:21:51,530 Daha demək? 509 00:21:51,530 --> 00:21:52,295 >> Auditoriya: [işitilemez]. 510 00:21:52,295 --> 00:21:53,910 >> DAVID J. MALAN: Belə ki, təsadüfi nömrələri, bəlkə. 511 00:21:53,910 --> 00:21:56,010 Bəlkə mən xoşbəxt almaq və bu 0 kimi, gözəl və sadə. 512 00:21:56,010 --> 00:21:57,230 Amma bəlkə bir təsadüfi sayı var. 513 00:21:57,230 --> 00:21:58,090 Bu halda, mən xoşbəxt var. 514 00:21:58,090 --> 00:21:59,030 Bu, yalnız 0 olur. 515 00:21:59,030 --> 00:22:00,780 Amma bu, həqiqətən uğurlar deyil qədər, çünki mən 516 00:22:00,780 --> 00:22:06,280 növbəti yazın və sonra çap x ki var kod line, line 19, edam olunub. 517 00:22:06,280 --> 00:22:10,942 >> Eyni zamanda, mən yazın əgər daha sonrakı və indi 2 gedirəm, y çap. 518 00:22:10,942 --> 00:22:13,900 Mən növbəti yazın əgər İndi, bu olacaq bir az confusing almaq, indi, 519 00:22:13,900 --> 00:22:17,250 printf görünür gedir ekran bunu kimi. x 1. 520 00:22:17,250 --> 00:22:18,606 >> Yenə bunu edək. 521 00:22:18,606 --> 00:22:20,480 İndi, burada harada şeylər maraqlı almaq. 522 00:22:20,480 --> 00:22:21,580 523 00:22:21,580 --> 00:22:26,580 Mən Swap və ya hətta bir addım zəng əvvəl onu, bir az peek almaq edək. 524 00:22:26,580 --> 00:22:28,980 x, yenə 1. 525 00:22:28,980 --> 00:22:33,240 Y, əlbəttə, tez ağlı başında olma edir belə ağır olduğunu, 2 yoxlayın. 526 00:22:33,240 --> 00:22:35,740 Amma işareti x nədir? 527 00:22:35,740 --> 00:22:36,760 528 00:22:36,760 --> 00:22:39,350 Cavab, bu cür funky axtarır. 529 00:22:39,350 --> 00:22:43,500 Amma parantez int ulduz yalnız Bu sözləri ÜDM yolu bir ünvan. 530 00:22:43,500 --> 00:22:48,290 Bu, bir bir göstərici bir int var deyil int, və ya başqa bir ünvan kimi tanınır. 531 00:22:48,290 --> 00:22:49,742 >> Bu crazy şey nədir? 532 00:22:49,742 --> 00:22:51,825 Biz bir şey görməmişəm olduqca əvvəl ki, kimi. 533 00:22:51,825 --> 00:22:53,650 534 00:22:53,650 --> 00:22:58,120 Belə ki, bu mənim kompüter-in ünvanı x yaşamaq olur harada yaddaş. 535 00:22:58,120 --> 00:22:59,040 Bu Ox-bir şey var. 536 00:22:59,040 --> 00:23:01,290 Və bu səmimi, nə, Mən okları rəsm açılmış etdik, 537 00:23:01,290 --> 00:23:03,340 əvəzinə nömrələri, həqiqətən qayğı çünki 538 00:23:03,340 --> 00:23:06,890 Sizin int xüsusi edir ki, big ki, ki, ünvanı. 539 00:23:06,890 --> 00:23:12,160 Amma bffff0c4, bu bütün var həqiqətən hexadecimal rəqəm, 540 00:23:12,160 --> 00:23:13,720 f vasitəsilə 0 olan. 541 00:23:13,720 --> 00:23:16,590 >> Beləliklə, biz çox qalacaqlar fikrində deyilik O şeyi nə uzun. 542 00:23:16,590 --> 00:23:19,400 Amma y çap əgər, Əlbəttə, mən 2 görürük. 543 00:23:19,400 --> 00:23:22,440 Amma işareti y, mən bu ünvanı görürük. 544 00:23:22,440 --> 00:23:26,527 Və bildiriş, maraqlı üçün, ayrı x və y nə qədər var? 545 00:23:26,527 --> 00:23:27,985 Siz ünvan ən iqnor edə bilər. 546 00:23:27,985 --> 00:23:29,330 547 00:23:29,330 --> 00:23:29,920 Dörd bytes. 548 00:23:29,920 --> 00:23:33,510 Və uyğun deyil bizim əvvəllər int necə böyük olduğunu iddia? 549 00:23:33,510 --> 00:23:34,130 Dörd bytes. 550 00:23:34,130 --> 00:23:37,420 Belə ki, hər şey astarlı up kimi görünür qəşəng, yaddaş, ümid edə bilər kimi. 551 00:23:37,420 --> 00:23:40,010 >> Belə ki, indi yalnız sürətli irəli edək Bu hekayə sonuna. 552 00:23:40,010 --> 00:23:43,290 Nin irəli getmək və addım yazın imkan Swap funksiyası daxil dalış. 553 00:23:43,290 --> 00:23:46,880 İndi mən bir yazın əgər, bu, qeyd x ünvanı üçün eyni. 554 00:23:46,880 --> 00:23:52,130 I b yazın əgər, bu eyni deyil y ünvan üçün. 555 00:23:52,130 --> 00:23:57,020 Mən əgər nə görürsünüz bir ünvana getmək demək? 556 00:23:57,020 --> 00:23:58,120 Belə ki, bir ulduz çap. 557 00:23:58,120 --> 00:24:00,130 Belə ki, ulduz bu çərçivədə, orada getmək deməkdir. 558 00:24:00,130 --> 00:24:02,730 Ampersand ünvanı nə deməkdir. 559 00:24:02,730 --> 00:24:05,000 Belə bir vasitə 1 ulduz. 560 00:24:05,000 --> 00:24:09,590 Və çap star b mənə 2 verir. 561 00:24:09,590 --> 00:24:15,750 >> Və mənə bu an üçün, fərz edək, ən azı kodu ki, 562 00:24:15,750 --> 00:24:18,950 ola bilər indi icra gəlir yol vasitəsilə əsaslandırılması. 563 00:24:18,950 --> 00:24:21,150 Amma biz uzun əvvəl bu fikir yenidən lazımdır. 564 00:24:21,150 --> 00:24:23,850 Swap Belə ki, bu versiya indi düzgün və imkan verir 565 00:24:23,850 --> 00:24:26,650 us bu veri növü dəyişdirmək üçün. 566 00:24:26,650 --> 00:24:29,120 >> Belə ki, hər hansı bir sualınız sonra Swap? 567 00:24:29,120 --> 00:24:29,890 Ulduz? 568 00:24:29,890 --> 00:24:30,690 Ünvanı haqqında? 569 00:24:30,690 --> 00:24:33,270 Və ilə, siz görəcəksiniz problem, sort, 4 qurmaq 570 00:24:33,270 --> 00:24:37,310 lakin problem 5, mütləq, necə bu müəyyən şeylər faydalı və daha çox almaq 571 00:24:37,310 --> 00:24:39,584 nəticəsində, onlarla rahat. 572 00:24:39,584 --> 00:24:40,430 Bütün şey? 573 00:24:40,430 --> 00:24:40,930 Bütün hüquqlar. 574 00:24:40,930 --> 00:24:44,350 Belə ki, malloc, bu funksiya yenidən, yalnız yaddaş, yaddaş ayırır 575 00:24:44,350 --> 00:24:45,330 ayrılması. 576 00:24:45,330 --> 00:24:47,024 Və niyə bu faydalıdır? 577 00:24:47,024 --> 00:24:48,940 Yaxşı, bütün bu vaxt, Siz malloc istifadə etdik. 578 00:24:48,940 --> 00:24:52,230 İndi necə hesab əgər işləri getString, ehtimalla, bu 579 00:24:52,230 --> 00:24:56,140 bir yığın üçün kimsə xahiş yaddaş, zaman istifadəçi bir string 580 00:24:56,140 --> 00:24:59,040 , əlbəttə ki, biz, çünki bilmirəm, CS50 heyəti, 581 00:24:59,040 --> 00:25:02,710 necə böyük o strings ki, insanlar ola bilər yazın gedir. 582 00:25:02,710 --> 00:25:07,910 >> Belə ki, ilk dəfə, başlamaq edək peel geri necə CS50 kitabxana işləri, 583 00:25:07,910 --> 00:25:10,990 nümunələri bir neçə yolu ilə ki, bizə rəhbərlik edəcək. 584 00:25:10,990 --> 00:25:15,300 Mən gedit açmaq Belə ki, və scanf 0 açmaq 585 00:25:15,300 --> 00:25:17,055 biz aşağıdakı kodu görmək olacaq. 586 00:25:17,055 --> 00:25:18,720 587 00:25:18,720 --> 00:25:23,530 Üçün web mövcuddur Scanf 0, bu gün kodu nisbətən neçə xətləri var 588 00:25:23,530 --> 00:25:25,351 Burada 20 vasitəsilə 14. 589 00:25:25,351 --> 00:25:26,600 Və bunu nə görmək bildirin. 590 00:25:26,600 --> 00:25:28,920 Bu int adlı x bəyan edir. 591 00:25:28,920 --> 00:25:30,850 Bu kimi bir şey, sayı edin deyir. 592 00:25:30,850 --> 00:25:33,940 Və indi scanf% i, x, deyir. 593 00:25:33,940 --> 00:25:35,620 Belə ki, yeni məhsullarının bir dəstə var. 594 00:25:35,620 --> 00:25:38,420 >> Amma scanf, siz cür hesab edə bilər olan printf qarşı kimi. 595 00:25:38,420 --> 00:25:40,090 printf, əlbəttə, ekran baskı. 596 00:25:40,090 --> 00:25:44,410 istifadəçi olan trans scanf sort klaviatura bir şey o yazdığınız. 597 00:25:44,410 --> 00:25:46,550 >> % I yalnız printf kimi. 598 00:25:46,550 --> 00:25:49,410 Bu gözləmək deməkdir istifadəçi int yazın. 599 00:25:49,410 --> 00:25:52,820 Və indi, niyə mən düşünürsünüz scanf & x keçən ola bilər? 600 00:25:52,820 --> 00:25:54,030 601 00:25:54,030 --> 00:25:57,770 Əgər scanf həyatında məqsədi istifadəçi bir şey almaq üçün, 602 00:25:57,770 --> 00:26:02,480 mənası nədir indi bunu qəbul və x? 603 00:26:02,480 --> 00:26:02,980 Bəli? 604 00:26:02,980 --> 00:26:03,896 >> Auditoriya: [işitilemez]. 605 00:26:03,896 --> 00:26:05,540 606 00:26:05,540 --> 00:26:06,540 DAVID J. MALAN: Exactly. 607 00:26:06,540 --> 00:26:12,900 Nə mən, insan, mənim giriş yazın ki, yer xilas olacaq. 608 00:26:12,900 --> 00:26:17,660 Bu yalnız, geri, kifayət qədər deyil biz artıq gördüm, çünki, x keçmək, 609 00:26:17,660 --> 00:26:21,630 istənilən vaxt, yalnız bir xam dəyişən keçmək bir int kimi, bəzi digər funksiyası, 610 00:26:21,630 --> 00:26:25,640 əmin, bu dəyişə bilərsiniz dəyişən, lakin daimi. 611 00:26:25,640 --> 00:26:27,360 Bu Əsas təsir edə bilməz. 612 00:26:27,360 --> 00:26:29,420 Bu, yalnız öz yerli surəti dəyişə bilərsiniz. 613 00:26:29,420 --> 00:26:32,560 Lakin, əvəzinə, siz deyil Mənə faktiki int vermək, 614 00:26:32,560 --> 00:26:36,640 ancaq mənə istiqamətləri vermək ki, int, mən indi, scanf olan 615 00:26:36,640 --> 00:26:41,050 şübhəsiz ki, mən təqib edə bilərsiniz müraciət və bir sıra qoymaq 616 00:26:41,050 --> 00:26:43,280 belə, siz də onu əldə etmək. 617 00:26:43,280 --> 00:26:45,120 >> Bu proqram çalıştırdığınızda, görək. 618 00:26:45,120 --> 00:26:49,660 Scanf 0 dot çizgi olun, 0 scanf. 619 00:26:49,660 --> 00:26:54,030 Və mən indi bir sıra yazın əgər 50 kimi, 50 üçün təşəkkür edirik. 620 00:26:54,030 --> 00:26:58,150 İndi kimi bir sıra yazın əgər mənfi 1, 1 mənfi. 621 00:26:58,150 --> 00:27:04,200 Mən indi hm, 1,5 kimi bir sıra yazın. 622 00:27:04,200 --> 00:27:06,030 Niyə mənim proqram mənə ignore idi? 623 00:27:06,030 --> 00:27:07,300 624 00:27:07,300 --> 00:27:09,880 Bəli, çünki sadəcə, mən bildirib bir int yalnız gözləmək. 625 00:27:09,880 --> 00:27:10,380 Bütün hüquqlar. 626 00:27:10,380 --> 00:27:11,630 Belə ki, bu bir versiyası var. 627 00:27:11,630 --> 00:27:16,600 Nin bir pillə qədər şeylər götürək və Bu yaxşı deyil ki, təklif. 628 00:27:16,600 --> 00:27:20,530 Və burada çox sadə nümunə yatır biz yazılı kodu başlaya bilərsiniz necə 629 00:27:20,530 --> 00:27:24,450 digər insanlar istifadə edə bilərsiniz və ya pis şeyler güzəştə. 630 00:27:24,450 --> 00:27:28,336 Belə ki, line 16, belə ki, oxşar ruhunda əvvəl, 631 00:27:28,336 --> 00:27:29,960 amma bu dəfə int bəyan deyiləm. 632 00:27:29,960 --> 00:27:32,970 Mən simli aka, bu char ulduz elan edirəm. 633 00:27:32,970 --> 00:27:35,190 >> Amma həqiqətən nə deməkdir? 634 00:27:35,190 --> 00:27:38,790 Mən bir address-- müəyyən etmir əgər Mən özbaşına zəng alıram, bufer, 635 00:27:38,790 --> 00:27:43,370 amma simple-- olmaq, s zəng edə bilər və sonra mən bunu mənə izah, 636 00:27:43,370 --> 00:27:48,630 Siz əvvəlki əsasında ola bilər, məntiq, scanf line 18 nə, 637 00:27:48,630 --> 00:27:55,000 pass% s və bufer əgər, ünvanı hansıdır? 638 00:27:55,000 --> 00:27:58,210 Siz müraciət əgər scanf, nə versiyası 0 kimi eyni məntiq, 639 00:27:58,210 --> 00:28:00,640 burada nə üçün cəhd edir, zaman istifadəçi növləri bir şey? 640 00:28:00,640 --> 00:28:02,630 641 00:28:02,630 --> 00:28:03,409 Bəli? 642 00:28:03,409 --> 00:28:04,407 >> Auditoriya: [işitilemez]. 643 00:28:04,407 --> 00:28:07,401 644 00:28:07,401 --> 00:28:08,890 >> DAVID J. MALAN: Exactly. 645 00:28:08,890 --> 00:28:11,577 Scanf, məntiq daha əvvəl, simli etmək niyyətindədir 646 00:28:11,577 --> 00:28:13,410 insan tipli ki , indi bir simli var in-- 647 00:28:13,410 --> 00:28:15,790 Bu, güman ki, bir sıra deyil o cooperates-- əgər 648 00:28:15,790 --> 00:28:19,310 və bu qoymaq üçün cəhd olacaq nə ünvanda yaddaş string 649 00:28:19,310 --> 00:28:20,340 bufer müəyyənləşdirir. 650 00:28:20,340 --> 00:28:23,870 Və bu, böyük bufer çünki həqiqətən bir ünvan deməkdir. 651 00:28:23,870 --> 00:28:30,470 >> Amma bu proqram ilə arabası iddia çox ciddi bir şəkildə, dəyəri nə çünki 652 00:28:30,470 --> 00:28:31,330 default bufer? 653 00:28:31,330 --> 00:28:33,380 654 00:28:33,380 --> 00:28:34,790 Mən nə daxil başlatılmış var? 655 00:28:34,790 --> 00:28:35,770 Yaddaş nə yığın? 656 00:28:35,770 --> 00:28:37,480 657 00:28:37,480 --> 00:28:38,620 Mən, sağ? 658 00:28:38,620 --> 00:28:42,265 >> Mən təsis etdik baxmayaraq artıq s deyirlər ki char ulduz, 659 00:28:42,265 --> 00:28:48,030 əvəzinə deyirlər ki, buffer-- Nin dəyişən adı çəkmək imkan 660 00:28:48,030 --> 00:28:53,380 Mən əgər indi buffer-- burada getString ya malloc adlı, 661 00:28:53,380 --> 00:28:56,030 səmərəli o deməkdir ki, bufer yalnız bəzi zibil dəyəri. 662 00:28:56,030 --> 00:28:57,030 >> İndi nə deməkdir? 663 00:28:57,030 --> 00:29:00,220 Mən scanf demişəm o deməkdir ki, istifadəçi bir string gözləyirik. 664 00:29:00,220 --> 00:29:01,300 Və nə bilirik? 665 00:29:01,300 --> 00:29:03,883 Nə olursa olsun bu şey işarə edir to-- və mən sual işarəsi çəkmək, 666 00:29:03,883 --> 00:29:07,060 lakin əslində, bu olacaq OX1, 2, 3, kimi bir şey doğru? 667 00:29:07,060 --> 00:29:10,730 Bəzi saxta dəyəri var ki, yalnız əvvəl orada olmaq olur. 668 00:29:10,730 --> 00:29:13,440 Belə ki, başqa bir yol qoymaq, bu bufer yalnız sanki 669 00:29:13,440 --> 00:29:16,180 yaddaş bir şey işarə. 670 00:29:16,180 --> 00:29:17,610 Mən nə heç bir fikrim yoxdur. 671 00:29:17,610 --> 00:29:24,130 >> İndi Gabe yazın Belə ki, gedir orada g-a-b-e / 0 qoymaq üçün cəhd. 672 00:29:24,130 --> 00:29:25,530 Amma kim nə bilir? 673 00:29:25,530 --> 00:29:27,480 Və keçmişdə, hər hansı bir toxunmaq cəhd etdik vaxt 674 00:29:27,480 --> 00:29:29,770 aid deyil ki, yaddaş Bizə nə oldu? 675 00:29:29,770 --> 00:29:31,020 676 00:29:31,020 --> 00:29:32,870 Və ya demək olar ki, hər zaman. 677 00:29:32,870 --> 00:29:34,310 Seqmentasiya günah, sağ? 678 00:29:34,310 --> 00:29:37,829 >> Bu bu arrow, heç bir fikrim yoxdur işarə. Bu yalnız bir təsadüfi dəyəri var. 679 00:29:37,829 --> 00:29:40,370 Və əlbəttə, siz şərh əgər ünvan olaraq bir təsadüfi dəyəri, 680 00:29:40,370 --> 00:29:42,610 Siz getmək olacaq bəzi təsadüfi təyinat. 681 00:29:42,610 --> 00:29:46,810 Belə ki, gabe crash həqiqətən bilər burada bu halda mənim program. 682 00:29:46,810 --> 00:29:50,600 >> Beləliklə, biz demək olar ki, kimi pis nə edə bilər? 683 00:29:50,600 --> 00:29:52,660 Bu üçüncü düşünün və scanf son nümunəsidir. 684 00:29:52,660 --> 00:29:53,890 685 00:29:53,890 --> 00:29:56,870 Bu versiya nə mənada yaxşıdır? 686 00:29:56,870 --> 00:29:57,990 687 00:29:57,990 --> 00:30:01,400 Siz ilə rahat, əgər Əvvəlki problem, bu daha yaxşıdır. 688 00:30:01,400 --> 00:30:02,250 Niyə? 689 00:30:02,250 --> 00:30:03,250 >> Auditoriya: [işitilemez]. 690 00:30:03,250 --> 00:30:06,235 691 00:30:06,235 --> 00:30:07,110 DAVID J. MALAN: Yaxşı. 692 00:30:07,110 --> 00:30:09,970 Line 16 Belə ki, bu halda Bu mənada, yaxşıdır 693 00:30:09,970 --> 00:30:12,030 biz aydın şəkildə istəyirik ki, bəzi yaddaş ayrılması. 694 00:30:12,030 --> 00:30:14,190 Biz malloc istifadə edirik biz həftədə 2 istifadə etdiyiniz 695 00:30:14,190 --> 00:30:16,060 yalnız bir sıra elan yanaşma. 696 00:30:16,060 --> 00:30:18,130 Və biz bir string əvvəl bildirib etdiyiniz yalnız simvol bir sıra, 697 00:30:18,130 --> 00:30:19,690 bu tamamilə qanunidir. 698 00:30:19,690 --> 00:30:22,910 Amma bu kimi, əlbəttə, var 16, sabit ölçüsü unutmayın. 699 00:30:22,910 --> 00:30:25,440 >> Belə ki, bu proqram tamamilə təhlükəsiz, mən yazın əgər 700 00:30:25,440 --> 00:30:29,760 bir xarakter strings, iki xarakter strings, 15 xarakter strings. 701 00:30:29,760 --> 00:30:34,970 Amma tezliklə mən 16 yazaraq başlamaq kimi, 17, 18, 1000 xarakter strings, 702 00:30:34,970 --> 00:30:37,390 harada ki, simli başa gedir? 703 00:30:37,390 --> 00:30:39,570 Bu qismən burada sona olacaq. 704 00:30:39,570 --> 00:30:42,820 Amma sonra kim hansı başqa bilir sərhədləri kənarda 705 00:30:42,820 --> 00:30:44,270 bu serialın? 706 00:30:44,270 --> 00:30:48,015 >> Mən var kimi olsa var Burada 16 qutuları elan etdi. 707 00:30:48,015 --> 00:30:49,300 708 00:30:49,300 --> 00:30:52,690 Belə ki, bütün 16 çıxartmaq deyil, biz will yalnız mən 16 tərtib etdik ki, iddia. 709 00:30:52,690 --> 00:30:56,540 Amma sonra bir string oxumaq üçün cəhd edin 50 simvol kimi, çox uzun deyil, 710 00:30:56,540 --> 00:31:01,270 Mən qoyulması başlamaq üçün gedirəm a, b, c, d, x, y, z. 711 00:31:01,270 --> 00:31:04,916 Və bu güman edir bəzi digər yaddaş seqment 712 00:31:04,916 --> 00:31:06,790 ki, yenə səbəb ola Mənim proqram, qəza 713 00:31:06,790 --> 00:31:10,600 Mən xahiş etdik, çünki yalnız 16 bayt daha bir şey. 714 00:31:10,600 --> 00:31:12,260 >> Belə ki, kimin umurunda? 715 00:31:12,260 --> 00:31:13,880 Yaxşı, burada CS50 kitabxana var. 716 00:31:13,880 --> 00:31:17,220 Və bu çox yalnız üst qədər təlimat kimi. 717 00:31:17,220 --> 00:31:21,670 Bu CS50 kitabxana, bütün bu vaxt, line 52 bu xətti var. 718 00:31:21,670 --> 00:31:23,680 Biz typedef görüldü, və ya etdik Siz typedef görəcəksiniz 719 00:31:23,680 --> 00:31:27,930 yalnız bir yaradır pset 4, sinonimi char ulduz daha ola bilər qovuşdurmağımız 720 00:31:27,930 --> 00:31:29,290 sadəcə string kimi istinad. 721 00:31:29,290 --> 00:31:31,540 Belə ki, bu biridir bir neçə təlim təkərlər 722 00:31:31,540 --> 00:31:34,120 biz başlıq altında gizli istifadə etdik. 723 00:31:34,120 --> 00:31:36,490 >> Eyni zamanda, burada getchar, funksiyası var. 724 00:31:36,490 --> 00:31:38,190 İndi yəqin, ona heç bir orqan var. 725 00:31:38,190 --> 00:31:40,273 Və əslində, mən saxlamaq əgər scrolling, Mən, həqiqətən, yoxdur 726 00:31:40,273 --> 00:31:42,080 hər hansı bir tətbiq görmək Bu funksiyaların. 727 00:31:42,080 --> 00:31:43,140 728 00:31:43,140 --> 00:31:45,516 Bir ağlı başında olma çek kimi, niyə ki? 729 00:31:45,516 --> 00:31:46,795 >> Auditoriya: [işitilemez]. 730 00:31:46,795 --> 00:31:47,670 DAVID J. MALAN: Bəli. 731 00:31:47,670 --> 00:31:48,950 Belə ki, bu mövzu fayl. 732 00:31:48,950 --> 00:31:52,520 Və header faylları prototipləri ehtiva, plus bəzi digər stuff, görünür, 733 00:31:52,520 --> 00:31:53,780 typedefs kimi. 734 00:31:53,780 --> 00:31:56,910 Amma CS50.c, biz var olan açıq sizə heç vaxt, 735 00:31:56,910 --> 00:32:02,100 lakin CS50 cihaz olmuşdur bütün bu dəfə, dərin qovluq daxilində, 736 00:32:02,100 --> 00:32:04,990 bütün var fark burada funksiyaları dəstə. 737 00:32:04,990 --> 00:32:06,720 >> Əslində isə aşağı diyirləyin bildirin. 738 00:32:06,720 --> 00:32:08,810 Indi üçün, onların əksəriyyəti ignore edək. 739 00:32:08,810 --> 00:32:12,670 Amma GetInt üçün aşağıya fırladın və getInt necə işlədiyini görmək. 740 00:32:12,670 --> 00:32:13,890 Belə ki, burada getInt edir. 741 00:32:13,890 --> 00:32:17,727 Əgər, həqiqətən, qayğı əgər necə almaq int burada çalışır, sənədlərin deyil. 742 00:32:17,727 --> 00:32:19,560 Və şeylər arasında bu sizə deyir deyir 743 00:32:19,560 --> 00:32:21,340 dəyərlərin silsilələri Bu qayıda bilər nə. 744 00:32:21,340 --> 00:32:24,400 Bu mahiyyətcə mənfi 2 milyard müsbət 2 milyard, vermək və ya almaq. 745 00:32:24,400 --> 00:32:26,420 >> Və bütün bu çıxır, zaman, biz heç etdik baxmayaraq 746 00:32:26,420 --> 00:32:28,570 Siz onu yoxlamaq idi, bir şey yanlış gedir əgər, 747 00:32:28,570 --> 00:32:30,680 bütün çıxır ki, bu dəfə, getInt var 748 00:32:30,680 --> 00:32:33,600 xüsusi qaytarılması edilmişdir , null, daimi deyil 749 00:32:33,600 --> 00:32:36,760 əksinə olan INT_MAX yalnız proqramçı-nin Konvensiyası. 750 00:32:36,760 --> 00:32:38,846 Burada deməkdir xüsusi dəyəri nə. 751 00:32:38,846 --> 00:32:41,470 Yalnız bu yoxlamaq üçün əmin olun halda bir şey yanlış gedir. 752 00:32:41,470 --> 00:32:43,261 Amma biz narahat heç etdik günə ki, 753 00:32:43,261 --> 00:32:45,200 yenidən, bu, çünki asanlaşdırmaq üçün nəzərdə tutulmuşdur. 754 00:32:45,200 --> 00:32:46,950 >> Amma necə getInt həyata almaq deyil? 755 00:32:46,950 --> 00:32:48,450 Yaxşı, bir, heç bir dəlilləri edir. 756 00:32:48,450 --> 00:32:49,390 Biz bilirik ki,. 757 00:32:49,390 --> 00:32:50,820 Bu int qaytarır. 758 00:32:50,820 --> 00:32:51,950 Biz bilirik ki,. 759 00:32:51,950 --> 00:32:54,460 Belə ki, necə bu başlıq altında işləyir? 760 00:32:54,460 --> 00:32:58,290 >> Belə ki, yəqin sonsuz var loop, ən azı görünüşü. 761 00:32:58,290 --> 00:33:00,290 Biz getString istifadə edirik ki, görürsünüz. 762 00:33:00,290 --> 00:33:04,000 Belə ki, maraqlı deyil. getInt öz funksiyası, getString çağırır. 763 00:33:04,000 --> 00:33:05,645 İndi niyə bu halda ola bilər? 764 00:33:05,645 --> 00:33:07,400 765 00:33:07,400 --> 00:33:09,842 Niyə müdafiə olmaqdan burada line 165 ildə? 766 00:33:09,842 --> 00:33:11,390 767 00:33:11,390 --> 00:33:15,639 Nə xətti ola bilər 164, yalnız aydın olmaq? 768 00:33:15,639 --> 00:33:16,930 Bu əvvəlki kimi eyni cavabı var. 769 00:33:16,930 --> 00:33:18,660 770 00:33:18,660 --> 00:33:20,089 Yalnız yaddaş ola bilər. 771 00:33:20,089 --> 00:33:23,130 Something, GetString ilə yanlış gedir ki, idarə etmək üçün var. 772 00:33:23,130 --> 00:33:27,070 Və səbəbi null qayıtmaq yoxdur ki, texniki, null bir göstəricisidir. 773 00:33:27,070 --> 00:33:29,120 getInt bir int geri var. 774 00:33:29,120 --> 00:33:31,060 Mən, özbaşına var , mahiyyətcə, qərar 775 00:33:31,060 --> 00:33:34,600 2 milyard gedir, vermək və ya almaq xüsusi dəyər olması heç vaxt edə bilərsiniz 776 00:33:34,600 --> 00:33:35,970 həqiqətən, istifadəçi almaq. 777 00:33:35,970 --> 00:33:39,930 Mən gedirəm yalnız bir dəyəri var bir səhv baş kodu təmsil sərf. 778 00:33:39,930 --> 00:33:41,540 >> Belə ki, indi hər şeyi bir az xülya almaq. 779 00:33:41,540 --> 00:33:44,670 Və çox eyni funksiyası deyil əvvəl, lakin çox oxşar. 780 00:33:44,670 --> 00:33:50,120 Mən line burada elan bildiriş 172, bir int n və char c həm də. 781 00:33:50,120 --> 00:33:53,600 Və sonra mən bu funky line istifadə Bu çıxır sscanf, 782 00:33:53,600 --> 00:33:55,990 klaviatura bir string scan deyil. 783 00:33:55,990 --> 00:33:59,226 Bu mövcud simli dayanır ki, istifadəçi artıq çap etmişdir. 784 00:33:59,226 --> 00:34:02,100 Mən artıq getString, adlanan mən yaddaş bir string var deməkdir. 785 00:34:02,100 --> 00:34:05,020 sscanf nə had edir bir təhlil funksiyası zəng. 786 00:34:05,020 --> 00:34:07,760 Mən var simli baxır , xarakteri ilə xarakter tipli 787 00:34:07,760 --> 00:34:09,250 və faydalı bir şey yoxdur. 788 00:34:09,250 --> 00:34:10,969 Ki, string line saxlanılır. 789 00:34:10,969 --> 00:34:13,560 Mən yalnız gedir bilirik ki, OK, oh, burada deyərək geri, 790 00:34:13,560 --> 00:34:15,143 Mən bu vaxt, lakin line çağırıb. 791 00:34:15,143 --> 00:34:15,989 792 00:34:15,989 --> 00:34:18,080 >> İndi bu bir az fərqlidir. 793 00:34:18,080 --> 00:34:22,480 Amma bu səmərəli səbəblərdən deməkdir biz qədər, bu gün bizim əlləri dalğa lazımdır 794 00:34:22,480 --> 00:34:26,070 biz yoxlamanın istifadəçi çap görmek 795 00:34:26,070 --> 00:34:29,909 və int və bəlkə başqa xarakter. 796 00:34:29,909 --> 00:34:33,610 Istifadəçi int tipli varsa, bu Mən deyiləm, çünki gedir, n saxlanılmalıdır 797 00:34:33,610 --> 00:34:36,739 ünvan bu keçən biz bu gün gördüm yeni oyun. 798 00:34:36,739 --> 00:34:41,570 Istifadəçi da çap əgər kimi 123x, o x 799 00:34:41,570 --> 00:34:45,060 bir başa gedir karakter c məktubu. 800 00:34:45,060 --> 00:34:48,739 >> İndi ki sscanf çıxır ağıllı, mənə izah edəcək, 801 00:34:48,739 --> 00:34:54,750 neçə dəyişənlər sscanf edilib doldurmaq uğurla edə. 802 00:34:54,750 --> 00:34:58,770 Bu məntiq, əgər belə funksiyası Mən GetInt həyata keçirilməsi çox alıram 803 00:34:58,770 --> 00:35:00,900 amma yoxlanılması alıram, potensial, istifadəçi üçün 804 00:35:00,900 --> 00:35:04,190 int tipli var başqa bir şey izlədi, 805 00:35:04,190 --> 00:35:08,580 nə mən sscanf Agentliyi istəyirəm qaytarılması dəyəri həqiqətən olacaq? 806 00:35:08,580 --> 00:35:10,950 Məqsədi almaq əgər yalnız istifadəçi bir int? 807 00:35:10,950 --> 00:35:13,980 808 00:35:13,980 --> 00:35:19,300 >> Belə sscanf yekunları əgər 2 ki, nə deməkdir? 809 00:35:19,300 --> 00:35:21,660 Yığdığınız istifadəçi kimi bir şey, sanki, 810 00:35:21,660 --> 00:35:24,770 Yalnız cəfəngiyatdır olan 123x. 811 00:35:24,770 --> 00:35:27,490 Bu bir səhv vəziyyət var, və Mən ki, yoxlamaq istəyirəm. 812 00:35:27,490 --> 00:35:32,960 >> Belə ki, bu istifadəçi növləri əgər tərəfindən Bu məntiqlə qayıtmaq sscanf nə, 813 00:35:32,960 --> 00:35:33,740 Siz deyəcəksiniz? 814 00:35:33,740 --> 00:35:35,070 815 00:35:35,070 --> 00:35:39,130 Belə ki, çünki 2 geri olacaq 123, burada getmək niyyətindədir 816 00:35:39,130 --> 00:35:41,580 və x burada sona gedir. 817 00:35:41,580 --> 00:35:43,970 Amma x dolu almaq istəmirəm. 818 00:35:43,970 --> 00:35:48,580 Mən yalnız uğur qazanmaq üçün sscanf istəyirəm onun dəyişənləri doldurulması. 819 00:35:48,580 --> 00:35:52,490 Və belə ki, niyə mən sscanf 1 qayıtmaq istəyirəm. 820 00:35:52,490 --> 00:35:55,750 >> Və bu baş üzərində bir az olduqda Bu an üçün, ki, tamamilə gözəl var. 821 00:35:55,750 --> 00:36:00,030 , Baxmayaraq ki, bir həyata GetInt və GetString dəyərlər 822 00:36:00,030 --> 00:36:03,630 biz bir heck edirik ki, Bu belə kimi səhv yoxlanılması çox 823 00:36:03,630 --> 00:36:07,130 ki, tarixi, olduqca çox bilərsiniz klaviatura bir şey yazın, 824 00:36:07,130 --> 00:36:08,490 və biz bunu tutmaq olacaq. 825 00:36:08,490 --> 00:36:10,592 Və biz əlbəttə ki, heyəti deyil, mütləq olacaq 826 00:36:10,592 --> 00:36:13,300 bir səhv mənbəyi ola sizin proqram, biz müdafiə edirik, çünki 827 00:36:13,300 --> 00:36:16,270 axmaq bütün yoxlanılması bir istifadəçi edə bilər ki, hər şeyi, 828 00:36:16,270 --> 00:36:18,900 , bir string yazaraq kimi Siz, həqiqətən, int istədi. 829 00:36:18,900 --> 00:36:21,350 Beləliklə, biz gəlmək lazımdır now-- üçün bu geri long-- əvvəl 830 00:36:21,350 --> 00:36:23,710 lakin bütün bu vaxt, getString və getInt var 831 00:36:23,710 --> 00:36:29,950 Bu istifadə başlıq altında olub yaddaş ünvanları əsas fikir. 832 00:36:29,950 --> 00:36:32,580 >> Belə ki, indi bir Şeyi edək istifadəçi dostu az daha çox. 833 00:36:32,580 --> 00:36:38,740 Siz Binky sonuncu geri bilər time-- mənim siçan belə cooperate-- əgər 834 00:36:38,740 --> 00:36:42,560 Biz bu kodu, olan səmimi, kifayət qədər cəfəngdir. 835 00:36:42,560 --> 00:36:45,330 Bu kodu bir şey əldə faydalı, ancaq nümunəsi idi 836 00:36:45,330 --> 00:36:48,330 ki, professor Parlante təmsil etmək üçün istifadə 837 00:36:48,330 --> 00:36:51,840 nə gedən yaddaş cəlb program. 838 00:36:51,840 --> 00:36:54,850 >> Belə ki, bu tekrar anlatmak edək hekayə super qısa. 839 00:36:54,850 --> 00:36:58,720 Bu ilk iki xətləri,-da English, nə deyərdim ki, yoxdur? 840 00:36:58,720 --> 00:37:01,230 841 00:37:01,230 --> 00:37:05,430 Yalnız əsaslı insan, lakin az texniki şərtlər, bir zərbə almaq. 842 00:37:05,430 --> 00:37:06,346 Auditoriya: [işitilemez]. 843 00:37:06,346 --> 00:37:07,705 844 00:37:07,705 --> 00:37:11,080 >> DAVID J. MALAN: OK, siz yaradılması edirik Sizin x və y dəyişənlərin ünvanları. 845 00:37:11,080 --> 00:37:15,520 Olduqca, x və y deyil, çünki ənənəvi mənada dəyişənlər. 846 00:37:15,520 --> 00:37:18,054 x və y ünvanlar və ya ünvan saxlamaq olacaq. 847 00:37:18,054 --> 00:37:19,220 Belə ki, bu bir daha cəhd edək. 848 00:37:19,220 --> 00:37:21,010 Bir pis başlanğıc olsa da. 849 00:37:21,010 --> 00:37:21,510 Bəli? 850 00:37:21,510 --> 00:37:22,426 >> Auditoriya: [işitilemez]. 851 00:37:22,426 --> 00:37:23,966 852 00:37:23,966 --> 00:37:24,840 DAVID J. MALAN: Yaxşı. 853 00:37:24,840 --> 00:37:26,173 Mən bir az təmiz hesab edirəm. 854 00:37:26,173 --> 00:37:28,630 Iki göstəricilərinə, iki integers elan. 855 00:37:28,630 --> 00:37:30,150 Və biz onlara x və y zəng edirik. 856 00:37:30,150 --> 00:37:32,790 Yoxsa biz əgər çəkmək bu şəkil kimi, yenə, 857 00:37:32,790 --> 00:37:36,410 sadəcə bütün geri ki, birinci xətti ilə edirik 858 00:37:36,410 --> 00:37:39,690 bu kimi bir qutu çəkərək, bu bir zibil dəyəri ilə, 859 00:37:39,690 --> 00:37:41,920 və sonra x zəng, və bu kimi başqa box, 860 00:37:41,920 --> 00:37:43,880 bir zibil dəyəri ilə bu, y zəng. 861 00:37:43,880 --> 00:37:45,810 Biz iki elan etdik göstəricilərinə ki, son nəticədə 862 00:37:45,810 --> 00:37:47,860 bir int üçün ünvan saxlamaq olacaq. 863 00:37:47,860 --> 00:37:49,170 Belə ki, bütün var. 864 00:37:49,170 --> 00:37:53,290 >> Binky bunu belə zaman, gil yalnız bu kimi baxdı. 865 00:37:53,290 --> 00:37:55,350 Və Nick yalnız cür okları bükülü, 866 00:37:55,350 --> 00:37:57,590 sanki onlar hər hansı bir işarə deyilik xüsusilə, çünki onlar yalnız 867 00:37:57,590 --> 00:37:58,250 zibil dəyərlər. 868 00:37:58,250 --> 00:38:01,670 Onlar açıq-aşkar başlatılmış deyilik hər yerdə xüsusilə. 869 00:38:01,670 --> 00:38:03,980 >> İndi növbəti line kodu, geri, bu idi. 870 00:38:03,980 --> 00:38:07,510 , Əsaslı istifadəçi dostu belə lakin bir qədər texniki English, 871 00:38:07,510 --> 00:38:09,790 kodu edir bu xətt nədir? 872 00:38:09,790 --> 00:38:10,391 Bəli? 873 00:38:10,391 --> 00:38:11,333 >> Auditoriya: [işitilemez]. 874 00:38:11,333 --> 00:38:12,746 875 00:38:12,746 --> 00:38:13,950 >> DAVID J. MALAN: Perfect. 876 00:38:13,950 --> 00:38:17,016 Bu yığın ayrılması oldu bir int ölçüsü ki, yaddaş. 877 00:38:17,016 --> 00:38:18,140 Və yarım cavab var. 878 00:38:18,140 --> 00:38:20,056 Siz hüququ cavab ifadə yarısı. 879 00:38:20,056 --> 00:38:22,473 Nə baş bərabər işarəsi sol tərəfində? 880 00:38:22,473 --> 00:38:22,972 Bəli? 881 00:38:22,972 --> 00:38:24,814 Auditoriya: Və varisləri bu dəyişən x? 882 00:38:24,814 --> 00:38:27,690 >> DAVID J. MALAN: And varisləri bu dəyişən x. 883 00:38:27,690 --> 00:38:31,650 Recap, sağ tərəfdən ayırdığı Belə kifayət qədər yaddaş int saxlamaq üçün. 884 00:38:31,650 --> 00:38:34,150 Amma malloc xüsusi ünvan qaytarır 885 00:38:34,150 --> 00:38:37,270 Siz var olan yaddaş ki, yığın ki, yalnız x saxlanılır olur təklif edib. 886 00:38:37,270 --> 00:38:42,560 >> Belə ki, nə Nick Binky ilə son dəfə etdim o pointer həyata sürüklənəcəklər, gil, 887 00:38:42,560 --> 00:38:46,820 yaddaş ağ yığın indi qeyd etmək ki, bir int ölçüsü bərabərdir. 888 00:38:46,820 --> 00:38:49,360 And olsun ki, nəzərdə dörd bayt təmsil etmək. 889 00:38:49,360 --> 00:38:55,310 >> Kod İndi növbəti line bunu, star x 42 olur. 890 00:38:55,310 --> 00:38:58,530 Belə ki, 42-də sadə deyil sağ tərəfdən, həyat mənası. 891 00:38:58,530 --> 00:39:00,500 Sol tərəfdən, ulduz x nə deməkdir? 892 00:39:00,500 --> 00:39:01,600 893 00:39:01,600 --> 00:39:03,280 OK ki gone-- çox ola bilər. 894 00:39:03,280 --> 00:39:04,220 OK. 895 00:39:04,220 --> 00:39:06,875 >> Auditoriya: Əsasən, [Işitilemez] getmək 896 00:39:06,875 --> 00:39:07,750 DAVID J. MALAN: Yaxşı. 897 00:39:07,750 --> 00:39:08,760 Auditoriya: [işitilemez]. 898 00:39:08,760 --> 00:39:09,760 DAVID J. MALAN: Exactly. 899 00:39:09,760 --> 00:39:11,979 Sol tərəfdən x getmək deməkdir. 900 00:39:11,979 --> 00:39:12,520 x ünvanı. 901 00:39:12,520 --> 00:39:15,520 33 Oxford Street, və ya OX1 kimi. 902 00:39:15,520 --> 00:39:18,690 Və ulduz x ki, getmək deməkdir müraciət və orada nə qoymaq? 903 00:39:18,690 --> 00:39:19,520 42. 904 00:39:19,520 --> 00:39:21,290 >> Belə ki, həqiqətən ki, Nick nə dəqiq var. 905 00:39:21,290 --> 00:39:23,740 O, by ilə başladı mahiyyətcə, əqli 906 00:39:23,740 --> 00:39:26,270 bir barmaq işarə x, arrow aşağıdakı 907 00:39:26,270 --> 00:39:30,670 sağ tərəfdən ağ qutusu yan və sayı 42 qoyulması. 908 00:39:30,670 --> 00:39:34,120 Lakin sonra hər şeyi var, bir az təhlükəli, sağ? 909 00:39:34,120 --> 00:39:35,860 Binky nin başını itirmək. 910 00:39:35,860 --> 00:39:39,465 >> Star y nə deməkdir, 13, pis luck bərabərdir? 911 00:39:39,465 --> 00:39:43,620 Belə ki, ulduz y vasitələri y ünvan getmək. 912 00:39:43,620 --> 00:39:45,630 Amma y ünvan nədir? 913 00:39:45,630 --> 00:39:47,899 914 00:39:47,899 --> 00:39:49,440 Bütün sağ, zibil dəyəri, sağ? 915 00:39:49,440 --> 00:39:50,800 Mən bir sual işarəsi olaraq qaldı. 916 00:39:50,800 --> 00:39:54,850 Nick bir qədər buruq arrow kimi çəkdi. 917 00:39:54,850 --> 00:39:59,600 Və tezliklə siz cəhd kimi orada getmək deyərək, star y yoxdur, 918 00:39:59,600 --> 00:40:03,872 lakin qanuni yoxdur ünvanı, bəzi saxta yer var, 919 00:40:03,872 --> 00:40:05,080 proqram qəza olacaq. 920 00:40:05,080 --> 00:40:08,580 Və Binky nin baş gedir bunu kimi, burada off uçmaq. 921 00:40:08,580 --> 00:40:12,130 >> Sonunda, bu proqram belə yalnız düz həyata qüsur idi. 922 00:40:12,130 --> 00:40:13,540 Bu arabası proqram idi. 923 00:40:13,540 --> 00:40:14,760 Və müəyyən etmək lazımdır. 924 00:40:14,760 --> 00:40:18,260 Və yeganə yolu, həqiqətən, düzeltmek üçün olardı, məsələn, bu xətt, 925 00:40:18,260 --> 00:40:21,010 biz hətta almaq olmayan, çünki Proqram çox tezliklə qəzaya uğrayıb. 926 00:40:21,010 --> 00:40:26,170 Amma biz bu düzeltmek üçün olsaydı, nə təsiri y bərabər x var bunu edir? 927 00:40:26,170 --> 00:40:30,010 Bəli, bu, mahiyyətcə da y göstərir nə dəyəri x işarə edir. 928 00:40:30,010 --> 00:40:32,430 >> Nick hekayə Belə ki, və ya Binky nin hekayə, həm də 929 00:40:32,430 --> 00:40:34,640 x və y işarə edilmişdir yaddaş ağ yığın, 930 00:40:34,640 --> 00:40:38,300 belə ki, nəhayət, zaman y yenidən 13 bərabərdir ulduz yoxdur, 931 00:40:38,300 --> 00:40:43,080 Siz 13 qoyulması başa müvafiq yer. 932 00:40:43,080 --> 00:40:47,640 Belə ki, bu xətləri bütün mükəmməl qanuni, bu istisna olmaqla, 933 00:40:47,640 --> 00:40:51,730 siz əvvəl baş verən zaman həqiqətən y bəzi dəyəri təyin. 934 00:40:51,730 --> 00:40:54,290 >> İndi şükürlər olsun ki, siz deyil bütün vasitəsilə səbəb var 935 00:40:54,290 --> 00:40:56,560 öz məsələləri bu cür. 936 00:40:56,560 --> 00:40:59,310 Mənə irəli getmək və açmaq burada terminal pəncərə up 937 00:40:59,310 --> 00:41:03,050 və yalnız bir an üçün, açmaq, super qısa proqramı 938 00:41:03,050 --> 00:41:04,360 də növ mənasızdır. 939 00:41:04,360 --> 00:41:05,152 Bu çirkin var. 940 00:41:05,152 --> 00:41:06,610 Bu faydalı bir şey əldə etmir. 941 00:41:06,610 --> 00:41:10,180 Amma bu məsələləri nümayiş etmir yaddaş, belə ki, bir nəzər salaq. 942 00:41:10,180 --> 00:41:11,830 >> Main, super sadə. 943 00:41:11,830 --> 00:41:14,830 Bu yəqin funksiyası çağırır, f, və sonra 0 qaytarır. 944 00:41:14,830 --> 00:41:16,310 Bu mess bu qədər ağır növü var. 945 00:41:16,310 --> 00:41:18,540 Belə ki, Main günə qədər olduqca yaxşı. 946 00:41:18,540 --> 00:41:20,100 >> Belə ki, f problemlidir. 947 00:41:20,100 --> 00:41:22,120 Və yalnız çox qoymadı adlandırma daxil səy 948 00:41:22,120 --> 00:41:23,990 burada kodunu diqqət mərkəzində saxlamaq üçün. 949 00:41:23,990 --> 00:41:25,740 f iki xətləri var. 950 00:41:25,740 --> 00:41:27,610 Və indi neler görmək bildirin. 951 00:41:27,610 --> 00:41:29,840 Belə ki, bir tərəfdən burada və mənə edək 952 00:41:29,840 --> 00:41:32,680 Əvvəlki ilə bu ardıcıl bir tərəfdən example--, 953 00:41:32,680 --> 00:41:35,830 Sol tərəfində İngilis, nə? 954 00:41:35,830 --> 00:41:36,493 Bu That 955 00:41:36,493 --> 00:41:37,701 Auditoriya: bir göstərici yaradılması. 956 00:41:37,701 --> 00:41:40,830 DAVID J. MALAN: bir pointer yaratmaq bir int və axtardığını x. 957 00:41:40,830 --> 00:41:43,789 Belə ki, bu qutuları yaradılması oldu Mən sensor ekran üzərində rəsm saxlamaq. 958 00:41:43,789 --> 00:41:45,913 İndi, sağ tərəfdən yan, malloc, əlbəttə, 959 00:41:45,913 --> 00:41:47,420 yaddaş yığın ayırır. 960 00:41:47,420 --> 00:41:49,989 Və yalnız aydın olmaq, necə çox yaddaş yəqin onu edir 961 00:41:49,989 --> 00:41:52,030 ayrılması, əgər yalnız cür burada riyaziyyat etmək? 962 00:41:52,030 --> 00:41:53,200 963 00:41:53,200 --> 00:41:54,040 >> Belə ki, 40 bytes var. 964 00:41:54,040 --> 00:41:57,400 Və mən bilirəm ki, mən bir bilmək yalnız, çünki int, bu CS50 cihaz, ən azı, 965 00:41:57,400 --> 00:41:58,060 dörd bayt edir. 966 00:41:58,060 --> 00:41:59,610 Belə ki, 10 dəfə 4 40. 967 00:41:59,610 --> 00:42:04,924 Belə ki, bu x saxlanılması, ünvanı 40 ints ilk out ki, 968 00:42:04,924 --> 00:42:07,340 geri yer ayrılıb, geri, geri, geri. 969 00:42:07,340 --> 00:42:08,470 >> Və malloc haqqında əsas nə var. 970 00:42:08,470 --> 00:42:11,261 Bu bir az yaddaş daşımır Burada, bir burada kiçik bir az burada. 971 00:42:11,261 --> 00:42:14,220 Bu, yaddaş bir yığın verir contiguously, Əməliyyat dən 972 00:42:14,220 --> 00:42:15,240 sistemi. 973 00:42:15,240 --> 00:42:18,500 >> İndi bu barədə nə, x bracket 10 0 bərabərdir? 974 00:42:18,500 --> 00:42:19,470 Kod ixtiyari line. 975 00:42:19,470 --> 00:42:21,100 Bu faydalı bir şey əldə etmir. 976 00:42:21,100 --> 00:42:26,128 Amma bu, maraqlı x bracket 10-- çünki? 977 00:42:26,128 --> 00:42:26,628 Bəli? 978 00:42:26,628 --> 00:42:27,912 >> Auditoriya: [Işitilemez]? 979 00:42:27,912 --> 00:42:30,500 >> DAVID J. MALAN: x bracket 10 null olmalıdır deyil. 980 00:42:30,500 --> 00:42:35,070 The null ətraflı yalnız dövrəyə girir strings ilə bir simli sonunda. 981 00:42:35,070 --> 00:42:36,700 Amma yaxşı bir fikir. 982 00:42:36,700 --> 00:42:39,615 >> Nə qədər böyük, hətta bu array edir I 40 bayt ayrılan etdik baxmayaraq? 983 00:42:39,615 --> 00:42:42,560 984 00:42:42,560 --> 00:42:43,690 Bu doğru, doqquz vasitəsilə 0 var? 985 00:42:43,690 --> 00:42:45,120 Bu məlumat, 10 ints var. 986 00:42:45,120 --> 00:42:48,790 40 bytes, lakin 10 ints, 0 0-dizine. 987 00:42:48,790 --> 00:42:50,930 >> Belə ki, x bracket 10 nədir? 988 00:42:50,930 --> 00:42:53,090 Bu, həqiqətən, bəzi unknown zibil dəyəri. 989 00:42:53,090 --> 00:42:54,780 Bu mənə aid deyil ki, yaddaş var. 990 00:42:54,780 --> 00:42:59,650 Mən toxunan lazım deyil byte sayı 41, 42, 43, 44. 991 00:42:59,650 --> 00:43:01,420 Mən çox az gedirəm. 992 00:43:01,420 --> 00:43:04,490 >> Və həqiqətən, Mən run əgər bu proqram, bu, çox yaxşı avariya bilər. 993 00:43:04,490 --> 00:43:05,790 Amma bəzən, biz xoşbəxt almaq lazımdır. 994 00:43:05,790 --> 00:43:07,706 Və belə ki, yalnız nümayiş üçün Hələ və səmimi, 995 00:43:07,706 --> 00:43:11,000 Siz əvvəl bilirsiniz, heç vaxt it-- bu run bildirin yoxdur. 996 00:43:11,000 --> 00:43:12,480 Bu, həqiqətən qəza vermədi. 997 00:43:12,480 --> 00:43:15,032 >> Amma bu, dəyişdirmək əgər Məsələn, 1000 kimi olmaq 998 00:43:15,032 --> 00:43:16,740 həqiqətən bu etmək qəsdən, görək 999 00:43:16,740 --> 00:43:18,710 biz əldə edə bilərsiniz əgər bu dəfə qəza. 1000 00:43:18,710 --> 00:43:20,070 OK, bu, qəza etməyib. 1001 00:43:20,070 --> 00:43:22,600 Necə 100.000 haqqında? 1002 00:43:22,600 --> 00:43:25,000 Onu yeniden yapmak edək, və indi təkrar. 1003 00:43:25,000 --> 00:43:25,500 OK. 1004 00:43:25,500 --> 00:43:25,960 Phew. 1005 00:43:25,960 --> 00:43:26,460 Bütün hüquqlar. 1006 00:43:26,460 --> 00:43:29,090 Belə görünür, yenə bu yaddaş seqmentləri, belə ki, danışmaq 1007 00:43:29,090 --> 00:43:32,660 belə biz, məntiqi böyük təkrar uğurlu olsun. 1008 00:43:32,660 --> 00:43:36,510 Amma nəhayət, bir dəfə gülünc almaq və həqiqətən, ekranda uzaq çıxmaq 1009 00:43:36,510 --> 00:43:39,120 Siz, həqiqətən yaddaş toxunmaq həqiqətən sizə aid deyil. 1010 00:43:39,120 --> 00:43:40,870 >> Amma səmimi, bu Səhvlərindən növ gedir 1011 00:43:40,870 --> 00:43:43,020 çətindir və daha olacaq öz anlamaq üçün. 1012 00:43:43,020 --> 00:43:47,880 Amma şükürlər olsun ki, proqramçılar kimi, biz Bizə bu imkan verir ki alətləri. 1013 00:43:47,880 --> 00:43:50,140 Belə ki, bu, bəlkə, bir ugliest proqramları, 1014 00:43:50,140 --> 00:43:52,060 gdb nin çıxış daha uglier. 1015 00:43:52,060 --> 00:43:55,670 Amma bu həmişə bir xətt var və ya super faydalı olan iki. 1016 00:43:55,670 --> 00:44:00,310 >> Valgrind kömək edir ki, bir proqramdır Bir proqram debug deyil, özlüyündə, 1017 00:44:00,310 --> 00:44:03,500 lakin yaddaş bağlı tapmaq problemlər, xüsusilə. 1018 00:44:03,500 --> 00:44:07,590 Bu avtomatik olaraq üçün kod davam edəcək Siz ən azı iki şey üçün baxmaq. 1019 00:44:07,590 --> 00:44:10,680 One, bir şey nə idi touch yaddaş kimi təsadüfi 1020 00:44:10,680 --> 00:44:11,980 ki, sizə aid deyil? 1021 00:44:11,980 --> 00:44:13,590 Bu o hallarda tapmaq kömək edəcək. 1022 00:44:13,590 --> 00:44:15,710 >> Və iki, kömək edəcək deyilən bir şey tapmaq 1023 00:44:15,710 --> 00:44:19,270 yaddaş sızıntıları, biz malik olan tamamilə rədd, naively, 1024 00:44:19,270 --> 00:44:21,380 bir müddət üçün və zövqlə. 1025 00:44:21,380 --> 00:44:23,140 Amma bütün çıxır bu dəfə, zaman 1026 00:44:23,140 --> 00:44:26,620 Siz getString adlı etdik bizim proqramları çox, 1027 00:44:26,620 --> 00:44:28,930 Siz əməliyyat xahiş edirik yaddaş sistemi, 1028 00:44:28,930 --> 00:44:32,070 lakin hər hansı bir xatirə var heç verilməsi 1029 00:44:32,070 --> 00:44:36,169 geri, bunu unalloc, və ya pulsuz bu deyilən kimi. 1030 00:44:36,169 --> 00:44:37,960 Xeyr, çünki biz heç etdik bunu istədi. 1031 00:44:37,960 --> 00:44:41,250 >> Lakin bütün bu zaman, proqramlar C yazılı olduğunuz 1032 00:44:41,250 --> 00:44:43,800 yaddaş sızan edilmişdir, Bu əməliyyat xahiş 1033 00:44:43,800 --> 00:44:46,190 daha sistem strings və etajer üçün yaddaş, 1034 00:44:46,190 --> 00:44:47,870 lakin geri verilməsi heç vaxt. 1035 00:44:47,870 --> 00:44:50,080 Və indi bu bir az bir oversimplification, 1036 00:44:50,080 --> 00:44:53,550 lakin heç olsanız Mac çalıştırmak və ya çox vaxt, açılış üçün PC 1037 00:44:53,550 --> 00:44:55,790 proqramları çox, bəlkə, proqramları bağlanması 1038 00:44:55,790 --> 00:44:57,795 və hətta sizin kompüter qəzaya deyil, 1039 00:44:57,795 --> 00:45:01,690 Bu, çox gec əldə edir Bu həqiqətən sanki 1040 00:45:01,690 --> 00:45:04,290 yaddaş bir çox istifadə və ya resursları, baxmayaraq ki, 1041 00:45:04,290 --> 00:45:06,070 Siz değilseniz, hətta klaviatura toxunmadan, 1042 00:45:06,070 --> 00:45:10,430 ki be-- lakin always-- bilmədi bilər proqramlar siz yayınlıyorsanız ki, 1043 00:45:10,430 --> 00:45:11,920 özlərini yaddaş sızıntıları. 1044 00:45:11,920 --> 00:45:15,645 Və onlar daha və OS xahiş saxlamaq daha çox yaddaş, lakin bu barədə unutmadan, 1045 00:45:15,645 --> 00:45:18,470 həqiqətən, istifadə, lakin Buna görə də uzaq yaddaş alaraq 1046 00:45:18,470 --> 00:45:20,500 istədiyiniz bilər ki, digər proqramları. 1047 00:45:20,500 --> 00:45:23,940 Belə ki, ümumi izah edir. 1048 00:45:23,940 --> 00:45:25,940 İndi burada tapa Valgrind-nin deyil çıxış tamamilə 1049 00:45:25,940 --> 00:45:29,290 o az mənfur və eyni daha rahat. 1050 00:45:29,290 --> 00:45:32,690 Lakin maraqlı stuff burada sağ qədər. 1051 00:45:32,690 --> 00:45:37,060 Bu mənə yalnış yazmaq izah ölçüsü dörd, bu proqram olur 1052 00:45:37,060 --> 00:45:40,640 Xüsusilə, memory.c line 21. 1053 00:45:40,640 --> 00:45:45,450 >> Mən hm, orada həqiqətən, line 21 getmək əgər ölçüsü dörd yalnış yazmaq. 1054 00:45:45,450 --> 00:45:46,250 Niyə size dörd? 1055 00:45:46,250 --> 00:45:49,500 Bəli, bu bir sayı və anything-- ola bilər bir int edir. 1056 00:45:49,500 --> 00:45:50,450 Belə ki, dörd bayt var. 1057 00:45:50,450 --> 00:45:52,550 Mən dörd bayt qoyulması alıram onlar aid deyil. 1058 00:45:52,550 --> 00:45:55,080 Nə Valgrind var həqiqətən mənə izah olunur. 1059 00:45:55,080 --> 00:45:57,600 Bundan başqa, bu da olacaq biz görəcəksiniz kimi, mənə, 1060 00:45:57,600 --> 00:46:01,490 Bu gələcək pset run kimi, əgər siz həqiqətən yaddaş sızan etdiyiniz zaman 1061 00:46:01,490 --> 00:46:05,300 Mən adlı etdik, çünki mən, malloc, lakin mən, həqiqətən yoxdur 1062 00:46:05,300 --> 00:46:08,010 pulsuz, bu halda, adlı, biz nəhayət görürsünüz 1063 00:46:08,010 --> 00:46:09,830 malloc əks edir. 1064 00:46:09,830 --> 00:46:10,860 1065 00:46:10,860 --> 00:46:12,930 >> Belə ki, indi mən bir final nümunə hesab edirəm. 1066 00:46:12,930 --> 00:46:14,050 1067 00:46:14,050 --> 00:46:16,690 Belə ki, bu bir az daha çox gizli, lakin bəlkə var 1068 00:46:16,690 --> 00:46:19,180 ən böyük səbəbi , yaddaşlı ehtiyatlı olun 1069 00:46:19,180 --> 00:46:24,490 və səbəb çox proqramlar və hətta bu gün / və ya web server, 1070 00:46:24,490 --> 00:46:28,200 haradasa pis uşaqlar tərəfindən qəbul edilir internet birtəhər olan 1071 00:46:28,200 --> 00:46:33,390 Sizin server saxta paketlərin göndərilməsi hesabı güzəştə çalışır, 1072 00:46:33,390 --> 00:46:36,420 və ya məlumat almaq, və ya yalnız ümumiyyətlə maşın üzərində. 1073 00:46:36,420 --> 00:46:38,910 Bufer daşqın kimi adı, vasitələri təklif 1074 00:46:38,910 --> 00:46:40,740 bir int, lakin bufer coşğun. 1075 00:46:40,740 --> 00:46:43,490 Və bir tampon bir xülya yoludur deyərək bu yaddaş bir dəstə var. 1076 00:46:43,490 --> 00:46:46,710 >> Və həqiqətən, Mən bir string adlanır əvəzinə s bufer əvvəl. 1077 00:46:46,710 --> 00:46:49,234 Bir bufer əgər çünki, YouTube mənada kimi, 1078 00:46:49,234 --> 00:46:52,400 və ya video seyr etdiyiniz istənilən vaxt, Sözü buffering görmüşəm bilər, 1079 00:46:52,400 --> 00:46:53,040 dot, nöqtə nöqtə. 1080 00:46:53,040 --> 00:46:54,240 Bu inanılmaz annoying var. 1081 00:46:54,240 --> 00:46:55,990 Və yalnız deməkdir Sizin video player ki, 1082 00:46:55,990 --> 00:46:58,710 çox download çalışır bayt bytes, çox 1083 00:46:58,710 --> 00:47:00,170 internet bir video. 1084 00:47:00,170 --> 00:47:02,920 Amma yavaş var, belə ki, çalışırıq Onlardan bir dəstə download 1085 00:47:02,920 --> 00:47:06,430 ki, bir tampon, bir konteyner doldurmaq üçün Siz ki, sonra bilərsiniz kifayət qədər bytes var 1086 00:47:06,430 --> 00:47:09,174 siz video göstərmək daim duraklatarak olmadan. 1087 00:47:09,174 --> 00:47:11,340 Amma siz çıxır Bu böyük bufer. 1088 00:47:11,340 --> 00:47:15,710 Amma bu qədər məlumat qoymaq üçün cəhd edin Bu, çox pis şeylər ola bilər. 1089 00:47:15,710 --> 00:47:22,780 Belə ki, məsələn, baxaq Məsələn bu son teaser. 1090 00:47:22,780 --> 00:47:24,720 Bu başqa bir proqram ki, ilk baxışda, 1091 00:47:24,720 --> 00:47:26,540 super faydalı bir şey deyil. 1092 00:47:26,540 --> 00:47:29,590 Bu Əsas funksiyası var ki f ki, funksiyası çağırır. 1093 00:47:29,590 --> 00:47:36,640 Və funksiyası, f, burada var bir char array ölçüsü 12, c çağırıb. 1094 00:47:36,640 --> 00:47:39,340 Və sonra bu istifadə edir Yeni funksiyası strncpy çağırıb. 1095 00:47:39,340 --> 00:47:40,430 1096 00:47:40,430 --> 00:47:45,190 >> Bu, bu sadə ki, həyata çevirir kodu sadə xətti, yalnız iki xətləri, 1097 00:47:45,190 --> 00:47:49,130 biz, mənim bütün proqramı etdik və buna görə də, mənim bütün kompüter, 1098 00:47:49,130 --> 00:47:54,000 və istifadəçi hesabı, və mənim ağır hər kəs üçün potensial həssas sürücü 1099 00:47:54,000 --> 00:47:58,170 kim bilir və çalıştırmak üçün kifayət qədər yaxşı müəyyən bir command line ilə bu proqram 1100 00:47:58,170 --> 00:47:58,900 arqument. 1101 00:47:58,900 --> 00:48:03,400 Başqa sözlə, əgər bu pis oğlan yazaraq argvargv [1] daxilində qoyur 1102 00:48:03,400 --> 00:48:08,750 klaviatura bir çox xüsusi hazırlanmış at simli, abc, 123, lakin mahiyyətcə, 1103 00:48:08,750 --> 00:48:15,180 yürütülebilir təmsil edən ikili rəmzləri kodu, o yazırdı ki, bir proqram, 1104 00:48:15,180 --> 00:48:19,190 olan bu sadə proqram ilə proqramları minlərlə nümayəndəsi 1105 00:48:19,190 --> 00:48:23,610 ki, daresay, eyni dərəcədə həssasdırlar o, son nəticədə bütün düzəlişlər edə bilərsiniz 1106 00:48:23,610 --> 00:48:26,680 sabit faylları, bir almaq o bilər ki, tez yanıb-sönən 1107 00:48:26,680 --> 00:48:30,170 öz komutları yazın özüm üçün bütün faylları e-poçt. 1108 00:48:30,170 --> 00:48:34,660 Mən nə edə bilər ki, bir şey, o və ya bu kodu ilə edə bilərsiniz. 1109 00:48:34,660 --> 00:48:36,575 >> Biz olduqca hələ bu həll deyil. 1110 00:48:36,575 --> 00:48:38,700 Və əslində, bu, olacaq bir az şəkil cəlb 1111 00:48:38,700 --> 00:48:41,470 Bu kimi, biz tezliklə gəlmək lazımdır olan bütün yaxşı anlamaq üçün. 1112 00:48:41,470 --> 00:48:44,480 Amma bu gün üçün, üzrə son qoy , bir az daha ümid edirəm ki, nə 1113 00:48:44,480 --> 00:48:48,360 aydın XKCD zarafat, biz növbəti dəfə davam qədər. 1114 00:48:48,360 --> 00:48:51,100 1115 00:48:51,100 --> 00:48:51,600 Bütün hüquqlar. 1116 00:48:51,600 --> 00:48:53,446 Çərşənbə günü görəcəksiniz. 1117 00:48:53,446 --> 00:48:54,754 >> [MUSIC ifa] 1118 00:48:54,754 --> 00:48:57,790 >> HOPARLÖR: İndi, dərin Daven Farnham tərəfindən fikirlər. 1119 00:48:57,790 --> 00:49:00,890 1120 00:49:00,890 --> 00:49:04,770 Yaddaş bir qalaq daxil jumping kimi Bazar günortadan qızıl yarpaqları. 1121 00:49:04,770 --> 00:49:09,000 Külək əsir, tossing sizin oh hair--, mən gün when-- miss 1122 00:49:09,000 --> 00:49:11,100 1123 00:49:11,100 --> 00:49:12,650 >> [Gülüş] 1124 00:49:12,650 --> 00:49:13,750