1 00:00:00,000 --> 00:00:11,242 >> [Musiqi ifa] 2 00:00:11,242 --> 00:00:16,630 >> DAVID J. Malan: All right bu CS50 edir bu həftə beş başlayın. 3 00:00:16,630 --> 00:00:21,480 Bu gün, sizin oturacaq yastıqları altında, bir şey tapa bilməz. 4 00:00:21,480 --> 00:00:24,790 Lakin yuxarıda, bir, bu tapmaq lazımdır üçün qiymətləndirmə kiçik mö'cüzə 5 00:00:24,790 --> 00:00:26,970 sizi ki, bütün işləri beş oyun. 6 00:00:26,970 --> 00:00:30,290 Sadəcə üzərinə kiçik dairə aradan qaldırılması üçün oynayan başlamaq üçün alt 7 00:00:30,290 --> 00:00:31,680 sinif qalan. 8 00:00:31,680 --> 00:00:38,930 >> Belə ki Xatırladaq, və ya müəyyən problem bilirik bu həftə sonu çıxdı dörd, 9 00:00:38,930 --> 00:00:40,340 başqa bir oyun yazılı daxildir. 10 00:00:40,340 --> 00:00:43,740 Lakin bu əhatə bu dəfə istifadə faktiki qrafik istifadəçi interfeysi, bir 11 00:00:43,740 --> 00:00:46,310 kimi mətn interface On beş oyun idi. 12 00:00:46,310 --> 00:00:50,210 Və irəlidə sizin yalan ki, oyun, Əgər siz hələ bu növbəti görmürsənmi olduğunuz halda, 13 00:00:50,210 --> 00:00:52,310 bu kimi bir az bir şey görünür. 14 00:00:52,310 --> 00:00:55,170 Mən terminal getmək gidiyorum burada gdb ildə pəncərə. 15 00:00:55,170 --> 00:00:58,600 Və mən irəli getmək və çalıştırmak üçün gidiyorum Siz əldə edə bilərsiniz olan heyət həlli 16 00:00:58,600 --> 00:01:01,010 adi kimi yeniləmə 50 çalışan sonra. 17 00:01:01,010 --> 00:01:04,090 >> Amma bir az daxil etmək gidiyorum gizli rejimi, bir az Pasxa yumurta, 18 00:01:04,090 --> 00:01:08,480 tərəfindən, Allah rejimi deyilən argv1 Allah qoymuşdur. 19 00:01:08,480 --> 00:01:12,920 Mən öz talimatları var öz onu çalışan 20 00:01:12,920 --> 00:01:14,220 problem kataloq seçin. 21 00:01:14,220 --> 00:01:19,190 Belə ki, indi siz tam versiyasını görmek Breakout oyun. 22 00:01:19,190 --> 00:01:21,090 Əslində, bu, heç əlləri növüdür. 23 00:01:21,090 --> 00:01:24,850 Belə ki, həqiqətən var - 24 00:01:24,850 --> 00:01:26,470 baxmayaraq wowed ola bilər - 25 00:01:26,470 --> 00:01:30,850 Allah rejimində həyata keçirilməsi üçün olduqca cüzi Breakout, on beş Oyunu fərqli olaraq, 26 00:01:30,850 --> 00:01:33,590 siz bəzi ele ola bilər hacker nəşr. 27 00:01:33,590 --> 00:01:37,890 >> Breakout bu Allah kifayətdir rejimi sadəcə, nə 28 00:01:37,890 --> 00:01:41,220 daxilən avar ilə? 29 00:01:41,220 --> 00:01:45,630 Yalnız nə üçün bərabər etmək üfüqi vəziyyətdə topu edir. 30 00:01:45,630 --> 00:01:49,220 Və belə uzun siz lockstep bu kimi bu oyun hərəkət top edəcək 31 00:01:49,220 --> 00:01:53,100 , heç, heç top miss heç vaxt və hər zaman qazanmaq lazımdır. 32 00:01:53,100 --> 00:01:55,430 >> Amma bu həftə hacker redaksiyada yalnız Allah rejimi daha çox var. 33 00:01:55,430 --> 00:01:56,720 Digər xüsusiyyətləri bir sıra var. 34 00:01:56,720 --> 00:01:58,140 Onların arasında, lazer. 35 00:01:58,140 --> 00:02:01,070 Belə ki, siz həqiqətən hövsələsiz almaq əgər kərpic güllələmə başlaya bilərsiniz 36 00:02:01,070 --> 00:02:02,120 və bir neçə başqaları. 37 00:02:02,120 --> 00:02:04,560 Və istədiyiniz kim sizin üçün standart qarşı hacker kalibrini 38 00:02:04,560 --> 00:02:08,750 nəşr, mən görürük ki, bu həftə hacker nəşr qəsdən bir 39 00:02:08,750 --> 00:02:12,830 Allah daha deyirəm, bir az daha doable rejimi beş Game idi. 40 00:02:12,830 --> 00:02:15,300 >> Bir uzanır axtarır və etdiyiniz Belə ki, əgər Siz bəzi əlavə əyləncə üçün arıyorsanız 41 00:02:15,300 --> 00:02:18,400 xüsusiyyətləri maraq əgər dive edin. 42 00:02:18,400 --> 00:02:21,280 İndi daha demək olar ki, mənim qeyd edək bir şey eləcə. 43 00:02:21,280 --> 00:02:24,780 Əgər bəzi hələ bilər gdb, gözəl olan, şəxsən toxundu. 44 00:02:24,780 --> 00:02:28,530 Amma indi həqiqətən istifadə almaq üçün vaxt Bu vasitə ilə bu və rahat etmək 45 00:02:28,530 --> 00:02:31,510 sizin həyatını çünki daha asan, həqiqətən. 46 00:02:31,510 --> 00:02:34,900 >> Gdb bir neçə Rob mühazirəsi Per həftə əvvəl geri 47 00:02:34,900 --> 00:02:36,810 ki, gdb bir ayıklama edir. 48 00:02:36,810 --> 00:02:41,230 Bu run imkan verir ki, bir alət var, sizin proqram ancaq bu addım, line-addım run 49 00:02:41,230 --> 00:02:45,680 xətti ilə, belə ki, siz ətrafında soxmaq bilər Əgər şeylər olur görmək ki, belə 50 00:02:45,680 --> 00:02:47,310 Siz çap edə bilərsiniz ki, dəyişənlərin dəyərləri. 51 00:02:47,310 --> 00:02:50,580 Bir sözlə, bu, çox daha çox verir printDef çox güc yoxdur. 52 00:02:50,580 --> 00:02:52,900 >> İndi admittedly, interfeys olduqca gizli deyil. 53 00:02:52,900 --> 00:02:55,180 Qara və ağ mətn interface çox hissəsi üçün. 54 00:02:55,180 --> 00:02:57,400 Əmrləri qədər sərt ilk xatırlamaq. 55 00:02:57,400 --> 00:03:01,230 Ancaq yarım bilər, baxmayaraq ki, bir saat, bir saat ki, upfront qoymaq 56 00:03:01,230 --> 00:03:02,940 onu vaxt investisiya, mənə etibar. 57 00:03:02,940 --> 00:03:06,440 Əlbəttə ki, dövr sonuna onu xilas edəcək daha bal gücündə bir sifariş 58 00:03:06,440 --> 00:03:07,600 ki, çox vaxt. 59 00:03:07,600 --> 00:03:09,200 >> Da həftə dive belə erkən 60 00:03:09,200 --> 00:03:13,200 Və Breakout baxımından, bilirik ki, Siz kimi uzun edə bilərsiniz 61 00:03:13,200 --> 00:03:18,230 bölüşdürülməsi kodu və ya öz kodu Sizin Pst4 kataloq davam edir. 62 00:03:18,230 --> 00:03:21,680 Siz gdb çalıştırabilirsiniz ki, bilirik. / Breakout. 63 00:03:21,680 --> 00:03:23,490 >> Bu açmaq niyyətindədir bu kimi bir pəncərə. 64 00:03:23,490 --> 00:03:25,530 Mənə özümü daha verim terminal pəncərə. 65 00:03:25,530 --> 00:03:27,770 Və sonra nə irəli getmək gidiyorum və bunu, yalnız çalıştırın deyil. 66 00:03:27,770 --> 00:03:30,690 Mən ilk fasilə nöqtəsini qurmaq üçün gidiyorum Əgər fasilə imkan verir geri, 67 00:03:30,690 --> 00:03:32,500 xüsusi yerdə icrası. 68 00:03:32,500 --> 00:03:35,750 >> Sadəcə gedirəm şeyə sadə saxlamaq üçün yazaraq yalnız line birində qırmaq 69 00:03:35,750 --> 00:03:37,000 bir nömrəli. 70 00:03:37,000 --> 00:03:40,080 71 00:03:40,080 --> 00:03:43,250 Mənə həqiqətən bu pəncərə yenidən açmaq edək bir əldə çünki 72 00:03:43,250 --> 00:03:45,700 orada az kiçik. 73 00:03:45,700 --> 00:03:53,270 Belə ki, nə mən indi burada gidiyorum edir Mən terminal pəncərə açmaq əgər. 74 00:03:53,270 --> 00:03:53,910 Orada getmək, Hadi. 75 00:03:53,910 --> 00:03:59,850 >> Mən Dropbox Pst4 geri Belə ki, indi əgər və gdb axır. / breakout daxil edin, qeyd 76 00:03:59,850 --> 00:04:02,600 Mən bir qurmaq üçün qırmaq gidiyorum line birində fasilə point. 77 00:04:02,600 --> 00:04:04,840 İndi mən getmək gidiyorum irəli və növü axır. 78 00:04:04,840 --> 00:04:07,370 Və mən nə zaman, heç bir şey qeyd baş görünür. 79 00:04:07,370 --> 00:04:08,120 >> Heç bir pop up var. 80 00:04:08,120 --> 00:04:09,790 Heç bir qrafik var hələ istifadəçi interfeysi. 81 00:04:09,790 --> 00:04:13,340 Ben çünki Amma ki, başa düşülən deyil sanki mənim proqram line biridir. 82 00:04:13,340 --> 00:04:17,110 Və mən sürətli müvəffəq etdik ki, görürsünüz xüsusilə indi 62, bütün çünki 83 00:04:17,110 --> 00:04:20,600 bu faylı üst stuff deyil Şərh və sabitləri kimi şeylər və 84 00:04:20,600 --> 00:04:22,460 İndi stuff maraqsız. 85 00:04:22,460 --> 00:04:25,840 >> Belə ki, indi mən, əsas daxilində deyiləm bu xətt 62-da, görünür. 86 00:04:25,840 --> 00:04:27,960 Və bu yalnız paylanması kodu, geri. 87 00:04:27,960 --> 00:04:33,810 Mən, eyni, gedərək bu qədər açsam mənim açılan qutusu directory Pst4 daxil daxil, 88 00:04:33,810 --> 00:04:35,450 breakout.c daxil. 89 00:04:35,450 --> 00:04:40,670 Və mən aşağı və aşağı aşağıya fırladın və əgər, və mənə davam və yandırmaq imkan 90 00:04:40,670 --> 00:04:44,990 mənim xətt nömrələri. 91 00:04:44,990 --> 00:04:50,300 >> Mən aşağıya fırladın görürəm biləcəkləriniz, əgər line 62, tam line ki, 92 00:04:50,300 --> 00:04:50,910 biz durdurduk. 93 00:04:50,910 --> 00:04:53,720 Bu xətt burada, 62, edir biz olmaq olduğunuz yerləşir. 94 00:04:53,720 --> 00:04:57,470 Belə ki, indi gdb, mən irəli getmək və əgər yazın İndi növbəti, bu olacaq daxil edin 95 00:04:57,470 --> 00:04:58,450 ki, xətt icra. 96 00:04:58,450 --> 00:05:00,610 Və voiture, biz var g pəncərə deyilən. 97 00:05:00,610 --> 00:05:02,800 Nə GWindow ilə tanımadığı Əgər narahat etmək deyil, deyil. 98 00:05:02,800 --> 00:05:05,740 Spec kimi, bu ilə tanış edəcək yaxşı gözden geçirmek video sayı 99 00:05:05,740 --> 00:05:06,830 spec ilə əlaqədar. 100 00:05:06,830 --> 00:05:08,610 >> Amma indi bu edək az daha maraqlı. 101 00:05:08,610 --> 00:05:10,960 Mənə bu pəncərə üzərində hərəkət edək yan bir az. 102 00:05:10,960 --> 00:05:13,480 Mənə pəncərə bir az edək böyük mən daha çox görə bilərsiniz. 103 00:05:13,480 --> 00:05:16,140 >> Və indi mənə irəli gedək və yenidən növbəti yoxdur. 104 00:05:16,140 --> 00:05:17,550 Və kərpic var. 105 00:05:17,550 --> 00:05:20,490 Mən növbəti yenidən yazın edin İndi top oldu. 106 00:05:20,490 --> 00:05:23,520 Və mən növbəti yenidən yazın əgər indi mən avar oldu. 107 00:05:23,520 --> 00:05:26,690 >> Və xoşbəxtlikdən bu gedit deyil həqiqətən mənə göstərməklə əməkdaşlıq 108 00:05:26,690 --> 00:05:27,660 Mən istəyirəm hər şey. 109 00:05:27,660 --> 00:05:30,820 Amma indi növbəti yenidən əgər, Növbəti yenə, mən yalnız deyiləm 110 00:05:30,820 --> 00:05:32,260 bəzi dəyişənlərin elan. 111 00:05:32,260 --> 00:05:34,750 Və mən hər hansı bir çap edə bilərsiniz Bunlardan uşaqlar. 112 00:05:34,750 --> 00:05:37,170 Print kərpic, izləri yaşayır. 113 00:05:37,170 --> 00:05:39,910 >> İndi bunu davam edərsə Növbəti, mən olacaq ki, qeyd 114 00:05:39,910 --> 00:05:40,870 ki, loop daxilində. 115 00:05:40,870 --> 00:05:43,380 Amma kodu yerinə gedir Mən gözləyirik tam olaraq. 116 00:05:43,380 --> 00:05:45,810 Beləliklə, mən bu funksiya hit zaman, gözləyin klik üçün, bunu olacaq 117 00:05:45,810 --> 00:05:46,830 Bu sözün edir. 118 00:05:46,830 --> 00:05:48,870 Beləliklə, mən nəzarət itirmiş görünürdü proqram artıq. 119 00:05:48,870 --> 00:05:50,480 >> Gdb mənə bir tez verilməsi deyil. 120 00:05:50,480 --> 00:05:51,500 Amma narahat deyil. 121 00:05:51,500 --> 00:05:53,720 Mənim oyun get haradasa basın. 122 00:05:53,720 --> 00:05:56,270 >> Və voiture, indi line 86 gəlir. 123 00:05:56,270 --> 00:05:59,460 Belə ki, yenə də, bu, nəticə etibarilə, əvəzolunmaz var ayıklama problemləri. 124 00:05:59,460 --> 00:06:03,050 Sözün gezinmek bilər kodunuzu həyata və çox çap əşyalar, 125 00:06:03,050 --> 00:06:03,640 çox, daha çox. 126 00:06:03,640 --> 00:06:07,210 Tək indi üçün, bu alətlər olduqca qədər siz almaq lazımdır. 127 00:06:07,210 --> 00:06:10,050 >> Beləliklə, biz bir nəzər alaraq, əlbəttə ki, istəyirik indi Graphics, qəflətən. 128 00:06:10,050 --> 00:06:12,350 İndi bizim dünya bir az olur daha maraqlı. 129 00:06:12,350 --> 00:06:15,680 Və bəzi, bəlkə də, bilirik Biz bu var ki, online video 130 00:06:15,680 --> 00:06:18,280 siz müşahidə olduğunuzu şort problem dəstləri hissəsi kimi. 131 00:06:18,280 --> 00:06:20,460 >> Onlar qəsdən çəkilmiş olduğunuz ağ fonunda. 132 00:06:20,460 --> 00:06:23,380 Onların bəziləri tədris var Olan bəzi mətn rəsm Fellows 133 00:06:23,380 --> 00:06:25,490 örtdü ki, ekran onların tərəfində. 134 00:06:25,490 --> 00:06:27,760 Amma əlbəttə, bu, bütün deyildir real dünyada maraqlı. 135 00:06:27,760 --> 00:06:30,520 Bu yalnız bir mühazirə zalı edir böyük ağ ekran və fonunda. 136 00:06:30,520 --> 00:06:33,330 Və bizim gözəl istehsal komanda sort hər şey gözəl baxmaq verir 137 00:06:33,330 --> 00:06:36,620 həyata əkin tərəfindən fakt sonra və ya bir şey overlaying 138 00:06:36,620 --> 00:06:37,840 biz və ya istəmirik. 139 00:06:37,840 --> 00:06:41,560 >> İndi yalnız bu həftə həvəsləndirmək və həqiqətən, siz nəticədə getmək bilərsiniz 140 00:06:41,560 --> 00:06:42,560 kompüter elm. 141 00:06:42,560 --> 00:06:44,260 Yalnız problem sonra dörd seçin. 142 00:06:44,260 --> 00:06:48,240 Amma başqa cür və ya bütün sonra Kurikulum gözəl bu nə edə bilərsiniz 143 00:06:48,240 --> 00:06:51,090 baxımından bu gün nə xüsusilə qrafika. 144 00:06:51,090 --> 00:06:53,440 >> Əgər bəziləri bu görmüşəm bilər online ətrafında axan. 145 00:06:53,440 --> 00:06:56,240 Amma, mən sizə göstərmək istədiyiniz fikir yalnız bir dəqiqə neçə, nə bir fikir 146 00:06:56,240 --> 00:07:01,890 kompüter və nə CGI, kompüter qrafikası bu gün edə bilər 147 00:07:01,890 --> 00:07:04,510 bir tanış mahnı ilə və bəlkə də film. 148 00:07:04,510 --> 00:07:05,760 >> [MUSIC - Lana DEL ray, "Gənc və gözəl] 149 00:07:05,760 --> 00:10:50,270 150 00:10:50,270 --> 00:10:52,470 >> HOPARLÖR 1: Bu, sadəcə bir az var gözəl, bəlkə də, necə 151 00:10:52,470 --> 00:10:52,857 hər yerdə - 152 00:10:52,857 --> 00:10:57,040 >> [Alqış] 153 00:10:57,040 --> 00:10:59,230 >> HOPARLÖR 1: mən yalnız endirildi. 154 00:10:59,230 --> 00:11:02,920 Amma bu, mən hesab edirəm ki, həqiqətən gözəl yalnız hər yerdə proqram və şifri və necə 155 00:11:02,920 --> 00:11:04,230 bu kimi alətlər həqiqətən. 156 00:11:04,230 --> 00:11:07,685 Belə ki istiqamətində bir dad var hansı bilərsiniz. 157 00:11:07,685 --> 00:11:10,620 Oh, çox Appliance gün. 158 00:11:10,620 --> 00:11:14,640 Yaxşı ki, həqiqətən faciəli vaxtı var Mən yalnız etməyə çalışmışıq nöqtəsinə verilir. 159 00:11:14,640 --> 00:11:18,670 >> Bütün sağ, elə başlamaq bildirin Fusion yenidən. 160 00:11:18,670 --> 00:11:20,800 Sonra mənə xatırladır. 161 00:11:20,800 --> 00:11:24,190 Bütün hüquqlar və bir əldə olmalıdır bir almaq əgər bir tərəfə e-poçt 162 00:11:24,190 --> 00:11:25,460 kimi görürsünüz. 163 00:11:25,460 --> 00:11:29,940 Bütün sağ, belə ki, ötən həftə geri biz geri soymaq bu başladı 164 00:11:29,940 --> 00:11:31,380 sonra simli kimi tanınır. 165 00:11:31,380 --> 00:11:34,700 >> simli olan bir veri növü xatırladır ki, CS50 kitabxana elan edib. 166 00:11:34,700 --> 00:11:37,740 Və bu təlim təkərlər hissəsi ki, indi çıxarmağa başlayacaq. 167 00:11:37,740 --> 00:11:41,280 Bu erkən bir faydalı konsepsiyası idi. 168 00:11:41,280 --> 00:11:43,750 Amma indi daha çox almaq olacaq maraqlı və daha güclü 169 00:11:43,750 --> 00:11:48,330 həqiqətən, başlıq altında görürəm ki, bir simli yalnız nə dedik idi? 170 00:11:48,330 --> 00:11:50,500 >> Bəli, belə bir qondarma char * var. 171 00:11:50,500 --> 00:11:53,860 Və orada * var ki işarə ünvanı, bir növ cəlb. 172 00:11:53,860 --> 00:11:58,690 Və belə ki, char * deyəndə yalnız demək kimin data type bir dəyişən bir 173 00:11:58,690 --> 00:11:59,290 İndi göstərici. 174 00:11:59,290 --> 00:12:01,770 Orada ulduz var ki yalnız bir elan o deməkdir ki, 175 00:12:01,770 --> 00:12:03,020 pointer deyilən. 176 00:12:03,020 --> 00:12:06,220 Və göstərici yəqin gedir ki, yerləşdiyi ünvan saxlamaq 177 00:12:06,220 --> 00:12:07,810 Əlbəttə, bir karakter. 178 00:12:07,810 --> 00:12:08,960 >> İndi niyə bu mənada edir? 179 00:12:08,960 --> 00:12:11,200 Bəli, bir simli nə başlıq altında? 180 00:12:11,200 --> 00:12:15,130 Yaxşı, bir müddət deyirdik olduğunuz başlıq altında bir simli ki, 181 00:12:15,130 --> 00:12:18,460 yalnız h-e-l-l-o, məsələn. 182 00:12:18,460 --> 00:12:21,585 >> Amma biz bu barədə söhbət etdik , mahiyyətcə, bir sıra edir. 183 00:12:21,585 --> 00:12:25,410 Və bir sıra sonra bir az görünür Bu hər biri ilə, bu kimi daha çox 184 00:12:25,410 --> 00:12:26,460 bir bite alaraq. 185 00:12:26,460 --> 00:12:28,710 Və sonra biz orada bildirib ki, sonra Geri burada xüsusi bir şey, 186 00:12:28,710 --> 00:12:31,270 backslash 0, ya null terminator. 187 00:12:31,270 --> 00:12:35,230 >> Bütün bu vaxt Belə ki, burada bir simli olmuşdur. 188 00:12:35,230 --> 00:12:38,320 Lakin, həqiqətən, simli deyil həqiqətən ünvanı. 189 00:12:38,320 --> 00:12:43,210 Biz görəcəksiniz kimi ünvanlarını, tez-tez Konvensiya ilə 0x ilə prefixed. 190 00:12:43,210 --> 00:12:44,540 0x nə işarə edir? 191 00:12:44,540 --> 00:12:45,970 Hər kəs bilir? 192 00:12:45,970 --> 00:12:47,320 >> Belə ki, yalnız hexadecimal deməkdir. 193 00:12:47,320 --> 00:12:52,360 Beləliklə, siz PST olan, faktiki olaraq, geri bilər 1, hesab edirəm ki, isti-up biri 194 00:12:52,360 --> 00:12:55,740 suallar həqiqətən barədə soruşdular əlavə hexadecimal notation 195 00:12:55,740 --> 00:12:57,100 ikili və Ondalık. 196 00:12:57,100 --> 00:13:00,460 Və burada motivasiya ki, hexadecimal ilə 16 var 197 00:13:00,460 --> 00:13:01,770 sizin ixtiyarınızdadır rəqəm. 198 00:13:01,770 --> 00:13:07,900 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, sonra tərəfindən, b, c, d, e, f. 199 00:13:07,900 --> 00:13:10,430 >> Və bütün bu qədər saymaq olarsa, Siz 16 ümumi almaq. 200 00:13:10,430 --> 00:13:13,200 Belə ki, bu fərqli deyil 10 olduğu decimal, 201 00:13:13,200 --> 00:13:14,690 rəqəm, doqquz vasitəsilə 0. 202 00:13:14,690 --> 00:13:17,750 Bu ikili fərqli var biz yalnız 0 və 1 var. 203 00:13:17,750 --> 00:13:21,450 >> Amma yalnız bilərsiniz günün sonunda Eyni nömrələri təmsil, lakin 204 00:13:21,450 --> 00:13:22,500 qədər fərqli. 205 00:13:22,500 --> 00:13:25,840 Və hexadecimal ümumi çünki O çıxır - və biz bu görürsünüz 206 00:13:25,840 --> 00:13:28,790 sonra zamanı - hətta biz əldə kontekstində web proqramlaşdırma 207 00:13:28,790 --> 00:13:32,100 HTML və rəng kodları, hexadecimal gözəldir. 208 00:13:32,100 --> 00:13:36,390 Hər rəqəmli Çünki, çıxır mükəmməl dörd bit təmsil edir. 209 00:13:36,390 --> 00:13:39,280 Gözəl xətləri Belə ki, yalnız cür biz nəhayət görəcəksiniz kimi. 210 00:13:39,280 --> 00:13:44,720 Belə ki, bu ola bilər Ox123 və ya bir şey kimi, belirten ünvan 123 211 00:13:44,720 --> 00:13:47,050 haradasa daxilində mənim kompüter yaddaş. 212 00:13:47,050 --> 00:13:50,600 >> Amma əlbəttə, bəzi problemlər yaranır çünki bu əsas və 213 00:13:50,600 --> 00:13:51,520 həyata keçirilməsi. 214 00:13:51,520 --> 00:13:55,930 Və mən bir zərbə etdi ki, xatırlayıram bu kimi bir funksiyanın icrası - 215 00:13:55,930 --> 00:14:00,260 Keçən həftə dash 0 dot c müqayisə ki, idi kimi baxdı, hətta 216 00:14:00,260 --> 00:14:04,270 sağ, sadəcə müqayisə etməyib iki strings düzgün. 217 00:14:04,270 --> 00:14:07,470 >> I üz əsas atılan etdik və mən atılan etdik üz şərh yalnız üzrə diqqət 218 00:14:07,470 --> 00:14:08,970 Burada maraq olan kodu. 219 00:14:08,970 --> 00:14:10,660 Bu buggy var, çünki qırmızı var. 220 00:14:10,660 --> 00:14:11,670 Nə səbəbdən? 221 00:14:11,670 --> 00:14:15,890 >> Yaxşı, üst orada mən elan zaman simli, nə həqiqətən davam 222 00:14:15,890 --> 00:14:17,260 başlıq altında? 223 00:14:17,260 --> 00:14:19,530 Yaxşı, mənə üzərində gidelim burada ekran və cəlb edir. 224 00:14:19,530 --> 00:14:23,230 Beləliklə, mən, yenə elan string s GetString. 225 00:14:23,230 --> 00:14:26,640 >> Belə ki, indi davam gedən və alıram həqiqətən nə üçün s cəlb edir. 226 00:14:26,640 --> 00:14:28,590 Burada kvadrat olacaq. 227 00:14:28,590 --> 00:14:30,490 Və mən iddia gidiyorum 32 bit var. 228 00:14:30,490 --> 00:14:32,890 Ən azı adətən, ən azı CS50 haqqında 229 00:14:32,890 --> 00:14:34,520 kompüter bir çox cihaz. 230 00:14:34,520 --> 00:14:35,980 Mən bunu s zəng etmək üçün gedirəm. 231 00:14:35,980 --> 00:14:39,070 >> Amma indi xatırlayıram ki, GetString çağırıb. 232 00:14:39,070 --> 00:14:41,430 Belə ki GetString yekunları Əlbəttə, simli. 233 00:14:41,430 --> 00:14:45,790 H-e-l-l-o istifadəçi növləri daxil edin simli salam geri olur. 234 00:14:45,790 --> 00:14:51,010 Və simli, biz yalnız dediyi kimi, bitir up yerdə kompüter yaddaşında 235 00:14:51,010 --> 00:14:53,240 sonunda bir backslash 0. 236 00:14:53,240 --> 00:14:56,650 Mən array kimi bu çəkmək lazımdır - və ya simvol bitişik blok - 237 00:14:56,650 --> 00:14:58,330 bu, həqiqətən edir. 238 00:14:58,330 --> 00:15:01,790 >> İndi nə GetString olunur həqiqətən qaytarılması? 239 00:15:01,790 --> 00:15:04,340 Nə qaytarılması edilmişdir GetString edib Bu zaman bütün? 240 00:15:04,340 --> 00:15:07,520 Yaxşı, biz əvvəlki həftə, demək, bir string qaytarır. 241 00:15:07,520 --> 00:15:10,250 Amma daha çox texniki, nə Yəqin qaytarılması GetString? 242 00:15:10,250 --> 00:15:11,610 >> Auditoriya: bir ünvan. 243 00:15:11,610 --> 00:15:12,600 >> HOPARLÖR 1: An ünvanı. 244 00:15:12,600 --> 00:15:16,630 Xüsusilə onun ünvanı qaytarır bu nə ilk bite. 245 00:15:16,630 --> 00:15:18,830 Mən yalnız bir, iki, üç istifadə saxlamaq onu rahat çünki. 246 00:15:18,830 --> 00:15:21,380 >> Bu ilk ünvanı qaytarır simli xarakterli. 247 00:15:21,380 --> 00:15:23,510 Və biz ötən həftə bildirib ki, ki, kifayət edər. 248 00:15:23,510 --> 00:15:26,710 Biz həmişə anlamaq bilər, çünki burada simli sonunda sadəcə 249 00:15:26,710 --> 00:15:30,150 bir müddət ilə, bəlkə artıq iterating loop və ya kimi bir müddət loop və ya bir şey 250 00:15:30,150 --> 00:15:34,990 ki, yalnız "backslash 0" axtarır xüsusi Sentinel xarakter. 251 00:15:34,990 --> 00:15:37,220 >> Və sonra bilirik ki string uzunluğu olmaq olur - 252 00:15:37,220 --> 00:15:37,980 Bu halda - 253 00:15:37,980 --> 00:15:38,670 beş. 254 00:15:38,670 --> 00:15:43,800 Belə ki, texniki GetString nə bu halda Ox123 qaytarır edir. 255 00:15:43,800 --> 00:15:53,670 Və texniki sonra nə olur ki, s daxilində, Ox123 saxlamayın. 256 00:15:53,670 --> 00:15:56,460 Günün sonunda hətta bu olsa yeni konsepsiya, göstəricilər, onlar etdiyiniz olunur 257 00:15:56,460 --> 00:15:57,350 yalnız dəyişənlər. 258 00:15:57,350 --> 00:16:00,440 Amma onlar bit saxlamaq üçün baş verən kollektiv bir ünvan təmsil edir. 259 00:16:00,440 --> 00:16:03,700 Belə ki, texniki cəhətdən bütün bunlar olur s saxlanılır Ox123 edir. 260 00:16:03,700 --> 00:16:04,680 >> Insanlar kimi deyil, biz - 261 00:16:04,680 --> 00:16:06,020 Bu gün irəli daxil olmaqla - 262 00:16:06,020 --> 00:16:09,290 həqiqətən, adətən, qayğı niyyətində deyil faktiki ünvan nə 263 00:16:09,290 --> 00:16:10,520 yaddaş bəzi yığın edir. 264 00:16:10,520 --> 00:16:14,040 Bu, sadəcə ətraflı aşağı səviyyədə var intellektual maraqlı ola bilər. 265 00:16:14,040 --> 00:16:15,440 Mən bu geri gedirəm. 266 00:16:15,440 --> 00:16:19,810 Və əvəzinə, daha yüksək səviyyəsi, yalnız demək ki göstəricilərinə bəhs etdiyiniz zaman 267 00:16:19,810 --> 00:16:22,170 Mən yalnız daha çox cəlb etmək gidiyorum də köçürür ki, istifadəçi dostu arrow 268 00:16:22,170 --> 00:16:26,060 Eyni fikir və uzaq özet ki, faktiki nə özəllikləri 269 00:16:26,060 --> 00:16:27,700 əsas ünvanı. 270 00:16:27,700 --> 00:16:33,290 >> Biz kodu geri İndi, əgər nə biz string t varsa, keçən həftə baş vermiş 271 00:16:33,290 --> 00:16:34,510 GetString bərabərdir? 272 00:16:34,510 --> 00:16:38,630 Salam yaxşı, mən əgər növü Mən almaq üçün gidiyorum bu dəfə 273 00:16:38,630 --> 00:16:40,460 yaddaş bir yığın. 274 00:16:40,460 --> 00:16:44,820 h-e-l-l-o backslash 0. 275 00:16:44,820 --> 00:16:48,320 >> Amma GetString adlı çünki ikinci dəfə - 276 00:16:48,320 --> 00:16:51,100 və mən baxaraq bu bilirik GetString üçün mənbə kodu - hətta 277 00:16:51,100 --> 00:16:54,350 bu salam idi ki, təsadüfi baxmayaraq iki dəfə çap, GetString deyil 278 00:16:54,350 --> 00:16:55,890 optimize üçün cəhd etmək niyyətindədir və ağıllı ola bilər. 279 00:16:55,890 --> 00:16:58,550 Bu yalnız bir yığın almaq olacaq olan kompüter, gələn yaddaş 280 00:16:58,550 --> 00:16:59,640 başqa ünvanda olacaq. 281 00:16:59,640 --> 00:17:02,330 Özbaşına yalnız 456 Deyək. 282 00:17:02,330 --> 00:17:04,079 >> Və sonra nə qayıtmaq üçün gedir? 283 00:17:04,079 --> 00:17:08,030 Bu 456 qaytarmaq olacaq t bu saxlamayın. 284 00:17:08,030 --> 00:17:12,010 Bəs həqiqətən də, davam edir sol tərəfində mən bir yığın var 285 00:17:12,010 --> 00:17:14,260 yaddaş, 32 bit adətən. 286 00:17:14,260 --> 00:17:16,720 Və orada Ox456 getmək gedir. 287 00:17:16,720 --> 00:17:20,140 Ancaq yenə də, mən bu maraqlı deyiləm artıq xüsusi nömrələri. 288 00:17:20,140 --> 00:17:23,069 Mən yalnız abstractly gidiyorum ox kimi cəlb edir. 289 00:17:23,069 --> 00:17:25,202 >> Beləliklə, bu artıq yeni bir izahı yoxdur. 290 00:17:25,202 --> 00:17:28,735 Lakin bu ki, eyni dəqiq fikir Bütün bu zaman baş vermişdir. 291 00:17:28,735 --> 00:17:33,150 Və bu səbəbdən, sonra bu ilk müqayisə versiyası arabası idi 292 00:17:33,150 --> 00:17:34,480 Keçən həftə niyə? 293 00:17:34,480 --> 00:17:38,000 S-dək təşkil bərabər, əgər nə zaman Əgər həqiqətən nə t 294 00:17:38,000 --> 00:17:40,550 başlıq müqayisə altında? 295 00:17:40,550 --> 00:17:41,910 >> Siz ünvanları müqayisə edirik. 296 00:17:41,910 --> 00:17:47,950 Və yalnız daxilən, aydın, Ox123 bərabər Ox456 etmək niyyətində deyil. 297 00:17:47,950 --> 00:17:49,380 Bu ədəd, həmin bit yalnız fərqlidir. 298 00:17:49,380 --> 00:17:53,220 >> Və beləcə ardıcıl, keçən həftə bildirib siz fərqli şeylər yazın, hətta 299 00:17:53,220 --> 00:17:55,360 sözləri kelimesi kelimesine eyni idi. 300 00:17:55,360 --> 00:17:58,770 Beləliklə, biz bu düzeltmek. 301 00:17:58,770 --> 00:18:00,120 Layman nin baxımından, düzeltme nə idi? 302 00:18:00,120 --> 00:18:02,110 >> Auditoriya: bir funksiyası istifadə edin. 303 00:18:02,110 --> 00:18:02,870 >> HOPARLÖR 1: funksiyası istifadə edin. 304 00:18:02,870 --> 00:18:05,190 Və ya ulduz mütləq cəlb olunur, lakin nə bir funksiyası istifadə? 305 00:18:05,190 --> 00:18:05,962 >> Auditoriya: strings müqayisə etmək üçün. 306 00:18:05,962 --> 00:18:07,390 >> HOPARLÖR: 1 strings müqayisə etmək üçün. 307 00:18:07,390 --> 00:18:11,030 Belə ki, burada əsas problem idi Mən yalnız nəzərdən ki, 308 00:18:11,030 --> 00:18:15,870 müəyyən etmək üçün strings keyfiyyət ünvanlarını müqayisəsi. 309 00:18:15,870 --> 00:18:18,540 Və açıq-aydın ki, indi bir dəfə yalnız lal var siz neler anlamaq 310 00:18:18,540 --> 00:18:19,510 başlıq altında. 311 00:18:19,510 --> 00:18:23,270 Həqiqətən görmək üçün strings müqayisə əgər onlar ki, bir insan yol bərabər istəyirik 312 00:18:23,270 --> 00:18:26,680 iki strings bərabər hesab olardı biz onları xarakteri ilə müqayisə etmək lazımdır 313 00:18:26,680 --> 00:18:28,070 xarakter üçün xarakter. 314 00:18:28,070 --> 00:18:30,020 >> İndi həyata bilər var Bu çox maraqsız. 315 00:18:30,020 --> 00:18:32,240 Amma familiarly, biz istəyirik loop üçün istifadə edir. 316 00:18:32,240 --> 00:18:36,050 Və yalnız s bracket et t bracket i qarşı i. 317 00:18:36,050 --> 00:18:39,590 t bracket qarşı bracket i müsbət 1 i plus 1, s, daxili 318 00:18:39,590 --> 00:18:40,580 loop bir növ. 319 00:18:40,580 --> 00:18:44,950 Və hesab edirəm ki, hər iki simvol spot əgər fərqlənir, və ya ooh ki, həyata əgər, s 320 00:18:44,950 --> 00:18:48,410 t çox t daha qısa və ya daha uzun Mən dərhal, yalan deyə bilərəm 321 00:18:48,410 --> 00:18:49,390 onlar eyni deyilik. 322 00:18:49,390 --> 00:18:55,370 >> Amma s t vasitəsilə almaq və deyirlər ki, əgər eyni, eyni, eyni, eyni, eyni, son 323 00:18:55,370 --> 00:18:58,520 həm strings, deyə bilərəm Doğrudur, onlar bərabərdir. 324 00:18:58,520 --> 00:19:01,040 Yaxşı, təşəkkürlə, il əvvəl kimsə bizim üçün kodu yazıb. 325 00:19:01,040 --> 00:19:03,790 >> Və onlar StrComp çağırıb Simli müqayisə üçün. 326 00:19:03,790 --> 00:19:11,900 Və bu bir az counter var olsa belə, o halda intuitiv, StrComp 0 qaytarır 327 00:19:11,900 --> 00:19:14,520 iki strings, S və T eynidir. 328 00:19:14,520 --> 00:19:18,090 Lakin bu mənfi dəyər qaytarır əgər s və ya t əlifba əvvəl gəlmək lazımdır 329 00:19:18,090 --> 00:19:20,610 o gəlsə müsbət dəyər t əlifba sırası sonra. 330 00:19:20,610 --> 00:19:24,030 >> Siz heç bir şey düzmək istəyirəm əgər, bu StrComp faydalı olduğunu çıxır. 331 00:19:24,030 --> 00:19:26,660 Yalnız demək deyil, çünki heç bir və ya bəli, bərabər və ya deyil. 332 00:19:26,660 --> 00:19:30,440 Bu sifariş hissi verir Bir lüğət qüdrət kimi. 333 00:19:30,440 --> 00:19:33,770 StrComp Belə ki, s vergül t bərabərdir 0 vasitələri bərabərdir ki, 334 00:19:33,770 --> 00:19:35,200 strings həqiqətən bərabərdir. 335 00:19:35,200 --> 00:19:38,680 Kim bu funksiya yazdı Çünki il əvvəl ehtimalla loop üçün istifadə 336 00:19:38,680 --> 00:19:42,840 kimi və ya bir müddət loop və ya bir şey yenə simvol üzərində inteqrasiya 337 00:19:42,840 --> 00:19:45,270 və təkrar. 338 00:19:45,270 --> 00:19:47,300 >> Ancaq problem iki burada yaranmışdır. 339 00:19:47,300 --> 00:19:48,750 Bu copy0.c idi. 340 00:19:48,750 --> 00:19:51,680 Və qırmızı iki bu flawed, çünki. 341 00:19:51,680 --> 00:19:52,800 Və biz burada nə idi? 342 00:19:52,800 --> 00:19:54,310 Bəli, ilk növbədə GetString çağırıb. 343 00:19:54,310 --> 00:19:56,255 Və mən s qaytarılması dəyər saxlanılır. 344 00:19:56,255 --> 00:20:00,260 Belə ki, olduqca çox eyni var şəkil bu üst hissəsi. 345 00:20:00,260 --> 00:20:01,490 >> Bəs bundan sonra gəlir? 346 00:20:01,490 --> 00:20:04,980 Yaxşı, mənə davam və xilas edək Bu bütün dəstə edir. 347 00:20:04,980 --> 00:20:09,650 Biz biz yalnız vaxt geri olacaq İndi uyğun olan s var, 348 00:20:09,650 --> 00:20:10,940 xətti var biri. 349 00:20:10,940 --> 00:20:11,400 >> I yoxlayın. 350 00:20:11,400 --> 00:20:13,450 S-dək təşkil edin 0 bərabərdir. 351 00:20:13,450 --> 00:20:18,670 İndi tez tərəfdən qeyd zaman GetString 0 qayıtmaq bilər? 352 00:20:18,670 --> 00:20:19,580 Kifayət qədər yaddaş var deyil. 353 00:20:19,580 --> 00:20:19,880 Sağ? 354 00:20:19,880 --> 00:20:22,310 >> Ki, bu baş verəcək ki, nadir əlbəttə ki, bir kompüter haqqında 355 00:20:22,310 --> 00:20:24,740 və ya Megs yüzlərlə var RAM hətta gigs. 356 00:20:24,740 --> 00:20:27,080 Amma bu, nəzəri, qayıtmaq bilər 0, xüsusilə, əgər 357 00:20:27,080 --> 00:20:28,080 istifadəçi əməkdaşlıq etmir. 358 00:20:28,080 --> 00:20:31,640 Siz var kimi iddia yolları var inputted bir şey və oyun 359 00:20:31,640 --> 00:20:34,100 Qaytarılması daxil GetString Səmərəli 0. 360 00:20:34,100 --> 00:20:35,470 >> Belə ki kontrol olacaq. 361 00:20:35,470 --> 00:20:39,430 Əgər hər hansı başlamışdır Çünki əgər , artıq bölümleme çatışmazlıqlar almaq - 362 00:20:39,430 --> 00:20:42,280 olan yəqin ki, bir mənbə olmuşdur Bəzi məyusluq - 363 00:20:42,280 --> 00:20:46,150 o demək olar ki, həmişə nəticəsi yaddaş bağlı səhv. 364 00:20:46,150 --> 00:20:50,440 Elə bir ilə bağlı messed siz dərk etməyib hətta əgər göstərici 365 00:20:50,440 --> 00:20:51,530 bir göstərici var idi. 366 00:20:51,530 --> 00:20:55,260 Belə ki, seqmentasiya induksiya bilər istifadə edərək həftədə bir hələ çatışmazlıqlar 367 00:20:55,260 --> 00:21:02,100 loop və ya bir müddət kimi bir şey çox uzaq gedərək loop və bir sıra 368 00:21:02,100 --> 00:21:05,900 bəzi serialın sərhədləri keçmiş ki, Siz həftə iki elan 369 00:21:05,900 --> 00:21:06,690 xüsusi. 370 00:21:06,690 --> 00:21:09,220 >> Siz hətta problemi bunu bilərdi Breakout dörd seçin. 371 00:21:09,220 --> 00:21:12,910 Yəqin görməmişik baxmayaraq üçün paylama kodu hər hansı bir ulduz 372 00:21:12,910 --> 00:21:17,410 Breakout, bu çıxır ki, həmin GRect və GOval və digər bu kimi əşyalar, 373 00:21:17,410 --> 00:21:19,650 o faktiki göstəricilər var başlıq altında. 374 00:21:19,650 --> 00:21:23,430 >> Bizim kimi Ancaq Stanford, gizlədir növ ki, ətraflı ən azı kitabxanalar üçün 375 00:21:23,430 --> 00:21:26,540 məqsədləri, çox biz kimi string və char * üçün. 376 00:21:26,540 --> 00:21:30,060 Lakin GRect və GOval və bu bütün Siz uşaqlar və ya şeyi istifadə ediləcək 377 00:21:30,060 --> 00:21:32,630 Bu həftə nəticədə var yaddaş ünvanları. 378 00:21:32,630 --> 00:21:33,650 Siz yalnız bilmirəm. 379 00:21:33,650 --> 00:21:37,240 >> Belə ki, bəlkə, sonra təəccüblü deyil bəzi üzərində səyahət edə bilər ki, 380 00:21:37,240 --> 00:21:38,580 seqmentasiya çatışmazlıqlar. 381 00:21:38,580 --> 00:21:41,290 Amma indi burada maraqlı nə var biz 0 kontrol sonra əgər 382 00:21:41,290 --> 00:21:43,460 string t s olur. 383 00:21:43,460 --> 00:21:44,690 Yaxşı, mənə t bəyan edək. 384 00:21:44,690 --> 00:21:47,730 Mən bir kvadrat kimi cəlb etmək gidiyorum 32 bit, bu t deyirik. 385 00:21:47,730 --> 00:21:49,740 Və sonra mən gedirəm s olur. 386 00:21:49,740 --> 00:21:51,130 >> Yaxşı ki, nə deməkdir? 387 00:21:51,130 --> 00:21:53,280 Bəli, bu düşünmək üçün bir az çətindir haqqında müdrik şəkil. 388 00:21:53,280 --> 00:21:55,025 Lakin edək haqqında düşünmək x daxilində nə var? 389 00:21:55,025 --> 00:21:59,430 Bu dəyişən daxilində sözün nədir? 390 00:21:59,430 --> 00:22:01,500 Dəyəri Ox123. 391 00:22:01,500 --> 00:22:05,815 >> Yalnız Beləliklə, mən deyəndə string T S olur ki, sanki sayı, deməkdir 392 00:22:05,815 --> 00:22:10,070 s, bu Ox123 və bu Ox123 qoydu. 393 00:22:10,070 --> 00:22:13,740 Və ya pictorially, əgər mən cür abstrakt üz ki, ətraflı onu o 394 00:22:13,740 --> 00:22:16,600 sanki bunu təsiri Bu həmçinin. 395 00:22:16,600 --> 00:22:22,110 >> Belə ki, indi, keçən həftə geri hesab zaman biz kapitalist T. I davam 396 00:22:22,110 --> 00:22:23,800 T bracket 0 etdi. 397 00:22:23,800 --> 00:22:27,150 Bəli, bu bir T bracket 0, belə olsa pointer, onu sanki müalicə edə bilərsiniz 398 00:22:27,150 --> 00:22:29,220 bir kvadrat ilə bir sıra var bracket notation. 399 00:22:29,220 --> 00:22:31,550 >> Beləliklə, harada T bracket 0 nədir? 400 00:22:31,550 --> 00:22:32,990 Bəli, bu h var. 401 00:22:32,990 --> 00:22:36,800 Və biz kodu ki, xətt istifadə edərkən, C type.h olan iki yuxarı, 402 00:22:36,800 --> 00:22:38,460 header file ki, nerde bəyan edir. 403 00:22:38,460 --> 00:22:44,410 Bu H. hərflə Amma edirik Əlbəttə ki, ki, eyni dəqiq h var 404 00:22:44,410 --> 00:22:46,540 s daxilində, belə danışmaq. 405 00:22:46,540 --> 00:22:51,930 Və indi siz və ya dəyişib kapitallaşdırılır orijinal və həm də 406 00:22:51,930 --> 00:22:53,120 surəti deyilən. 407 00:22:53,120 --> 00:22:56,620 Siz bir surəti etmədiyini Çünki bir insan onu istəyirəm ki, yol. 408 00:22:56,620 --> 00:22:59,710 >> Belə ki, burada düzeltme, nə idi copy1.c keçən həftə? 409 00:22:59,710 --> 00:23:03,070 410 00:23:03,070 --> 00:23:05,580 Funksiyaları, belə ki, biz, həqiqətən ola bilər simli surəti. 411 00:23:05,580 --> 00:23:08,700 Və əsaslı, biz nə lazımdır simli surəti üçün nə? 412 00:23:08,700 --> 00:23:12,070 >> Yaxşı, burada bu yaşıl versiya Ben kifayət qədər aşağı səviyyədə edəcəksən. 413 00:23:12,070 --> 00:23:14,260 Funksiyaları həqiqətən var onlar bu kömək edə bilər. 414 00:23:14,260 --> 00:23:17,710 Lakin ən əsas biri və ən tanış bir, ən azı, tezliklə olacaq 415 00:23:17,710 --> 00:23:19,600 bizə tanış, aşağıdakı deyil - 416 00:23:19,600 --> 00:23:21,910 Belə ki, ilk line bir yaşıl kodu indi. 417 00:23:21,910 --> 00:23:23,970 >> Mən yalnız char * s rewrote. 418 00:23:23,970 --> 00:23:25,250 Heç bir funksional var var fərq. 419 00:23:25,250 --> 00:23:28,790 Mən yalnız CS50 kitabxana üz atdı və Mən bunu bir char * edir nə zəng alıram. 420 00:23:28,790 --> 00:23:31,640 >> İndi nöqtə, nöqtə, nöqtə, var idi, çünki deyil ki, bəzi səhv yoxlanılması 421 00:23:31,640 --> 00:23:33,200 yenə haqqında danışmaq maraqlı. 422 00:23:33,200 --> 00:23:34,710 Belə ki, indi t elan edilir. 423 00:23:34,710 --> 00:23:35,780 Bu da bir char * edir. 424 00:23:35,780 --> 00:23:38,280 Belə ki, mən bir az kvadrat çəkdi əvvəl kimi ekran. 425 00:23:38,280 --> 00:23:41,870 >> Amma sağ tərəfində, malloc, biz yaddaş ayrılması olduğunu söylədi. 426 00:23:41,870 --> 00:23:44,130 Belə ki, yaddaş bir yığın ayırırlar. 427 00:23:44,130 --> 00:23:48,830 Və biz, həqiqətən, neçə bayt etmək ayırmaq istəyirəm, görünür edir? 428 00:23:48,830 --> 00:23:50,340 >> Yaxşı, s simli uzunluğu. 429 00:23:50,340 --> 00:23:52,310 Bu salam ki var Belə ki, əgər beş olacaq. 430 00:23:52,310 --> 00:23:53,950 Biz h-e-l-l-o demək lazımdır. 431 00:23:53,950 --> 00:23:55,090 Beş bayt belə. 432 00:23:55,090 --> 00:23:57,960 >> Amma sonra 1 plus, niyə 1? 433 00:23:57,960 --> 00:23:58,830 Bu 0 xarakter. 434 00:23:58,830 --> 00:24:03,640 Biz bu adam üçün otağı tərk etməyin, biz təsadüfən bir vəziyyət yarada bilər 435 00:24:03,640 --> 00:24:05,600 simli olduğu h-e-l-L-o. 436 00:24:05,600 --> 00:24:08,470 Və sonra növbəti dəfə GetString edir adlı və mən məsələn, yazın 437 00:24:08,470 --> 00:24:14,020 David, D-a-v-i d, kompüter gedir s əslində düşünmək 438 00:24:14,020 --> 00:24:18,900 h-e-l-l-o-d-a-v-i d var, çünki Bu sözlər arasında fasilə yoxdur. 439 00:24:18,900 --> 00:24:19,810 >> Belə ki, fasilə lazımdır. 440 00:24:19,810 --> 00:24:20,720 Beləliklə, biz beş istəmirik. 441 00:24:20,720 --> 00:24:22,100 Biz altı bayt istəyirik. 442 00:24:22,100 --> 00:24:23,110 >> Və bytes deyirəm. 443 00:24:23,110 --> 00:24:25,220 Amma bu char həqiqətən vaxt ölçüsü var. 444 00:24:25,220 --> 00:24:28,040 Texniki char demək olar ki, həmişə bir byte. 445 00:24:28,040 --> 00:24:31,030 >> Amma yalnız bizim kodu portativ etmək, belə ki, üzərində işləyir, belə ki, danışmaq 446 00:24:31,030 --> 00:24:33,750 müxtəlif kompüter hətta bilər, əgər altındakı qədər fərqli ola 447 00:24:33,750 --> 00:24:36,590 başlıq, mən ümumi olaraq gidiyorum char demək ölçüsü ki, 448 00:24:36,590 --> 00:24:37,660 Mənim kodu həmişə çalışır. 449 00:24:37,660 --> 00:24:40,610 Və mən yalnız derleyeceğiz yoxdur Mən kompüter yükseltmek və ya istifadə çünki 450 00:24:40,610 --> 00:24:42,140 bir sıra müxtəlif platforma. 451 00:24:42,140 --> 00:24:45,300 >> Belə ki, I 6 dəfə ölçüsü var 1 olmaq olur bir char. 452 00:24:45,300 --> 00:24:47,440 Belə ki vasitələri malloc bilər Mənə altı bayt verir. 453 00:24:47,440 --> 00:24:49,140 Həqiqətən etdiyini nədir? 454 00:24:49,140 --> 00:24:52,810 Yaxşı, mənə burada vaxt geri roll imkan biz hekayə olduğu üçün. 455 00:24:52,810 --> 00:24:57,620 >> Burada geri Belə ki, mən bəyan etdik t adlı char *. 456 00:24:57,620 --> 00:25:00,280 İndi altı bytes üçün malloc çağırıb etdik. 457 00:25:00,280 --> 00:25:06,400 İndi isə o altı cəlb etmək gidiyorum yalnız serialın əvvəlki kimi bayt. 458 00:25:06,400 --> 00:25:10,570 Amma həqiqətən nə bilmirəm Bu serialın içərisində. 459 00:25:10,570 --> 00:25:14,640 >> Siz yaddaş ayrılması, əgər çıxır ki, bəzi var ki, etibar edə bilməz 460 00:25:14,640 --> 00:25:15,810 orada məlumdur dəyəri. 461 00:25:15,810 --> 00:25:18,400 Bu şey tərəfindən istifadə edilmiş ola bilər başqa, bəzi digər funksiyası, bəzi digər 462 00:25:18,400 --> 00:25:19,630 Əgər wrote kodu xətti. 463 00:25:19,630 --> 00:25:22,870 Beləliklə, biz ümumiyyətlə bu zibil arayacaðým dəyərlər və, bəlkə də, onlara heç-heçə 464 00:25:22,870 --> 00:25:26,170 sual işarələri, yalnız ifadə edən biz orada həqiqətən nə bilmirəm. 465 00:25:26,170 --> 00:25:30,390 Və belə uzun biz heç bir böyük var o üzerine kifayət qədər ağıllı 466 00:25:30,390 --> 00:25:34,550 zibil nömrələr dəyərlər və ya Biz qayğı ki chars. 467 00:25:34,550 --> 00:25:36,340 >> Belə ki, bu halda nə mən nə edəcəyəm? 468 00:25:36,340 --> 00:25:38,670 Yaxşı, mənim line kodu Növbəti, mən dörd var. 469 00:25:38,670 --> 00:25:41,350 i 0 almaq int, n alır s simli uzunluğu. 470 00:25:41,350 --> 00:25:42,750 Loop üçün belə bir tanış. 471 00:25:42,750 --> 00:25:45,875 Mən daha az və ya n bərabərdir olan adətən üstündür. 472 00:25:45,875 --> 00:25:47,500 >> Ancaq bu dəfə qəsdən var. 473 00:25:47,500 --> 00:25:51,890 I + +, və sonra mən sadəcə bunu t bracket i s olur. 474 00:25:51,890 --> 00:25:56,320 Mənim şəkil bu kimi görünür, çünki t saxlanılır bu an deyil 475 00:25:56,320 --> 00:25:59,530 yaddaş ki, təsadüfi yığın ünvanı kimin dəyərlər məlum deyil. 476 00:25:59,530 --> 00:26:03,030 Amma tezliklə t bracket kimi Burada məni qoyur 0. 477 00:26:03,030 --> 00:26:07,430 >> Və orada nə tərtib əldə bitir? 478 00:26:07,430 --> 00:26:08,740 Biz h qoyulması olacaq. 479 00:26:08,740 --> 00:26:11,170 Ki, s bracket 0 budur çünki. 480 00:26:11,170 --> 00:26:14,300 Və sonra eyni şey e və l, l, o. 481 00:26:14,300 --> 00:26:17,930 >> n, niyə vasitəsilə getmək idi n bərabər? 482 00:26:17,930 --> 00:26:19,200 Da 0 xarakterli idi. 483 00:26:19,200 --> 00:26:23,580 Belə ki, yalnız sonra, aydın olmaq, əgər mən həqiqətən üçün silmək nə bu zibil 484 00:26:23,580 --> 00:26:28,870 dəyərlərdir və sonra həqiqətən cəlb Mən gözləmək nə, bu s bracket 1, 2, edir 485 00:26:28,870 --> 00:26:32,440 3, 4, üstəgəl ki, arxada oldu yeni xarakter. 486 00:26:32,440 --> 00:26:36,080 >> Və indi biz dot keçmiş davam edərsə, Bu doğru versiyası nöqtə, nöqtə 487 00:26:36,080 --> 00:26:41,930 və kapitallaşdırılmış t bracket 0 edirəm ki, Əlbəttə, böyük hərflə etmək yalnız bu 488 00:26:41,930 --> 00:26:47,050 Burada oğlan, hansı konseptual, nəticədə qolu oldu. 489 00:26:47,050 --> 00:26:48,040 Belə ki, bütün göstəricisidir. 490 00:26:48,040 --> 00:26:51,430 >> Və həftə üçün onlara istifadə etdik İndi strings kontekstində. 491 00:26:51,430 --> 00:26:53,530 Amma başlıq altında onlar istəyirik bir az daha kompleks. 492 00:26:53,530 --> 00:26:57,520 Amma bu onlar haqqında düşünsəniz bədii forma onlar istəyirik ki, təklif 493 00:26:57,520 --> 00:27:01,720 Onlar yəqin ki, bütün qorxudan deyil İlk baxışdan görünə bilər, 494 00:27:01,720 --> 00:27:04,730 xüsusilə də yeni sintaksis ilə. 495 00:27:04,730 --> 00:27:07,290 Göstəricilərinə hər hansı bir sual, strings və ya chars? 496 00:27:07,290 --> 00:27:07,580 Bəli? 497 00:27:07,580 --> 00:27:09,252 >> Auditoriya: geri getmək edə bilər Bu [işitilemez] üçün? 498 00:27:09,252 --> 00:27:10,502 >> HOPARLÖR 1: Sure. 499 00:27:10,502 --> 00:27:14,058 500 00:27:14,058 --> 00:27:19,525 >> Auditoriya: Sizin son gəlmək Belə ki, necə line, bir * t xətti yoxdur 501 00:27:19,525 --> 00:27:21,513 və * s xəttində? 502 00:27:21,513 --> 00:27:23,004 Siz istinad yoxdur - 503 00:27:23,004 --> 00:27:24,640 >> HOPARLÖR 1: Ah, həqiqətən yaxşı sual. 504 00:27:24,640 --> 00:27:26,800 Neden * t və * s yoxdur? 505 00:27:26,800 --> 00:27:30,340 Çünki bizim kimi qısa, keçdiyimiz həftə funksiyası dəyişdirmək, mən ki, demək idi 506 00:27:30,340 --> 00:27:33,350 siz bir göstərici vasitəsi var Biz kimi orada getmək olan 507 00:27:33,350 --> 00:27:36,590 fiziki səhnədə, həqiqətən oldu ulduz operator istifadə edin. 508 00:27:36,590 --> 00:27:40,570 >> O çıxır ki, bu kvadrat mötərizə notation biz sintaktik arayacaðým nə 509 00:27:40,570 --> 00:27:44,190 yalnız bir sexy yolu olan şəkər, üçün, bu stenoqrafiya notation deyərək 510 00:27:44,190 --> 00:27:45,950 siz təsvir etdiyiniz dəqiq nə. 511 00:27:45,950 --> 00:27:49,385 Amma bir az daha asan var. 512 00:27:49,385 --> 00:27:53,510 Və edilməsi riski daha çox görünür bu olmalıdır çox mürəkkəb 513 00:27:53,510 --> 00:27:56,990 nə həqiqətən burada davam aşağıdakı kimidir - 514 00:27:56,990 --> 00:28:01,450 Mən deməkdir * t ki, əgər getmək ünvanı t saxlanılır. 515 00:28:01,450 --> 00:28:04,350 >> Belə ki, sanki saxlanılması t əgər ki, h ünvanı 516 00:28:04,350 --> 00:28:07,300 ilkin * t vasitələri burada gedin. 517 00:28:07,300 --> 00:28:10,730 İndi, t bracket 0 nə deməkdir? 518 00:28:10,730 --> 00:28:11,560 Eyni dəqiq şey. 519 00:28:11,560 --> 00:28:13,510 Bu, sadəcə bir az daha çox istifadəçi var yazmaq üçün dost. 520 00:28:13,510 --> 00:28:14,430 >> Amma mən hələ həyata deyiləm. 521 00:28:14,430 --> 00:28:17,800 Mən yalnız * t * s olur deyə bilmərəm. 522 00:28:17,800 --> 00:28:19,440 Çünki sonra nə olacaq? 523 00:28:19,440 --> 00:28:22,950 Mən h, h, h, f, h qoyulması olarıq bütün şey verir. 524 00:28:22,950 --> 00:28:22,995 Sağ? 525 00:28:22,995 --> 00:28:26,020 >> * T Çünki t ünvana gedin. 526 00:28:26,020 --> 00:28:27,580 Amma biz bir loop daxilində istəyirik. 527 00:28:27,580 --> 00:28:32,150 Və nə dəyər mən incrementing am Əlbəttə, hər bir iteration haqqında? 528 00:28:32,150 --> 00:28:32,690 i. 529 00:28:32,690 --> 00:28:34,590 >> Amma imkan var burada, sağ? 530 00:28:34,590 --> 00:28:37,870 Bu əldə kimi bu hiss olsa bir az daha mürəkkəb 531 00:28:37,870 --> 00:28:40,730 kvadrat-bracket notation çox Biz bir neçə dəfə istifadə etdiyiniz - 532 00:28:40,730 --> 00:28:43,840 Mənə orada mənim h dəyişiklik geri edək - 533 00:28:43,840 --> 00:28:48,870 indi bir az əldə olunur, baxmayaraq ki, meraklısı, əsas fikir, əgər * t 534 00:28:48,870 --> 00:28:53,630 burada deməkdir və * t yalnız t ünvana gedin. 535 00:28:53,630 --> 00:28:54,990 >> Amma t ünvan nə idi? 536 00:28:54,990 --> 00:28:56,850 Biz istifadə saxlamaq sayı? 537 00:28:56,850 --> 00:29:00,540 Ox456 kimi, ki, geri gətirsin yalnız müzakirə naminə. 538 00:29:00,540 --> 00:29:05,380 Yaxşı, mən də e almaq istəyirsinizsə, t simli, mən yalnız getmək istəyirəm 539 00:29:05,380 --> 00:29:06,460 mahiyyətcə, 456. 540 00:29:06,460 --> 00:29:09,230 >> Daha doğrusu, 457. 541 00:29:09,230 --> 00:29:10,590 Mən yalnız bir əlavə etmək lazımdır. 542 00:29:10,590 --> 00:29:11,790 Amma doğru, bunu edə bilər? 543 00:29:11,790 --> 00:29:14,680 T, mən rəsm saxlamaq, hətta Çünki İndi bir arrow kimi, o, yalnız bir var 544 00:29:14,680 --> 00:29:16,570 sayı, Ox456. 545 00:29:16,570 --> 00:29:21,400 Və mən bir əlavə və ya daha çox ümumiyyətlə, mən ki, mən əlavə əgər 546 00:29:21,400 --> 00:29:24,350 Mən istəyirəm tam olaraq əslində almaq. 547 00:29:24,350 --> 00:29:26,260 Beləliklə, mən həqiqətən bu əgər - 548 00:29:26,260 --> 00:29:28,970 və bu indi deyirlər nə pointer hesab - 549 00:29:28,970 --> 00:29:30,375 Mən bu xətt edə bilərsiniz. 550 00:29:30,375 --> 00:29:33,550 Səmimi, olan, mən aydın və hesab edirəm ki, oxumaq üçün bir az daha çox istifadəçi dostu. 551 00:29:33,550 --> 00:29:35,970 Amma bu heç də az düzgün deyil. 552 00:29:35,970 --> 00:29:38,570 >> Kodu Bu xətt artıq istifadə edir göstərici hesab. 553 00:29:38,570 --> 00:29:40,920 Bu getmək deyən oldu aşağıdakı ünvanı - 554 00:29:40,920 --> 00:29:44,670 t başlanğıc nə olursa olsun, hansı olan ilkin t plus i ki, 555 00:29:44,670 --> 00:29:45,730 böyük olan, 0 edir. 556 00:29:45,730 --> 00:29:49,280 Ki, t əvvəlində deməkdir, çünki plus 1, plus 2, üstəgəl 3 və s. 557 00:29:49,280 --> 00:29:51,030 S, eyni iş. 558 00:29:51,030 --> 00:29:52,750 >> Bu belə sintaktik şəkər. 559 00:29:52,750 --> 00:29:55,900 Amma anlaşma nə həqiqətən davam başlıq altında, mən iddia edirəm 560 00:29:55,900 --> 00:29:57,410 özü və əslində faydalıdır. 561 00:29:57,410 --> 00:30:00,620 Orada deyil indi deməkdir, çünki daha sehrli davam 562 00:30:00,620 --> 00:30:01,620 başlıq altında. 563 00:30:01,620 --> 00:30:03,920 Çox daha çox var niyyətində deyil sizin üçün qabığı geri edə bilər ki, qat-qat. 564 00:30:03,920 --> 00:30:04,810 Bu c edir. 565 00:30:04,810 --> 00:30:06,410 Bu proqramlaşdırma edir. 566 00:30:06,410 --> 00:30:08,002 Sual Həqiqətən yaxşı. 567 00:30:08,002 --> 00:30:11,570 >> Bütün sağ, belə ki, bu uşaq arabası idi Mən əvvəllər istinad proqramı. 568 00:30:11,570 --> 00:30:12,650 mübadilə flawed idi. 569 00:30:12,650 --> 00:30:14,070 Iş görünür Əgər. 570 00:30:14,070 --> 00:30:17,390 Yalnız süd ilə kimi və Xatırladaq ki, ki, portağal şirəsi - I başlayan 571 00:30:17,390 --> 00:30:18,660 bu günki nümayişin içməli. 572 00:30:18,660 --> 00:30:22,220 Belə ki, yalnız portağal şirəsi ilə kimi süd, biz istifadə etmək var idi 573 00:30:22,220 --> 00:30:26,200 müvəqqəti dəyişən tmp, bir keçirəcək müvəqqəti olaraq belə ki, sonra ola bilər 574 00:30:26,200 --> 00:30:28,820 b yeniləmə sonra öz dəyərini dəyişdirmək və. 575 00:30:28,820 --> 00:30:32,870 >> Amma bu funksiyanı dedik, və ya bu bu funksiya olan proqram 576 00:30:32,870 --> 00:30:35,670 yazılı səhv və flawed idi, niyə? 577 00:30:35,670 --> 00:30:38,870 578 00:30:38,870 --> 00:30:39,090 Bəli? 579 00:30:39,090 --> 00:30:42,471 >> Auditoriya: [işitilemez]. 580 00:30:42,471 --> 00:30:44,940 >> HOPARLÖR 1: Məhz, zaman Siz svop zəng - 581 00:30:44,940 --> 00:30:47,820 və ya daha çox, ümumiyyətlə, zaman ən hər hansı bir funksiya zəng - 582 00:30:47,820 --> 00:30:51,210 ki, funksiyası dəlilləri əgər ibtidai, belə danışmaq, ints və chars 583 00:30:51,210 --> 00:30:56,740 və çiftler və üzüb gedirdi, hər şeyi olmadan ulduz, siz surəti keçir 584 00:30:56,740 --> 00:30:57,540 mübahisə. 585 00:30:57,540 --> 00:31:01,580 X 1 idi və y 2 Belə ki, əgər gedir 1 olmaq və b 2 olacaq. 586 00:31:01,580 --> 00:31:05,250 Lakin onlar müxtəlif chunks olmaq olacaq bit, müxtəlif chunks ilə 587 00:31:05,250 --> 00:31:07,540 saxlanılması üçün baş yaddaş eyni dəyərlər. 588 00:31:07,540 --> 00:31:12,160 >> Bu Məcəllənin mükəmməl super A və B dəyişdirmə edir. 589 00:31:12,160 --> 00:31:13,850 Bu dəyişdirmə heç yaxşı - 590 00:31:13,850 --> 00:31:15,290 - Ötən həftə nümunə 591 00:31:15,290 --> 00:31:16,390 x və y. 592 00:31:16,390 --> 00:31:18,780 Yenidən, onlar istəyirik, çünki səhv daxilində. 593 00:31:18,780 --> 00:31:21,310 >> İndi biz bu təyinat haqqında necə getmək idi? 594 00:31:21,310 --> 00:31:23,140 Biz funksiyası etmək idi bir az uglier baxmaq. 595 00:31:23,140 --> 00:31:25,250 Ancaq yenə də, hesab edir Bu yalnız deməkdir. 596 00:31:25,250 --> 00:31:27,840 597 00:31:27,840 --> 00:31:31,500 >> Və həqiqətən, ardıcıllıq üçün, mənə bildirin bu eyni belə bir şey dəyişmək 598 00:31:31,500 --> 00:31:33,200 biz yalnız nə. 599 00:31:33,200 --> 00:31:35,690 Mən keçən həftə qeyd edildiyi kimi, deyil o gedir olsun. 600 00:31:35,690 --> 00:31:38,120 Əslində, adətən siz qoymaq olardı dəyişən adının yanında ulduzu. 601 00:31:38,120 --> 00:31:40,750 Amma bir az daha asan olacağını düşünürəm ki, yanındakı * hesab 602 00:31:40,750 --> 00:31:44,910 bu məna kimi data type bir göstərici var Bu halda bir int etmək. 603 00:31:44,910 --> 00:31:46,270 >> Mən burada nə edirəm? 604 00:31:46,270 --> 00:31:49,590 Mənə bir int vermir deyən alıram başqa int sonra, 605 00:31:49,590 --> 00:31:50,810 onlara və b çağırır. 606 00:31:50,810 --> 00:31:52,460 Mənə bir int ünvanı verin. 607 00:31:52,460 --> 00:31:53,960 Mənə bir int ünvanı verin. 608 00:31:53,960 --> 00:31:56,330 O və b müraciət edin. 609 00:31:56,330 --> 00:32:00,860 >> Və sonra * notation aşağı istifadə edərək, Aşağıdakı göstərilən ünvanlardan hər getmək 610 00:32:00,860 --> 00:32:05,290 kimi ya almaq üçün lazım və ya onun dəyərini müəyyən edir. 611 00:32:05,290 --> 00:32:07,400 Lakin burada bir istisna var. 612 00:32:07,400 --> 00:32:11,130 Niyə tmp yanında * yoxdur? 613 00:32:11,130 --> 00:32:15,070 Niyə, məsələn, bunu yoxdur? 614 00:32:15,070 --> 00:32:19,370 Mən bütün getmək lazımdır kimi hiss həyata və bütün şey düzəldirik. 615 00:32:19,370 --> 00:32:19,752 Bəli? 616 00:32:19,752 --> 00:32:21,002 >> Auditoriya: [işitilemez]. 617 00:32:21,002 --> 00:32:23,280 618 00:32:23,280 --> 00:32:25,480 >> HOPARLÖR 1: Mən elan yoxdur bir simli kimi tmp. 619 00:32:25,480 --> 00:32:28,830 620 00:32:28,830 --> 00:32:34,950 Beləliklə, bu, bu halda, elan edirik bir tmp bir int ünvanı olmalıdır. 621 00:32:34,950 --> 00:32:37,380 Amma ki, mən istəyirəm çox nə deyil səbəblərdən bir neçə. 622 00:32:37,380 --> 00:32:38,616 >> Auditoriya: Siz onları dəyişdirmək istəmirəm. 623 00:32:38,616 --> 00:32:41,800 >> HOPARLÖR 1: Məhz, mən dəyişdirmək istəmirəm tmp bir şey. tmp yalnız 624 00:32:41,800 --> 00:32:42,790 həftə bir stuff. 625 00:32:42,790 --> 00:32:45,150 Mən istəyirəm Bütün dəyişən deyil Bəzi sayı saxlamaq üçün. 626 00:32:45,150 --> 00:32:47,330 Mən hətta ünvanları haqqında qayğı yoxdur bu anda. 627 00:32:47,330 --> 00:32:50,530 >> Mən yalnız 32 bit ehtiyac və ya belə bir int saxlamaq üçün. 628 00:32:50,530 --> 00:32:56,690 Və mən bu 32 bit qoymaq istəyirəm nə, necə deyərlər, bir deyil, 629 00:32:56,690 --> 00:33:01,260 yalnız daha dəqiq desək, bir də budur. 630 00:33:01,260 --> 00:33:06,420 Bir ünvan olduqda, * Bir deməkdir, çünki orada getmək və dəyəri 1 almaq. 631 00:33:06,420 --> 00:33:10,560 Misal üçün, ötən həftə nümunə və ya b işində, 2 dəyəri almaq. 632 00:33:10,560 --> 00:33:11,750 >> Beləliklə, nə həqiqətən olub? 633 00:33:11,750 --> 00:33:15,070 Mənə olacaq ki, burada bir şəkil çəkmək edək yalnız bu gün bir hissəsi ayrı tease. 634 00:33:15,070 --> 00:33:18,580 Lakin bu görünür davam edəcək çox bir müddət. 635 00:33:18,580 --> 00:33:22,430 >> Bu, mən iddia, nə kompüter edir yaddaş bir çalıştırdığınızda kimi görünür 636 00:33:22,430 --> 00:33:24,060 proqram, hər hansı bir proqram. 637 00:33:24,060 --> 00:33:28,340 Siz çox üst bir proqram çalıştırdığınızda bilgisayarınızın RAM - belə hesab 638 00:33:28,340 --> 00:33:33,530 Sizin bu düzbucaqlı, həqiqətən, kompüter RAM və ya yaddaş, bütün 101 639 00:33:33,530 --> 00:33:36,920 bu milyard bayt, bütün iki milyard bayt, onun bütün iki gigabayt, 640 00:33:36,920 --> 00:33:39,910 Siz miqdarı nə olursa olsun, nin bir düzbucaqlı kimi cəlb edək. 641 00:33:39,910 --> 00:33:43,260 Bir proqram çalıştırdığınızda və mən iddia edir ki, Microsoft Word və ya Chrome kimi 642 00:33:43,260 --> 00:33:49,220 bu kimi və ya bir şey ki, bit Microsoft və ya Google yazdı - 643 00:33:49,220 --> 00:33:50,910 həmin proqramların hallarda - 644 00:33:50,910 --> 00:33:54,490 kompüter yaddaş instantly daha icra edə bilərsiniz 645 00:33:54,490 --> 00:33:57,520 tez və fed CPU daxil olan kompüter beyin deyil. 646 00:33:57,520 --> 00:34:00,940 >> Və TAM onlar çox da depolanmaktadır Proqram üst, belə danışmaq. 647 00:34:00,940 --> 00:34:03,300 Yəni, bu bir yığın deyil yaddaş, siz ikiqat tıkladığınızda 648 00:34:03,300 --> 00:34:05,740 Microsoft Word, bit gəlib sabit off. 649 00:34:05,740 --> 00:34:06,680 Onlar RAM instantly almaq. 650 00:34:06,680 --> 00:34:10,330 Və biz çox üst onları itələmək lazımdır konseptual bu düzbucaqlı. 651 00:34:10,330 --> 00:34:13,010 >> Bəli, yaddaş istirahət müxtəlif şeylər üçün istifadə olunur. 652 00:34:13,010 --> 00:34:16,460 Çox üst siz başlamaq bax məlumatlar uninitialize. 653 00:34:16,460 --> 00:34:20,500 Bu, çox hissəsi üçün, nə var sabitləri və ya qlobal dəyişənlər 654 00:34:20,500 --> 00:34:21,340 ki, dəyərləri var. 655 00:34:21,340 --> 00:34:22,980 O başqa vaxt, lakin daha çox. 656 00:34:22,980 --> 00:34:25,150 >> Sonra olan yığın var biz qayıda bilərsiniz. 657 00:34:25,150 --> 00:34:28,420 Amma alt olan hissəsi xüsusilə indi ilgili. 658 00:34:28,420 --> 00:34:30,210 Bu sözdə yığını var. 659 00:34:30,210 --> 00:34:33,850 Belə ki, yalnız burada ən hər hansı D zalında istəyirəm kampus, bu qablar var ki, 660 00:34:33,850 --> 00:34:37,210 yalnız olan bir-birinə üst yığın Siz ərzaq və etajer qoya bilər. 661 00:34:37,210 --> 00:34:40,139 Bir kompüter sistemi olan yığını çox oxşardır. 662 00:34:40,139 --> 00:34:42,679 Biz istifadə kimi, tray isə başqa yemək zalı, əlbəttə, nəzərdə tutulur 663 00:34:42,679 --> 00:34:45,710 şeyi qablar keçirmək və ya çərçivəsində - 664 00:34:45,710 --> 00:34:49,469 biz onlara zəng edəcəyik kimi - bir kompüter ilə yaddaş saxlamaq üçün istifadə olunur 665 00:34:49,469 --> 00:34:51,610 dəyişənlərin və dəyərlər. 666 00:34:51,610 --> 00:34:53,929 >> Beləliklə, nə həqiqətən davam edir başlıq altında? 667 00:34:53,929 --> 00:34:55,820 Bəli, mənə artıq çevirmek imkan burada ekran. 668 00:34:55,820 --> 00:34:58,370 Və gələk yalnız diqqət bir an üçün aşağı hissəsində. 669 00:34:58,370 --> 00:35:02,770 Bu mənim alt hissəsi deyil kompüter yaddaş çıxır mən 670 00:35:02,770 --> 00:35:05,350 funksiyası əsas zəng - ki, səmimi, baş 671 00:35:05,350 --> 00:35:06,950 avtomatik mənim üçün - 672 00:35:06,950 --> 00:35:10,510 Mən də yaddaş yığın almaq mənim RAM alt belə danışmaq. 673 00:35:10,510 --> 00:35:13,390 Əsas olduğu və bu yerli dəyişənlər gedin. 674 00:35:13,390 --> 00:35:16,770 Ü argc və argv bəlkə bu getmək və hər hansı bir dəyişənlər I 675 00:35:16,770 --> 00:35:18,170 əsas daxilində bəyan edir. 676 00:35:18,170 --> 00:35:20,260 Onlar altındakı son mənim kompüter RAM. 677 00:35:20,260 --> 00:35:25,040 >> İndi əsas zənglər funksiyası Güman svop kimi, bu kimi keçən həftə idi? 678 00:35:25,040 --> 00:35:30,620 Yaxşı, biz əhəmiyyətli bir yeni bir tray qoymaq yaddaş mənim yığın üzərində yeni çərçivə. 679 00:35:30,620 --> 00:35:34,160 Və bu kimi təsvir etmək gidiyorum svop funksiyası aid. 680 00:35:34,160 --> 00:35:35,770 >> İndi svop daxilində nə var? 681 00:35:35,770 --> 00:35:39,240 Yaxşı, keçən həftəki proqramı əsasında və Biz yalnız bir alıntı gördüm bir, 682 00:35:39,240 --> 00:35:46,590 svop-nin çərçivə daxilində və ya svop üzrə tray, nə dəyişənlər var? 683 00:35:46,590 --> 00:35:47,970 Bəli, bir və b. 684 00:35:47,970 --> 00:35:51,850 O, onun yerli dəlilləri idi üstəgəl üçüncü, tmp. 685 00:35:51,850 --> 00:35:54,470 Belə ki, həqiqətən, bu heç-heçə edə bilər bir az daha temiz. 686 00:35:54,470 --> 00:35:56,680 Mənə davam və etiket əvvəlki halına qaytar edək. 687 00:35:56,680 --> 00:35:58,520 Və nə ki, mənə iddia edək? 688 00:35:58,520 --> 00:36:00,560 >> bir yəqin ki, burada son gedir. 689 00:36:00,560 --> 00:36:02,160 B bura qədər gedir. 690 00:36:02,160 --> 00:36:03,810 Və tmp burada bitirmək üçün gedir. 691 00:36:03,810 --> 00:36:05,160 İndi sifariş bilər bir az fərqli ola bilər. 692 00:36:05,160 --> 00:36:06,840 Amma konseptual bu fikirdir. 693 00:36:06,840 --> 00:36:11,490 >> Və yalnız kollektiv, bu nə biz mübadilə nin çərçivəsində zəng və ya olacaq 694 00:36:11,490 --> 00:36:12,136 yeməkxana tray. 695 00:36:12,136 --> 00:36:13,150 Əsas və eyni məşğul olur. 696 00:36:13,150 --> 00:36:14,040 Amma yenidən deyil. 697 00:36:14,040 --> 00:36:17,810 Amma ki, olduğu argc və argv və hər hansı bir x və y kimi onun yerli dəyişənlərin 698 00:36:17,810 --> 00:36:18,940 eləcə də ola bilər. 699 00:36:18,940 --> 00:36:22,170 >> Belə ki, indi həqiqətən neler hesab Əgər mübadilə zəng zaman. 700 00:36:22,170 --> 00:36:26,370 Kimi svop zəng zaman, icra kodu Bu, siz də, keçən edirik 701 00:36:26,370 --> 00:36:30,670 buggy versiyası və b kimi x və y surətləri. 702 00:36:30,670 --> 00:36:34,300 Mən indi bu çəkmək yoxdur Belə ki, əgər ekranda - 703 00:36:34,300 --> 00:36:36,700 bu daha yaxşı almaq var - 704 00:36:36,700 --> 00:36:40,850 Mən özümü söyləyirdim hekayə belə bu buggy versiyası olarkən biz 705 00:36:40,850 --> 00:36:46,130 sanki və b keçən mübadilə zəng integers kimi, nə həqiqətən baş verir? 706 00:36:46,130 --> 00:36:48,250 >> Yaxşı, nə həqiqətən baş bu. 707 00:36:48,250 --> 00:36:52,850 Mənə davam və yalnız əvvəlki halına qaytar edək burada yer təmizləmək üçün. 708 00:36:52,850 --> 00:36:54,720 Belə ki, bu, mənim kompüter yaddaş. 709 00:36:54,720 --> 00:36:57,510 >> Mən əgər, misal üçün - 710 00:36:57,510 --> 00:36:58,910 həqiqətən edək ki, bu yolla nə - 711 00:36:58,910 --> 00:37:02,690 Mən bu saxlanılması, x olduğunu iddia əgər Elə ötən həftə kimi dəyəri 1. 712 00:37:02,690 --> 00:37:05,930 Bu dəyəri saxlanılması, y 2 yalnız ötən həftə istəyirəm. 713 00:37:05,930 --> 00:37:11,370 Və bu, mən svop zəng zaman əsas deyil bununla və özümü çıxış verilməsi 714 00:37:11,370 --> 00:37:15,150 b və tmp, mən iddia etmək gidiyorum Bu və bu 1-dir. 715 00:37:15,150 --> 00:37:16,080 >> Bu b edir. 716 00:37:16,080 --> 00:37:17,010 Bu 2-dir. 717 00:37:17,010 --> 00:37:18,370 Bu tmp adlanır. 718 00:37:18,370 --> 00:37:23,360 >> Və ilkin, bəzi zibil dəyəri Mən, həqiqətən, bu, bir mağaza qədər 719 00:37:23,360 --> 00:37:24,450 olan 1-dir. 720 00:37:24,450 --> 00:37:28,320 Sonra davam və dəyişdirmək ne olacaq? 721 00:37:28,320 --> 00:37:29,720 B dəyəri. 722 00:37:29,720 --> 00:37:31,980 >> Və indi mən burada iki. 723 00:37:31,980 --> 00:37:34,050 Və sonra biz b tmp alır bildirib. 724 00:37:34,050 --> 00:37:37,670 Yenə ağlı başında olma kontrol kimi, üçüncü burada kodu xətt sadəcə bu 725 00:37:37,670 --> 00:37:39,440 bir, b tmp olur. 726 00:37:39,440 --> 00:37:41,730 >> Və beləcə nəhayət, mən nə etməliyəm? 727 00:37:41,730 --> 00:37:46,800 Mən irəli getmək və b olmaq dəyişmək nə tmp dəyəri 1 olan edir. 728 00:37:46,800 --> 00:37:48,390 Mən yenə tmp toxunmayın. 729 00:37:48,390 --> 00:37:54,100 >> Amma indi problem tezliklə svop kimi yekunları, bu verilməsi deyil, çünki 730 00:37:54,100 --> 00:37:57,540 bəzi dəyəri geri geri dönüş yoxdur, var bəyanatda bu, açıq-aydın. 731 00:37:57,540 --> 00:37:59,080 Həqiqətən nə olub? 732 00:37:59,080 --> 00:38:03,480 Bəli, mahiyyətcə bütün bu yaddaş - 733 00:38:03,480 --> 00:38:07,410 OK, yəqin pozan bəyənir bir zamanda yalnız bir barmaq - 734 00:38:07,410 --> 00:38:08,180 yalnız yox. 735 00:38:08,180 --> 00:38:10,070 >> İndi əslində bu deyil yerdə gedir. 736 00:38:10,070 --> 00:38:11,810 Amma o hesab edə bilər İndi sual işarələri kimi. 737 00:38:11,810 --> 00:38:14,040 Artıq, çünki həqiqətən istifadə. 738 00:38:14,040 --> 00:38:17,470 Və heç bir şey o dəyərləri ilə aparılır. 739 00:38:17,470 --> 00:38:21,920 >> Belə ki, və yaşıl versiyası halda Bu kodu, əvəzinə nə olunur 740 00:38:21,920 --> 00:38:24,640 svop keçdi? 741 00:38:24,640 --> 00:38:25,770 Belə ki, müraciət edir. 742 00:38:25,770 --> 00:38:28,520 Belə ki, x ünvanı və y ünvanı. 743 00:38:28,520 --> 00:38:35,790 Biz elə bu hekayə son bir yenidən demək vaxtı və mən, həqiqətən, yenidən swap çəkmək 744 00:38:35,790 --> 00:38:44,620 lakin göstəricilər ilə bu, bir olan b olan və bu olan tmp, nə 745 00:38:44,620 --> 00:38:49,080 əslində bu yaşıl bir saxlanılır Mən keçən alıram mənim kodu versiyası 746 00:38:49,080 --> 00:38:52,110 ünvanlar? 747 00:38:52,110 --> 00:38:53,780 >> Bu x bir göstərici olacaq. 748 00:38:53,780 --> 00:38:54,890 Beləliklə, mən bir arrow cəlb edə bilər. 749 00:38:54,890 --> 00:38:57,310 Ancaq nin eyni özbaşına istifadə edək əvvəlki kimi nümunəsidir. 750 00:38:57,310 --> 00:39:01,220 Gəlin bu ki, Ox123 kimi bir şey. 751 00:39:01,220 --> 00:39:04,970 Bu Ox127 olacaq, çünki bu, çünki dörd bayt üz var bir 752 00:39:04,970 --> 00:39:07,370 int, belə Ox127. 753 00:39:07,370 --> 00:39:09,080 >> Və yenə, mən bir azadlıqlarının alaraq alıram nömrələri ilə. 754 00:39:09,080 --> 00:39:11,430 Onlar ki, çox kiçik istəyirik həqiqətən fərqli qaydada və. 755 00:39:11,430 --> 00:39:14,350 Amma bu necə şəkil indi fərqlidir. 756 00:39:14,350 --> 00:39:19,060 >> Amma bu yaşıl kodu istifadə edərkən və mən int tmp * almaq yoxdur. 757 00:39:19,060 --> 00:39:25,010 , Aşağıdakı nə etmək * vasitələri bir var ki, müraciət və ona getmək 758 00:39:25,010 --> 00:39:26,190 olan 1-dir. 759 00:39:26,190 --> 00:39:28,480 Və mən tmp qoymaq budur. 760 00:39:28,480 --> 00:39:32,480 Bu vaxt, kod növbəti xətti burada * a b olur ki, nə deməkdir? 761 00:39:32,480 --> 00:39:36,910 >> Yaxşı, * a, belə ki, burada getmək olur * b, orada getmək deməkdir. 762 00:39:36,910 --> 00:39:39,310 Və oraya dəyəri qoymaq deməkdir. 763 00:39:39,310 --> 00:39:43,670 Nəhayət, kod son xətt sadəcə * b tmp alır bildirib. 764 00:39:43,670 --> 00:39:48,900 >> Belə ki, b deyir getmək və onu yazmaq Bu halda, davam edən tmp 765 00:39:48,900 --> 00:39:51,520 yenə, 1 olmalıdır. 766 00:39:51,520 --> 00:39:54,920 Və bu niyə yaşıl versiyası Kod işləri, qırmızı isə 767 00:39:54,920 --> 00:39:56,010 versiyası etmədi. 768 00:39:56,010 --> 00:39:59,020 Necə aşağı ki, bütün yalnız boils yaddaş idarə və harada edir 769 00:39:59,020 --> 00:40:02,580 həqiqətən, sizin yerləşdirilib kompüter RAM. 770 00:40:02,580 --> 00:40:07,270 Və indi üçün, ki, hər biri yığını üçün istifadə olunur ki,. 771 00:40:07,270 --> 00:40:09,225 >> Susmaya haqqında suallar? 772 00:40:09,225 --> 00:40:10,380 Göstəricilərinə haqqında? 773 00:40:10,380 --> 00:40:11,630 Və ya svop haqqında? 774 00:40:11,630 --> 00:40:13,740 775 00:40:13,740 --> 00:40:17,043 >> Bütün sağ, belə malloc, geri, bu kimi bir şey idi. 776 00:40:17,043 --> 00:40:18,260 Bu super sadə nümunəsi idi. 777 00:40:18,260 --> 00:40:20,550 Və bu biri olduğunu Binky çox olsa, bizə təqdim 778 00:40:20,550 --> 00:40:21,870 tez sinif sonunda. 779 00:40:21,870 --> 00:40:24,480 Dammit, orada biz yenə getmək. 780 00:40:24,480 --> 00:40:28,780 >> Beləliklə, bu nümunə olurdu ki, Binky olsa bizə təqdim 781 00:40:28,780 --> 00:40:30,360 qədər tez sinif sonunda. 782 00:40:30,360 --> 00:40:33,640 Və burada biz həqiqətən malloc istifadə ikinci dəfə. 783 00:40:33,640 --> 00:40:37,330 İlk dəfə Çünki biz üçün istifadə kifayət qədər RAM yaratmaq, kifayət qədər RAM ayrılması 784 00:40:37,330 --> 00:40:38,340 bir simli saxlamaq üçün. 785 00:40:38,340 --> 00:40:40,250 >> Bu dəfə Binky sadə saxlanılır. 786 00:40:40,250 --> 00:40:42,465 Belə ki, yalnız saxlamaq üçün var bir int, yəqin. 787 00:40:42,465 --> 00:40:43,510 Və tamamilə gözəl deyil. 788 00:40:43,510 --> 00:40:46,560 Bu, səmimi, bir az qəribə bir int ayrılması malloc istifadə edin. 789 00:40:46,560 --> 00:40:50,650 Amma Nick claymation nöqtəsində idi həqiqətən yalnız nə hekayəsini izah 790 00:40:50,650 --> 00:40:53,830 olur və ya baş vermir siz yaddaş pis davranmak. 791 00:40:53,830 --> 00:40:56,520 >> Belə ki, bu halda, bu proqram bir neçə şey idi. 792 00:40:56,520 --> 00:41:01,580 Burada Birinci halda, o, bəyan bir göstərici bir int x çağırıb. 793 00:41:01,580 --> 00:41:04,480 Daha sonra bir göstərici elan bir int Y çağırıb. 794 00:41:04,480 --> 00:41:06,150 O, x nə mağazalarında? 795 00:41:06,150 --> 00:41:07,110 Indi başqası. 796 00:41:07,110 --> 00:41:09,685 Görə x saxlanılır olur nə Bu proqramın üçüncü xətt? 797 00:41:09,685 --> 00:41:12,380 >> Auditoriya: [işitilemez]. 798 00:41:12,380 --> 00:41:14,130 >> HOPARLÖR 1: Bəli, tamamilə bytes, hər deyirlər. 799 00:41:14,130 --> 00:41:16,760 İndi daha dəqiq olun. 800 00:41:16,760 --> 00:41:18,325 X nə geliyor? 801 00:41:18,325 --> 00:41:21,000 802 00:41:21,000 --> 00:41:22,060 Bir ünvan, mən bunu eşidəndə düşünürəm. 803 00:41:22,060 --> 00:41:23,570 >> Belə malloc nə qayıtmaq edir? 804 00:41:23,570 --> 00:41:26,030 malloc behaviorally ayırır yaddaş yığın. 805 00:41:26,030 --> 00:41:27,850 Amma necə ki, siz onu erişim verir? 806 00:41:27,850 --> 00:41:29,460 Bu nə qaytarır? 807 00:41:29,460 --> 00:41:32,000 Ilk byte yerləşdiyi ünvan yaddaş yığın edir. 808 00:41:32,000 --> 00:41:33,020 >> İndi bu super sadədir. 809 00:41:33,020 --> 00:41:35,380 Bu, sadəcə bir byte var, hansı deməkdir biz geri əldə etdiyiniz müraciət edir 810 00:41:35,380 --> 00:41:37,300 bütün şey ünvan. 811 00:41:37,300 --> 00:41:42,070 Beləliklə x saxlanılır ki, ünvanı yaddaş ki, yığın edir. 812 00:41:42,070 --> 00:41:43,400 Bu vaxt, sonra nə olacaq? 813 00:41:43,400 --> 00:41:45,890 Yəni əslində, bu davam imkan və bunu real sürətli cəlb edir. 814 00:41:45,890 --> 00:41:52,490 >> Burada ekran üzərində getmək və əgər biz bu həyata oynamaq int * x və int * y 815 00:41:52,490 --> 00:41:53,740 mənim üçün nə edəcək? 816 00:41:53,740 --> 00:41:58,280 Mən yalnız nə olacaq ki, iddia bu kimi bir şey və bu x zəng və 817 00:41:58,280 --> 00:42:00,010 Bu və bu y çağırırıq. 818 00:42:00,010 --> 00:42:03,110 Bu vaxt, kod üçüncü xətt bir int ölçüsü ayırmağa gedir, 819 00:42:03,110 --> 00:42:06,160 ola olur - dedim üzr əgər - Mən bir int nəzərdə bir əvvəl 820 00:42:06,160 --> 00:42:08,280 Tipik bir kompüter dörd bayt. 821 00:42:08,280 --> 00:42:09,720 Ki, CS50 cihaz ən azı. 822 00:42:09,720 --> 00:42:11,490 >> Beləliklə, bu ayrılması gedir ki, kim bilir? 823 00:42:11,490 --> 00:42:12,800 Somewhere buradan. 824 00:42:12,800 --> 00:42:15,780 Və bu, bəzi saxlanılır ünvan öküz, kim bilir? 825 00:42:15,780 --> 00:42:18,330 Amma nə geri almaq olacaq ki ünvan. 826 00:42:18,330 --> 00:42:22,270 Amma biz pictorially bu çəkmək lazımdır ki kimi yalnız bir arrow. 827 00:42:22,270 --> 00:42:25,430 >> İndi növbəti line * x 42 olur. 828 00:42:25,430 --> 00:42:29,400 * X layman nin baxımından nə deməkdir? 829 00:42:29,400 --> 00:42:30,040 Sadəcə getmək. 830 00:42:30,040 --> 00:42:30,960 Ki, ünvana gedin. 831 00:42:30,960 --> 00:42:35,900 Və ya başqa sözlə, aşağıda arrow və orada 42 qoydu. 832 00:42:35,900 --> 00:42:38,140 Ancaq daha sonra pis bir şey baş Binky üçün, sağ? 833 00:42:38,140 --> 00:42:43,950 >> Ki, xətt, burada beş Xatırladaq * y olur 13, həqiqətən bir şanssız sayı, 834 00:42:43,950 --> 00:42:44,760 bizim üçün nə etdi? 835 00:42:44,760 --> 00:42:47,320 Yaxşı, * y vasitələri var gedin. 836 00:42:47,320 --> 00:42:50,460 Bəli, bu verilməyib , dəyəri hələ, sağ? 837 00:42:50,460 --> 00:42:54,090 Kod y olan yoxdur şey başlatılmış. 838 00:42:54,090 --> 00:42:56,120 Biz x başlatılmış olunur ki, bir ünvanı. 839 00:42:56,120 --> 00:42:57,640 Lakin y top elan edilib. 840 00:42:57,640 --> 00:43:00,250 Lakin sonra vergül, heç bir dəyər həqiqətən qoyulub. 841 00:43:00,250 --> 00:43:02,330 Belə ki, bu zəng etmək üçün ədalətli nin bir zibil dəyər. 842 00:43:02,330 --> 00:43:03,430 Kim nə bilir? 843 00:43:03,430 --> 00:43:07,160 Bu istifadə olunmuşdur ki, bit qalıqları var kod bəzi əvvəlki xətti ilə 844 00:43:07,160 --> 00:43:08,300 mənim proqramı. 845 00:43:08,300 --> 00:43:13,250 >> Mən getmək demək əgər, bu kimi Mən bu arrow olduğu heç bir fikrim yoxdur 846 00:43:13,250 --> 00:43:14,490 sonuna qədər gedir. 847 00:43:14,490 --> 00:43:17,720 Zaman adətən ki, var bir seqmentasiya günah almaq. 848 00:43:17,720 --> 00:43:22,430 Yanlışlıkla dereference varsa, üçün danışmaq, və ya deyil ki, bir ünvana getmək 849 00:43:22,430 --> 00:43:25,400 əslində bir qanuni ünvanı, pis şeylər baş verir. 850 00:43:25,400 --> 00:43:27,550 >> Və nə oldu dəqiq Binky düşünürük. 851 00:43:27,550 --> 00:43:31,060 Belə ki, Xatırladaq ki, Nick idi ki, hekayə burada izah eyni ideyası idi nə kimi 852 00:43:31,060 --> 00:43:34,050 Mən illüziya ilə tərtib etdik orada şurası təbaşir. 853 00:43:34,050 --> 00:43:35,960 X və Y elan olunur. 854 00:43:35,960 --> 00:43:39,690 >> Sonra həcmi ayrılan bir int və x onu saxlanılır. 855 00:43:39,690 --> 00:43:42,130 Sonra Biz növbəti line * x. 856 00:43:42,130 --> 00:43:46,070 Bu Nick sehrli çubuq olmuşdur dereferencing edir. 857 00:43:46,070 --> 00:43:49,780 Bu yaddaş 42 qoymaq x ilə işarə etdi. 858 00:43:49,780 --> 00:43:51,600 >> Amma bu olduğu şeylər horribly yanlış getdi. 859 00:43:51,600 --> 00:43:51,820 Sağ? 860 00:43:51,820 --> 00:43:53,550 Biz dereference y çalışdı. 861 00:43:53,550 --> 00:43:55,620 Lakin y sağ, bəzi saxta dəyər idi? 862 00:43:55,620 --> 00:43:57,720 >> Alt sol ki, arrow künc deyil 863 00:43:57,720 --> 00:43:58,950 həqiqətən bir şey işarə. 864 00:43:58,950 --> 00:44:01,520 Bu nə mən bunu növü var şurası burada idi. 865 00:44:01,520 --> 00:44:05,900 Belə ki, pis şeylər baş verir, seqmentasiya Bu halda günah, və ya Binky günah. 866 00:44:05,900 --> 00:44:10,800 >> Amma biz sonra x etməklə düzeltmek əgər y alır necə hekayə dəyişiklik edir? 867 00:44:10,800 --> 00:44:15,760 Yaxşı, mən x əgər ki, y, olur deyən kimi səmərəli eyni 868 00:44:15,760 --> 00:44:19,235 Bu nə olursa olsun, öküz-bir şey , burada eyni olacaq 869 00:44:19,235 --> 00:44:20,080 Öküz-bir şey. 870 00:44:20,080 --> 00:44:22,970 Və ya pictorially biz arrow çəkmək lazımdır. 871 00:44:22,970 --> 00:44:25,530 >> Belə ki, burada Binky ilə board üzrə nin növbəti xətti ilə 872 00:44:25,530 --> 00:44:28,350 kodu, * y getmək deməkdir. 873 00:44:28,350 --> 00:44:29,400 Var haradadır? 874 00:44:29,400 --> 00:44:30,820 Burada artıq deməkdir. 875 00:44:30,820 --> 00:44:36,050 >> Və biz 13 olması yeniləmə zaman yalnız gedir və əhatə 876 00:44:36,050 --> 00:44:39,470 indi burada 13 yazı. 877 00:44:39,470 --> 00:44:44,130 Belə ki, bəlkə tamamilə İlk baxışdan sadə. 878 00:44:44,130 --> 00:44:47,740 Amma Recap və eyni jargon istifadə ki Binky belə ki, burada istifadə edirdi 879 00:44:47,740 --> 00:44:50,485 İlk iki, göstəricilərinə ayrılması x və y deyil, pointees. 880 00:44:50,485 --> 00:44:54,750 Və pointees bir deyil ümumiyyətlə təbiri istifadə. 881 00:44:54,750 --> 00:44:56,120 Amma göstərici tamamilə. 882 00:44:56,120 --> 00:44:59,200 Amma bu, qeyd edib ki, nə var Binky nin nomenklaturasında edir. 883 00:44:59,200 --> 00:45:01,660 >> Əlbəttə bu növbəti xətti, bir int pointee ayırır. 884 00:45:01,660 --> 00:45:04,840 Belə ki, yaddaş yığın - I üzərində çəkdi sağ orada yan - və dəsti 885 00:45:04,840 --> 00:45:06,470 x bərabər onu qeyd etmək. 886 00:45:06,470 --> 00:45:11,350 Bu dereferences x 42 saxlamaq üçün ona işarə olan yaddaş. 887 00:45:11,350 --> 00:45:13,380 Və bu, əlbəttə ki, pis bir şey idi. 888 00:45:13,380 --> 00:45:15,600 Y işarə deyil, çünki hələ bir şey. 889 00:45:15,600 --> 00:45:16,530 Bu giderir. 890 00:45:16,530 --> 00:45:18,240 Belə ki, bu hələ arabası proqramdır. 891 00:45:18,240 --> 00:45:21,580 Biz vasitəsilə əsən edirik Məhz xətti və deyərək code line, yaxşı oh, 892 00:45:21,580 --> 00:45:22,690 orada qəza bildirin. 893 00:45:22,690 --> 00:45:23,420 Bu pis bir şey var. 894 00:45:23,420 --> 00:45:26,790 Oran proqram yalnız olacaq var ki, xətti cəmi Abort. 895 00:45:26,790 --> 00:45:30,550 Siz aradan qaldırılması üçün, əgər Amma qəzaya uğrayıb son iki ilə girdi və əvəz 896 00:45:30,550 --> 00:45:32,470 siz təyin orada xətləri - 897 00:45:32,470 --> 00:45:35,310 pointer təyin istifadə - y nöqtəsi t kimi x qeyd etmək. 898 00:45:35,310 --> 00:45:39,280 Və sonra dereference çox etibarlı bir şəkildə y. 899 00:45:39,280 --> 00:45:41,520 >> Belə ki, bu bizi tərk edir? 900 00:45:41,520 --> 00:45:45,350 Yaxşı, başlıq altında çıxır ki, ki, CS50 kitabxana, göstəricilər var 901 00:45:45,350 --> 00:45:46,320 ərzində istifadə olunur. 902 00:45:46,320 --> 00:45:48,910 Və biz həqiqətən soymaq başlarsınız uzun əvvəl geri ki, qatı. 903 00:45:48,910 --> 00:45:51,740 Lakin bu, çox olduğunu ifadə edən çevrilir Əgər bəziləri ilə tanış ola bilər 904 00:45:51,740 --> 00:45:54,580 xüsusilə daha rahat bir çox məşhur ki, əslində 905 00:45:54,580 --> 00:45:56,390 veb və ya yığını daşqın, bu gün. 906 00:45:56,390 --> 00:45:58,720 >> Lakin bu həqiqətən çox var texniki mənası. 907 00:45:58,720 --> 00:46:00,160 Biz indi bir yığın olduğunu bilirik. 908 00:46:00,160 --> 00:46:02,550 Bu qablar bir yığın kimi yemekhane daxilində. 909 00:46:02,550 --> 00:46:05,140 >> Və ya daxili kompüter və yaddaş o çərçivəsində öz 910 00:46:05,140 --> 00:46:06,900 funksiyaları istifadə edir. 911 00:46:06,900 --> 00:46:10,760 Bəli, bu çıxır ki, çünki çox sadə həyata keçirilməsi 912 00:46:10,760 --> 00:46:14,970 yaddaş və qondarma çərçivəsində yığın, həqiqətən, nəzarət edə bilər 913 00:46:14,970 --> 00:46:17,050 olduqca asan bir kompüter sistemi. 914 00:46:17,050 --> 00:46:22,180 Siz sistemə hack edə bilər, əgər insanlar bizim kodu yazılı deyil kimi 915 00:46:22,180 --> 00:46:23,300 xüsusilə yaxşı. 916 00:46:23,300 --> 00:46:26,670 >> Bizim kimi insanlar chunks istifadə edin yaddaşında və ya istifadə serialları - 917 00:46:26,670 --> 00:46:27,810 daha çox - 918 00:46:27,810 --> 00:46:31,800 amma bəzən kontrol unutmayın bizim serialın sərhədləri siz güc kimi 919 00:46:31,800 --> 00:46:38,470 özünüzü bəzən var və iterated çox uzaq sonunda bir sıra keçmiş yol. 920 00:46:38,470 --> 00:46:40,520 Ən yaxşı halda, sizin proqram yalnız qəza bilər. 921 00:46:40,520 --> 00:46:42,280 Seqmentasiya günah, mehriban utanc verici idi. 922 00:46:42,280 --> 00:46:45,480 Böyük, lakin mütləq deyil bir natarazcasına pis bir şey. 923 00:46:45,480 --> 00:46:49,480 >> Lakin proqram real üzrə faktiki əgər istifadəçilərin kompüter, o çalışan əgər 924 00:46:49,480 --> 00:46:53,070 bir web ki, faktiki təsadüfi insanlar internet bildirerek, vuruş olunur 925 00:46:53,070 --> 00:46:56,690 insanların kodunu pis şeylər vadar edir Çünki ümumiyyətlə yaxşı bir şey 926 00:46:56,690 --> 00:46:59,930 etmək üçün imkanı deməkdir kompüter nəzarət. 927 00:46:59,930 --> 00:47:01,350 Bu baxmaq gedir sirli bir az. 928 00:47:01,350 --> 00:47:04,570 Amma mən sizinlə qorxutmaq istədiyiniz fikir burada bu son nümunəsidir. 929 00:47:04,570 --> 00:47:05,650 >> Burada kodu nümunə var. 930 00:47:05,650 --> 00:47:07,370 Və yaxşı Wikipedia var dolaşır ki, məqalə 931 00:47:07,370 --> 00:47:08,530 daha ətraflı. 932 00:47:08,530 --> 00:47:13,890 Mən aşağı çağırış üzrə əsas var 1 argv keçən foo. 933 00:47:13,890 --> 00:47:15,750 Və yalnız belə siz var proqram run və keçmək 934 00:47:15,750 --> 00:47:17,080 bir ixtiyari girdi. 935 00:47:17,080 --> 00:47:20,180 >> Və sonra foo top elan bir simli qəbul və ya daha çox kimi 936 00:47:20,180 --> 00:47:21,700 dəqiq bir char *. 937 00:47:21,700 --> 00:47:23,860 O chars bir sıra bəyan edir. 938 00:47:23,860 --> 00:47:27,130 Bir bufer, ümumiyyətlə, Zəng ölçüsü 12. 939 00:47:27,130 --> 00:47:30,900 Belə ki, 12 chars içərisində yararlı ola bilər c adlı serialın. 940 00:47:30,900 --> 00:47:33,510 >> Və o, bu yeni funksiya istifadə yeni, lakin çətin deyil 941 00:47:33,510 --> 00:47:34,930 , yaddaş surəti başa düşürük. 942 00:47:34,930 --> 00:47:39,290 Bu idi, bar yaddaş nüsxə dəyişən keçmiş n, nə 943 00:47:39,290 --> 00:47:42,080 istifadəçi c daxil argv 1 yazdığınız. 944 00:47:42,080 --> 00:47:43,090 Neçə bayt? 945 00:47:43,090 --> 00:47:44,260 Bar simli uzunluğu. 946 00:47:44,260 --> 00:47:48,380 >> Belə ki, başqa sözlə, istifadəçi növ əgər h-e-l-l-o daxil simli uzunluğu 947 00:47:48,380 --> 00:47:49,260 salam beş edir. 948 00:47:49,260 --> 00:47:52,790 Belə ki, həmin bayt beş almaq üçün gedir c adlı dizi, kopyalanacak olan 949 00:47:52,790 --> 00:47:54,110 size 12 edir. 950 00:47:54,110 --> 00:47:58,710 Çox uzun Amma nə istifadəçi 13 simvol və ya 14 ki, söz 951 00:47:58,710 --> 00:48:01,250 simvol və ya 100 simvol və ya daha çox? 952 00:48:01,250 --> 00:48:02,660 >> Onlar harada getmək gedir? 953 00:48:02,660 --> 00:48:06,090 Yaxşı ki, çərçivə ki, tray yemək zalı yığını, 954 00:48:06,090 --> 00:48:06,930 orada getmək olacaq. 955 00:48:06,930 --> 00:48:10,080 Və yalnız yadda başlamaq olacaq artıq ki, digər məhsulları 956 00:48:10,080 --> 00:48:12,880 ki yığını haqqında, coşğun yığını, belə danışmaq. 957 00:48:12,880 --> 00:48:14,780 >> Belə pictorially ki, bu cür düşünürəm. 958 00:48:14,780 --> 00:48:17,970 Bu yalnız bir rəngli versiyası şəkil biz rəsm etdik. 959 00:48:17,970 --> 00:48:20,060 Altında, əsas deyil, deyək. 960 00:48:20,060 --> 00:48:24,690 Və üst, indi nə gördükdə çərçivəsində rəng üçün indi kodlanır 961 00:48:24,690 --> 00:48:26,090 foo adlı fəaliyyət göstərir. 962 00:48:26,090 --> 00:48:30,170 Amma burada maraqlı nə var foo burada onun çərçivəsində olmasıdır. 963 00:48:30,170 --> 00:48:32,860 Belə ki, yalnız mən kimi tərtib edir lakin mavi etdi. 964 00:48:32,860 --> 00:48:35,220 Və indi bu olduğu c bracket 0 gedir. 965 00:48:35,220 --> 00:48:37,410 Bu c bracket burada 11 qədər gedir. 966 00:48:37,410 --> 00:48:39,670 >> Başqa sözlə, bu, olur bir kvadrat kimi təmsil ediləcək. 967 00:48:39,670 --> 00:48:42,320 Amma yalnız bytes plopping saxlamaq əgər aşağı - və ya chars - onlar son olacaq 968 00:48:42,320 --> 00:48:46,070 up yerdə 0 bütün yol 11 Çünki dizine 0 oldu. 969 00:48:46,070 --> 00:48:49,170 >> Lakin 13-cü karakter burada sonuna qədər gedir? 970 00:48:49,170 --> 00:48:50,310 14-cü harada? 971 00:48:50,310 --> 00:48:52,430 50 xarakter harada sonuna qədər gedir? 972 00:48:52,430 --> 00:48:54,070 >> Bu aşağı davam edəcək. 973 00:48:54,070 --> 00:48:57,350 Biz tərtib etdik, hətta Çünki yığını ilə şəkil qədər artan 974 00:48:57,350 --> 00:48:59,920 ünvanları, o çıxır, getmək kiçik ünvanlarını, kiçik 975 00:48:59,920 --> 00:49:01,830 böyük URL göstəricilərinə. 976 00:49:01,830 --> 00:49:03,540 Belə ki, yalnız qədər davam və saxlayır. 977 00:49:03,540 --> 00:49:05,660 >> Belə ki, əgər istifadəçi növləri salam ki, böyük deyil. 978 00:49:05,660 --> 00:49:08,650 No bug problem yoxdur, hər kəsin təhlükəsiz. 979 00:49:08,650 --> 00:49:11,940 Amma biz biləcəkləriniz istifadəçi növ əgər çəkişmə kodu zəng, təmsil 980 00:49:11,940 --> 00:49:16,040 ümumi olaraq bir hücum, hücum, hücum, hücum, nə ola bilər? 981 00:49:16,040 --> 00:49:19,760 >> Yaxşı, əgər girdi bütün istifadəçi Yığdığınız yalnız bir dost deyil 982 00:49:19,760 --> 00:49:21,540 simvol və ya təhqiredici simli. 983 00:49:21,540 --> 00:49:24,050 Bu, həqiqətən, simvol bir ardıcıllıqla var ki, siz onu tərtib varsa, 984 00:49:24,050 --> 00:49:26,050 faktiki kodudur. 985 00:49:26,050 --> 00:49:29,570 Bəlkə kodu ki siler bütün sabit sürücü faylları və ya spam göndərir 986 00:49:29,570 --> 00:49:30,810 kimi və ya bir şey. 987 00:49:30,810 --> 00:49:35,110 Əsas burada nə var Qeyd edək ki, ki, pis adam üçün kifayət qədər uğurlu var əgər 988 00:49:35,110 --> 00:49:37,830 yaddaş qırmızı yığın üzerine - 989 00:49:37,830 --> 00:49:41,080 Mən yalnız mənim şəkil cəlb etməyən burada Wikipedia şəkil var - 990 00:49:41,080 --> 00:49:42,890 onun qondarma qaytarılması ünvanı. 991 00:49:42,890 --> 00:49:47,470 >> Zaman ərzaq yekunları, svop qayıtdıqda necə kompüter getmək bilmir 992 00:49:47,470 --> 00:49:49,790 up burada aşağı? 993 00:49:49,790 --> 00:49:52,920 Və ya yuxarıda tech seqmentində, necə bu mübadilə getmək bilmir 994 00:49:52,920 --> 00:49:54,870 kodu - 0 və 1-in ki, svop bəstələmək - 995 00:49:54,870 --> 00:49:56,020 geri əsas üçün? 996 00:49:56,020 --> 00:50:00,450 Bir qondarma return address var Eyni yığını çərçivəsində saxlanılır 997 00:50:00,450 --> 00:50:02,140 Eyni yemekhane tray. 998 00:50:02,140 --> 00:50:06,080 >> Pis adam üçün kifayət qədər ağıllı deyil Belə ki, əgər hücum kodu qoymaq hücum kodu hücum 999 00:50:06,080 --> 00:50:07,960 kodunu, və kifayət qədər uğurlu almaq - 1000 00:50:07,960 --> 00:50:11,630 üçün - tez-tez yanılma yolu ilə ki, qırmızı return address yazmaq 1001 00:50:11,630 --> 00:50:14,360 ünvan və bildiriş çox üst. 1002 00:50:14,360 --> 00:50:16,830 0835C080 bilərsiniz. 1003 00:50:16,830 --> 00:50:20,650 Bu, geri qədər üst yazılı səbəbləri bəlkə yenidən olacaq. 1004 00:50:20,650 --> 00:50:22,050 Bu sayı dir. 1005 00:50:22,050 --> 00:50:25,790 >> Pis adam kifayət qədər uğurlu, yaxud olur Belə ki, əgər qırmızı üzerine kifayət qədər ağıllı deyil 1006 00:50:25,790 --> 00:50:29,480 və ünvanı yaddaş soyunmaq o elə-belə ki, kodu 1007 00:50:29,480 --> 00:50:34,980 Sizin kompüter enjekte olan tahmin kod geri olacaq 1008 00:50:34,980 --> 00:50:38,260 kimi tezliklə foo kimi icra edilir? 1009 00:50:38,260 --> 00:50:39,440 >> Pis oğlan kodu. 1010 00:50:39,440 --> 00:50:43,610 Bu hücumu kodu Belə ki, AAA, yenə güc spam göndərmək, bütün faylları silmək bilər 1011 00:50:43,610 --> 00:50:44,500 sabit. 1012 00:50:44,500 --> 00:50:48,740 Amma bu nə həqiqətən bir yığın daşqın edir və ya tampon dağıtmaq və ya 1013 00:50:48,740 --> 00:50:51,060 daşqın hücum bufer. 1014 00:50:51,060 --> 00:50:54,400 >> Və o inanılmaz, inanılmaz yaygın yazılı proqramları ilə bu gün 1015 00:50:54,400 --> 00:50:58,220 C, C + +, və hətta bəzi digər dillərdə. 1016 00:50:58,220 --> 00:51:02,275 Ki, scary qeyd On, biz edəcəyik bir lətifə ilə başa. 1017 00:51:02,275 --> 00:51:03,230 >> [Gülüş] 1018 00:51:03,230 --> 00:51:04,550 >> Çərşənbə günü görürsünüz. 1019 00:51:04,550 --> 00:51:07,920 1020 00:51:07,920 --> 00:51:10,310 Növbəti CS50 hazırda - 1021 00:51:10,310 --> 00:51:15,920 Beləliklə, mən bu gün disk əleyhinə işıqlar bütün Ben, lakin Gözləyin, yağ-pulsuz süd, yarım telefon 1022 00:51:15,920 --> 00:51:17,850 kitab, portağal şirəsi Mən bu gün içdi ki,. 1023 00:51:17,850 --> 00:51:20,370 1024 00:51:20,370 --> 00:51:22,780 USB kabel, bir açarı. 1025 00:51:22,780 --> 00:51:24,800 >> [Musiqi ifa]