1 00:00:00,000 --> 00:00:02,310 [Powered by Google Translate] [Həftə 4, davamı] 2 00:00:02,310 --> 00:00:04,240 [David J. Malan - Harvard Universiteti] 3 00:00:04,240 --> 00:00:07,290 [Bu CS50 edir. - CS50.TV] 4 00:00:07,290 --> 00:00:11,290 >> Bu CS50, bu həftə 4 sonu. 5 00:00:11,290 --> 00:00:14,030 Yaxşı xəbərlər və bəzi pis xəbər belə. 6 00:00:14,030 --> 00:00:26,240 Bazar ertəsi No mühazirə, heç bir problem gələn həftə müəyyən edilmişdir. [Tələbələri təzahürat] 7 00:00:26,240 --> 00:00:28,680 Bu hara getdiyini kimi fikrində deyilik. 8 00:00:28,680 --> 00:00:31,590 Amma sonrakı çərşənbə əvəzinə bu var, 9 00:00:31,590 --> 00:00:37,740 və növbəti cümə biz yolda qalmaq bilər ki, tədris proqramı 1 Cümə mühazirə başına da var. 10 00:00:37,740 --> 00:00:40,580 Lakin hər şey həmişə olduğu kimi çəkiləcək, buna görə narahat deyil. 11 00:00:40,580 --> 00:00:44,100 >> Və əlaqədar biz həftənin sonuna edəcəyik nə 0 viktorina üçün 12 00:00:44,100 --> 00:00:47,140 Kursun ana cs50.net izahı haqqında yazmaq edilir 13 00:00:47,140 --> 00:00:50,160 Birinci viktorina gəldiyi zaman olmalıdır gözləntiləri hansı. 14 00:00:50,160 --> 00:00:55,100 Ümumiyyətlə, bir neçə seçim, doğru-yanlış, qısa cavab, qısa kodlaşdırma problemlər olacaq. 15 00:00:55,100 --> 00:00:57,360 Siz ekvivalent həyata keçirilməsi gözlənilir fikrində deyilik 16 00:00:57,360 --> 00:01:00,030 Bir pset baxın ki, bir problem, olan bir kompüter var 17 00:01:00,030 --> 00:01:03,240 və ayıklama və kimi, ancaq kiçik kodlaşdırma problemlər olacaq. 18 00:01:03,240 --> 00:01:06,900 >> And olsun ki, CS50 viktorina nə hissi almaq üçün ən yaxşı bələdçi kimi 19 00:01:06,900 --> 00:01:09,180 cs50.net getmək edir ki, Sınavlar link getmək 20 00:01:09,180 --> 00:01:11,920 və sınavlar dəyərində Son bir neçə il görürük. 21 00:01:11,920 --> 00:01:16,600 Just tədris həmişə il ərzində eyni deyil bilirik. 22 00:01:16,600 --> 00:01:18,510 Bəzən biz, bəzən çıxmaq əlavə 23 00:01:18,510 --> 00:01:20,670 bu köhnə viktorina biri bəzi mövzu görmək əgər 24 00:01:20,670 --> 00:01:25,380 Bu barədə söhbət nə heç bir fikrim yoxdur ki, biz onu əhatə ki, ya var 25 00:01:25,380 --> 00:01:27,210 və ya biz əhatə etməyib. 26 00:01:27,210 --> 00:01:31,110 Lakin nəzərdən forması, bu bazar, bazar ertəsi və çərşənbə axşamı 27 00:01:31,110 --> 00:01:34,770 həmçinin bazar gecə bir kurs geniş baxış iclası kimi - 28 00:01:34,770 --> 00:01:37,500 Kursun ana açıqlanacaq vaxtı və yeri - 29 00:01:37,500 --> 00:01:40,120 bütün kurs tədris yoldaşları ilə nəzərdən imkanı 30 00:01:40,120 --> 00:01:44,830 hissəsində və tam sinif, həm də bu il üçün material, 31 00:01:44,830 --> 00:01:48,400 və bu həmçinin adi kimi lentə ediləcəkdir. 32 00:01:48,400 --> 00:01:53,380 >> Bütün hüquqlar. Belə ki, daha ADO olmadan, pass bir comment / uğursuz və buraxın / əlavə edin. 33 00:01:53,380 --> 00:01:57,980 Siz keçən gecə mənim qeyd görmüşəm bilər və bu, həqiqətən, yalnız bir əlavə əmin deyil 34 00:01:57,980 --> 00:02:01,250 ki, xüsusən az rahat və ya bir yerdə arasında arasında əgər 35 00:02:01,250 --> 00:02:04,870 və siz, baş üzərində yalnız bir az hiss edirik 36 00:02:04,870 --> 00:02:08,430 həqiqətən olduqca normal olduğunu dərk və yerdə geniş dəstək strukturu var, 37 00:02:08,430 --> 00:02:13,530 ofis saat mənim e-poçt son gece bütün daha yaxşılaşdırılması niyyəti olan biri, 38 00:02:13,530 --> 00:02:16,520 və pass kimi bir seçim / bu kimi bir sinif üçün uğursuz ki, çox həyata 39 00:02:16,520 --> 00:02:21,540 həqiqətən bu kimi əlbəttə kənarında çıxarmaq üçün bir mexanizm kimi nəzərdə tutulur, 40 00:02:21,540 --> 00:02:24,200 Belə ki, bu 10, 15, 20 saat sərf etdiyiniz yenidən əgər 41 00:02:24,200 --> 00:02:28,160 yalnız işləmək üçün bəzi pset almaq üçün çalışır və siz orada yolu 90-95% olduğunu biliyorum 42 00:02:28,160 --> 00:02:32,100 ancaq bir pass bəzi lənətləmək səhv tapmaq / növ tamam olan model uğursuz bilməz. 43 00:02:32,100 --> 00:02:36,230 >> Bu fikri mexanizmi ilə siz sonra digər psets diqqət getmək bilər 44 00:02:36,230 --> 00:02:39,530 və ya yatmaq və ya bu diqqət etmək istəyirəm ki, nə. 45 00:02:39,530 --> 00:02:43,390 Belə ki, bu gələn axşamı qədər var ki, həyata - texniki 5 Bazar ertəsi, 46 00:02:43,390 --> 00:02:50,840 lakin belə, bu, gələn çərşənbə axşamı bir bayram var - pass keçid / pilləli və ya əksinə uğursuz. 47 00:02:50,840 --> 00:02:54,450 Və siz sıldırım, həqiqətən istəyirik və ümumiyyətlə düşmə düşünür əgər, 48 00:02:54,450 --> 00:02:56,440 mühazirə sonra məni tutmaq və ya mənə bir qeyd düşmək edin. 49 00:02:56,440 --> 00:02:59,990 Siz Əlvida teklif əvvəl ən azı chat sevindim. 50 00:02:59,990 --> 00:03:03,470 Bütün hüquqlar. Belə ki, ötən vaxt off təlim təkərlər alaraq başladı. 51 00:03:03,470 --> 00:03:06,030 Xüsusilə, biz simli yönəlmişdir. 52 00:03:06,030 --> 00:03:09,740 String ki, CS50 kitabxana elan ki, bir şey 53 00:03:09,740 --> 00:03:14,340 xüsusi cs50.h adlı fayl biz bu həftə və gələcək baxmaq başlamaq bilərsiniz. 54 00:03:14,340 --> 00:03:17,250 Amma string həqiqətən bir şey yalnız bir asan olur 55 00:03:17,250 --> 00:03:20,980 bir az daha arcanely char * kimi təsvir edir. 56 00:03:20,980 --> 00:03:24,090 Biz tanış edirik karakter. Bu yalnız bir xarakter var. 57 00:03:24,090 --> 00:03:28,010 Amma Bazar ertəsi kimi * nə qeydi? >> [Tələbə] A pointer. 58 00:03:28,010 --> 00:03:31,290 A pointer. Və bir göstərici var? >> [Tələbə] bir ünvan. 59 00:03:31,290 --> 00:03:33,420 >> Bu ünvan, yaddaşlı bir yer kimi. 60 00:03:33,420 --> 00:03:35,910 Bir ünvanı və ya yeri və ya yaddaş nədir? 61 00:03:35,910 --> 00:03:40,290 Yenə hamımız bu gün çox güman ki, bir konsert və ya RAM 2 gigabaytlık ilə noutbuk var 62 00:03:40,290 --> 00:03:44,160 və yaddaş dəyərində bir milyard və ya 2 milyard bytes var deməkdir. 63 00:03:44,160 --> 00:03:46,240 Və həqiqətən, o, fiziki cəhətdən kimi görünür nə etməz 64 00:03:46,240 --> 00:03:51,220 lakin öz laptop ki, fərdi bayt bütün SAYI bilər ki, iman etmək - 65 00:03:51,220 --> 00:03:54,580 bu 0 byte, bu byte 1, bu 2 milyard bayt edir - 66 00:03:54,580 --> 00:03:56,100 və dəqiq bir kompüter nə var. 67 00:03:56,100 --> 00:04:00,030 Bir xarakter üçün yerin ayrılması zaman, məsələn, 68 00:04:00,030 --> 00:04:02,480 o açıq-aydın, kompüter yaddaşında bir yerdə yaşamaq var 69 00:04:02,480 --> 00:04:05,860 və bəlkə, 12345 byte sayı var 70 00:04:05,860 --> 00:04:08,470 və kompüter yaddaş qədər burada bir yerdə var. 71 00:04:08,470 --> 00:04:12,630 Və xarakterli sonra ünvan 12345. 72 00:04:12,630 --> 00:04:16,140 >> İndi, indi vasitəsilə indiyədək həftə 0, biz, həqiqətən qayğı deyil 73 00:04:16,140 --> 00:04:19,170 biz adətən simvol istifadə çünki yerləşir yaddaş şeyi, saxlanılır 74 00:04:19,170 --> 00:04:22,540 dəyişənlər və Diziler həqiqətən bizim data əldə etmək. 75 00:04:22,540 --> 00:04:24,950 Amma ertəsi və bütün daha çox gün kimi, indi olacaq 76 00:04:24,950 --> 00:04:27,710 yazılı proqramları ilə bütün daha ifadəli imkanları 77 00:04:27,710 --> 00:04:31,330 həqiqətən ancaq uyğun bax kompüter yaddaş manipulyasiya, 78 00:04:31,330 --> 00:04:33,720 yaxşı məqsədləri və pis üçün, 79 00:04:33,720 --> 00:04:39,620 bugs bu stuff öyrənmək bu nöqtədə bir çox ümumi nəticə idi. 80 00:04:39,620 --> 00:04:42,460 Amma nə həqiqətən bir char * olmaq deməkdir? 81 00:04:42,460 --> 00:04:46,140 Və bu gün dediyi kimi, biz Binky qayıtmaq lazımdır - nin geri davam edək. 82 00:04:46,140 --> 00:04:48,670 Nin burada sadə bir misal gedək. 83 00:04:48,670 --> 00:04:53,060 Bu fayl compare.c kimi saxlamaq və mənə yalnız burada şablon kodunu qoy edək 84 00:04:53,060 --> 00:05:00,490 belə stdio.h daxildir, məni də özümü daxildir verək cs50.h. Mən orada zoom olacaq. 85 00:05:00,490 --> 00:05:05,850 Mənə əsas əsas int, (void) yazmağa başlayın, indi mən bu kimi bir şey etmək istəyirəm edək: 86 00:05:05,850 --> 00:05:13,520 printf ("Mənə bir string ver:") və sonra simli s GetString olur istifadə edəcək 87 00:05:13,520 --> 00:05:16,750 istifadəçi bir string almaq üçün, sonra başqa bir istifadəçi xahiş gedirəm. 88 00:05:16,750 --> 00:05:21,870 Və mən almaq GetString vasitəsilə onlara gedirəm: ("Mənə bir string ver"). 89 00:05:21,870 --> 00:05:27,020 Bu olduqca ümumi varsa s və s simli üçün gözəl adı sonra t gəlir, çünki mən bu t zəng edəcəyik. 90 00:05:27,020 --> 00:05:30,030 Belə GetString, indi mən bir ağlı başında olma çek etmək istəyirik və mən demək gedirəm 91 00:05:30,030 --> 00:05:39,770 (s == t) sonra mən yalnız ("Siz \ n eyni şey tipli") printf istifadəçi demək gidiyorum əgər; 92 00:05:39,770 --> 00:05:45,520 başqa mən kimi ("Siz tipli bir şey fərqli! \ n") bir şey çap gedirəm 93 00:05:45,520 --> 00:05:48,460 və ya hər hansı hökm olacaq. Belə ki, kimi bir şey. 94 00:05:48,460 --> 00:05:52,200 Sonra adi kimi, mən yalnız bir şey pis oldu signified olan 0 qayıtmaq lazımdır 95 00:05:52,200 --> 00:05:54,400 və mən irəli getmək və bu proqramı tərtib və çalıştırmak üçün gedirəm. 96 00:05:54,400 --> 00:05:56,540 >> Amma Bazar ertəsi, biz bu proqramı qaçdı 97 00:05:56,540 --> 00:06:00,420 və həqiqətən HELLO HELLO deyil və Goodbye Goodbye deyil bildirilib. 98 00:06:00,420 --> 00:06:03,140 Gördük davranışı bu kimi bir az çox idi. 99 00:06:03,140 --> 00:06:11,450 Mənə, mənim mənbə qovluğuna girin burada zoom, və in müqayisə edə bilərəm qoy edək. 100 00:06:11,450 --> 00:06:14,570 Tamam tərtib. Müqayisə mənə run edək. Mənə bir ip verin: HELLO. 101 00:06:14,570 --> 00:06:16,300 Mənə başqa simli ver: HELLO. 102 00:06:16,300 --> 00:06:18,000 Siz müxtəlif bir şey çap! 103 00:06:18,000 --> 00:06:22,650 Yaxşı, mənə sadə 50, 50 kimi bir şey edək. Siz müxtəlif bir şey çap! 104 00:06:22,650 --> 00:06:25,740 hi, hi. Belə ki, açıq-aydın bir şey burada davam edir. 105 00:06:25,740 --> 00:06:28,440 Amma nə üçün izahat nə idi? 106 00:06:28,440 --> 00:06:33,850 Görünür, line 12 tamamilə dysfunctional edir. 107 00:06:34,300 --> 00:06:39,430 Burada əsas problem nədir? Bəli. >> [Tələbə] Bu URL müqayisə edir. 108 00:06:39,430 --> 00:06:41,850 Bəli, dəqiq. Bu, faktiki ünvanlar müqayisə edir 109 00:06:41,850 --> 00:06:44,580 olan HELLO və HELLO saxlanılır. 110 00:06:44,580 --> 00:06:48,290 O, təkrar HELLO məktubları müqayisə deyil 111 00:06:48,290 --> 00:06:52,370 nə həqiqətən olub, çünki bütün bu vaxt biz GetString istifadə etdik - 112 00:06:52,370 --> 00:06:56,130 Bu yazı taxtası, daha kompüter yaddaş 113 00:06:56,130 --> 00:07:00,100 və Gəlin bir dəyişən s elan sonra GetString zəng deyirlər. 114 00:07:00,100 --> 00:07:01,930 Mənim yaddaş necə görünür? 115 00:07:01,930 --> 00:07:07,070 Gəlin özbaşına bu kimi görünür ki,. Bu kvadrat var. 116 00:07:07,070 --> 00:07:09,040 Və olduqca çox hər dəfə ekranda yaddaş bir parça tərtib etdik 117 00:07:09,040 --> 00:07:12,860 32 bit əgər mən, cihaz, çünki həqiqətən bu kimi meydanlarda rəsm olduğunuz 118 00:07:12,860 --> 00:07:17,380 bir göstərici, bir ünvan, 32 bit edir. Bu int kimi eyni. 119 00:07:17,380 --> 00:07:19,420 Bu kompüter sistemi əsasında dəyişə bilər. 120 00:07:19,420 --> 00:07:24,630 Mac və ya PC 64 bit olması ilə yayğın tanış olan sizin, 121 00:07:24,630 --> 00:07:28,120 ki, həqiqətən, sizin kompüter 64-bit göstəricilərinə istifadə etdiyini bildirir 122 00:07:28,120 --> 00:07:33,730 64-bit ünvanları, və ki, upsides arasında kompüter edir 123 00:07:33,730 --> 00:07:35,560 yesteryear daha çox RAM ola bilər. 124 00:07:35,560 --> 00:07:39,240 Uzun hekayə qısa, geri günü kompüter yalnız 32 bit istifadə 125 00:07:39,240 --> 00:07:42,740 URL təmsil etmək bytes ən böyük sayı təmsil edə 126 00:07:42,740 --> 00:07:46,280 bu halda nə siz 32 bit varsa? 127 00:07:46,280 --> 00:07:49,590 2, 32, 4 milyard çünki, sağa, 4 milyard belə. 128 00:07:49,590 --> 00:07:51,370 Bu sayı zamanı təkrarlanan edilmişdir. 129 00:07:51,370 --> 00:07:55,240 >> Yalnız 32 bit var, əgər siz arxalana bilər ən yüksək sayı təxminən 4 milyard. 130 00:07:55,240 --> 00:07:58,750 Lakin bir neçə il əvvəl qədər kompüter əsas məhdudiyyət idi 131 00:07:58,750 --> 00:08:01,180 yalnız 4 milyard kimi yüksək saymaq bilər, çünki 132 00:08:01,180 --> 00:08:05,270 siz RAM 8 gigabayt və ya RAM hətta 5 qiqabayt satın əhəmiyyətli deyil; 133 00:08:05,270 --> 00:08:07,780 siz yüksək saymaq bilməz, belə ki, faydasız idi. 134 00:08:07,780 --> 00:08:11,430 Siz yalnız kompüter yaddaş ilk 3 və ya 4 gigabayt yiyələnəcək. 135 00:08:11,430 --> 00:08:14,410 Yəni indi bir məsələ az, ve siz MacBook Pros və Dells ala bilərsiniz 136 00:08:14,410 --> 00:08:17,680 8 RAM gigabayt və ya daha çox bu gün. 137 00:08:17,680 --> 00:08:24,100 Bu proqram sadəcə bir göstərici ayrılması Lakin, bir pointer, s adlı 138 00:08:24,100 --> 00:08:28,370 həqiqətən biz bu qat geri soymaq lazımdır, çünki bu ekranda bu kimi baxmaq bilər. 139 00:08:28,370 --> 00:08:33,520 , Deyərək string saxlamaq, lakin Bazar ertəsi, simli həqiqətən char * edir 140 00:08:33,520 --> 00:08:35,590 bəzi xarakterli ünvan. 141 00:08:35,590 --> 00:08:39,280 Beləliklə, biz indi GetString istifadə davam edəcəyik baxmayaraq nin off təlim tam götürək. 142 00:08:39,280 --> 00:08:42,600 Mən s bəyan etdik və bu yaddaş yığın, 32 bit edir. 143 00:08:42,600 --> 00:08:47,370 Default yaddaş burada nə var? >> [Işitilemez tələbə cavab] 144 00:08:47,370 --> 00:08:50,040 Nə olub? >> [Tələbə] Zibil. >> Zibil. Exactly. 145 00:08:50,040 --> 00:08:54,610 Siz proqramçı bir dəyişən bir dəyər qoymaq deyilsə, kim nə bilir? 146 00:08:54,610 --> 00:08:57,990 Bəzən uğurlu almaq və 0 var olan, gözəl, təmiz default dəyəri növ 147 00:08:57,990 --> 00:09:00,310 biz bazar ertəsi gördüm, lakin bəzən bu, tam cəfəngiyatdır deyil 148 00:09:00,310 --> 00:09:04,130 olduğu gələn bəzi həqiqətən böyük müsbət və ya mənfi sayı? 149 00:09:05,350 --> 00:09:07,010 Bəli. Əvvəl >> [tələbə] funksiyası. >> Bəli. 150 00:09:07,010 --> 00:09:10,170 >> Tez-tez xatırlayıram çünki əvvəl deyilən oldu ki, funksiyası, 151 00:09:10,170 --> 00:09:13,920 yaddaş funksiyaları zəng kimi, onlar dibindən daha çox yer tutur 152 00:09:13,920 --> 00:09:17,040 və tezliklə funksiyası yekunları kimi, yaddaş təkrar olur 153 00:09:17,040 --> 00:09:20,890 adlı olur ki, növbəti oğlan ilə olan yaddaş üçün eyni dilim istifadə edir. 154 00:09:20,890 --> 00:09:23,450 Və orada sol zibil əvvəlki dəyərlər, var əgər 155 00:09:23,450 --> 00:09:28,190 biz, həqiqətən, biz bir şey qoymaq heç zaman bəzi dəyəri olan kimi səhv ola bilər. 156 00:09:28,190 --> 00:09:30,960 Beləliklə bu nöqtədə bizim RAM bu kimi görünür. 157 00:09:30,960 --> 00:09:36,030 İndi line 7 sağ tərəfində biz GetString zəng etdiyiniz 158 00:09:36,030 --> 00:09:40,150 olan biz həftə indi bunu etdik, ancaq həqiqətən bunu GetString edir? 159 00:09:40,150 --> 00:09:43,350 Bu CS50 heyəti tərəfindən yazılı GetString bir az ağıllı 160 00:09:43,350 --> 00:09:46,500 ki, istifadəçi yazaraq düymələri və Xit daxil edin başlayır kimi 161 00:09:46,500 --> 00:09:50,010 Neçə tuş vuruşlarını istifadəçi hit etdi GetString rəqəmlər həyata, 162 00:09:50,010 --> 00:09:53,360 neçə simvol mən RAM ayırmaq lazımdır. 163 00:09:53,360 --> 00:09:55,660 Və harada ki, RAM, gəlir kim bilir? 164 00:09:55,660 --> 00:09:58,930 Bu kompüter 2 gigabaytlık və ya yaddaş etajer yerə deyil. 165 00:09:58,930 --> 00:10:05,200 Amma nin kompüter burada HELLO söz üçün yer tapdı güman edək. 166 00:10:05,200 --> 00:10:08,710 Mən tipli sözü H-E-L-L-O idi. 167 00:10:08,710 --> 00:10:13,510 Biz simvol bir ardıcıllıqla bu çəkmək, biz bu kimi cəlb edə bilər. 168 00:10:13,510 --> 00:10:17,860 Amma 1 əlavə şey etmək lazımdır. Nə C heç bir simli sonunda məxsusdur? 169 00:10:17,860 --> 00:10:20,710 Biz \ 0 kimi yazmaq olan null xarakter. 170 00:10:20,710 --> 00:10:23,980 Bu texniki sayı 0 var, lakin backslash bütün aydın edir 171 00:10:23,980 --> 00:10:28,150 bu sözün sayı 0 ki, tam 0 ki; 172 00:10:28,150 --> 00:10:32,440 siz klaviatura ilə yazın bilər ki, məsələn, quote-dırnağı bağlamaq 0, deyil. 173 00:10:32,440 --> 00:10:33,940 Beləliklə, bu HELLO edir. 174 00:10:33,940 --> 00:10:36,350 >> Biz bazar ertəsi nə demək ki GetString kimi bir funksiyası 175 00:10:36,350 --> 00:10:39,580 həqiqətən bütün bu həftə qayıdır? 176 00:10:39,580 --> 00:10:43,960 Ki, həqiqətən mənası yoxdur, çünki özlüyündə bir string qaytarılması deyil 177 00:10:43,960 --> 00:10:47,710 strings yoxdur çünki. Onlar CS50 kitabxana bir quraşdırma növ istəyirik. 178 00:10:47,710 --> 00:10:51,300 Daha texniki, nə həqiqətən bir simli edir? >> [Tələbə] Bu ilk xarakter var. 179 00:10:51,300 --> 00:10:55,950 Exactly. Bu istifadəçi daxil yazdığınız sadəcə ilk xarakterli ünvan var 180 00:10:55,950 --> 00:11:02,810 Belə ki, əgər byte sayı 123 və sonra byte sayı 124 bu başa HELLO mənim söz, 181 00:11:02,810 --> 00:11:08,320 125, 126, və s, qədər 0-dan Mən sayı mənim bytes əgər, 182 00:11:08,320 --> 00:11:12,650 nə həqiqətən GetString qayıdır sanki sayı 123-dir. 183 00:11:12,650 --> 00:11:19,270 Belə ki, nə s qoymaq olur sayı 123 deyil, məktubu H deyil, sözü, HELLO edir 184 00:11:19,270 --> 00:11:23,130 sadəcə mən HELLO ilk hərfini tapa bilərsiniz ünvan olan. 185 00:11:23,130 --> 00:11:26,500 Lakin kifayət qədər kimi görünmür. Mən bir simli üçün bir xarakter siz istədi. 186 00:11:26,500 --> 00:11:32,970 Belə ki, necə biz və ya kompüter ki ELLO cür H ilə birlikdə gəlib bilirik? 187 00:11:35,760 --> 00:11:37,460 Biz müqavilə sort nədir? Bəli. 188 00:11:37,460 --> 00:11:40,100 [Tələbə] Bu daha çox simvol tapmaq özünü izah edir. Məhz >>. 189 00:11:40,100 --> 00:11:44,570 >> Siz strings ilə məşğul olan elə bu insan-kompüter konvensiya var 190 00:11:44,570 --> 00:11:49,410 başqa indi char ulduzları kimi tanınan, sadəcə anlamaq üçün 191 00:11:49,410 --> 00:11:54,350 həyatda hər simli sonunda həqiqətən, loop üçün onu üzərində iterating ilə olduğu 192 00:11:54,350 --> 00:11:57,820 bir müddət loop, nə ki, siz simli sonunda tapmaq zaman 193 00:11:57,820 --> 00:12:02,160 İndi ki, nəticə çıxarmaq olar, oh, bütün söz HELLO idi. 194 00:12:02,160 --> 00:12:04,820 Əvvəl proqramlaşdırma təcrübə ilə sizin Java Bildiyiniz 195 00:12:04,820 --> 00:12:09,880 yalnız. zəng uzunluğu və digər dillərdə siz uzunluğu və ya oxşar zəng edə bilərsiniz. 196 00:12:09,880 --> 00:12:14,060 Dil bir çox, xüsusilə şeyi obyekt-yönümlü languages ​​adlı çünki O, var 197 00:12:14,060 --> 00:12:18,580 şey uzunluğu data özü parça encapsulated daxilində növü 198 00:12:18,580 --> 00:12:24,000 çox biz encapsulated kimlikleri və adları və bazar ertəsi tələbə daxilində ev istəyirəm. 199 00:12:24,000 --> 00:12:28,700 Lakin C çox aşağı səviyyədədir. Əvvəl şərtlərindən eşitdim heç obyektlərin və ya siniflər var. 200 00:12:28,700 --> 00:12:31,490 Siz var Bütün, həqiqətən, yaddaş ünvanları edir. 201 00:12:31,490 --> 00:12:35,540 Belə ki, bu maraqlı data strukturları təmsil edən köhnə yol sortudur. 202 00:12:35,540 --> 00:12:38,760 Siz ilk xarakterli ünvan kimi bir başlanğıc dəyəri 203 00:12:38,760 --> 00:12:42,340 və sonra hər kəs riayət razılaşır ki, yalnız bir ixtiyari Konvensiyası. 204 00:12:42,340 --> 00:12:46,420 Belə ki, simli uzunluğu həyata necə, biz təklif etdi? 205 00:12:46,420 --> 00:12:51,360 Siz bəzi artıq bir neçə dəfə istifadə edən Strlen, strlen. Bu doğru, olduqca sadə var? 206 00:12:51,360 --> 00:12:53,060 Bu kodu 2 xətt kimi. 207 00:12:53,060 --> 00:12:56,140 Bu bəlkə bir əlavə yerli dəyişən ilə olduqca çox bir növ üçün loop var. 208 00:12:56,140 --> 00:13:00,540 Amma strlen yalnız \ 0 axtarır başlamaq sonra bir göstərici almaq və var. 209 00:13:00,540 --> 00:13:05,190 >> Və tezliklə tapdığı kimi, bu simli qəbul olan addımlar ümumi sayı ola bilər. 210 00:13:05,190 --> 00:13:07,150 Belə ki, biz növbəti gedir nə bu nəticə çıxarmaq olar. 211 00:13:07,150 --> 00:13:11,850 Mən line 10-etdiyiniz kimi t bəyan sonra düşünək. 212 00:13:11,850 --> 00:13:14,280 Bu, bəzi zibil dəyəri. Kim ilk bilir? 213 00:13:14,280 --> 00:13:18,490 Lakin 10-xəttinin sağ tərəfində yenə GetString zəng edirəm. 214 00:13:18,490 --> 00:13:20,050 Bu başa yerləşir Kim bilir? 215 00:13:20,050 --> 00:13:23,830 Gəlin özbaşına əməliyyat sistemi burada yol artıq otaq aşkar deyirlər. 216 00:13:23,830 --> 00:13:28,610 Mən yenə coincidentally H-E-L-L-O yazın baş 217 00:13:28,610 --> 00:13:31,260 və biz şəkil eyni cür cəlb edə bilər. 218 00:13:31,260 --> 00:13:34,290 Amma redrawn bu şəkil var ki, qəsdən edir 219 00:13:34,290 --> 00:13:37,720 ki, çünki bu daha HELLO fərqli. 220 00:13:37,720 --> 00:13:43,920 Belə ki, burada bu yeri 456 ola bilər, bu 457 və s. 221 00:13:43,920 --> 00:13:47,170 Sual işarəsi dəfə idi nə qoymaq olur? 222 00:13:47,170 --> 00:13:50,190 Bu halda 456-ci ildə. 223 00:13:50,190 --> 00:13:53,540 Biz bu gün sonra, çünki, həqiqətən, özbaşına bu nömrələri seçmək edirik 224 00:13:53,540 --> 00:13:57,110 biz bir şey ünvan nə qədər çox qayğı fikrində deyilik. 225 00:13:57,110 --> 00:14:02,690 Biz qayğı bütün biz HELLO kimi data bəzi parça ünvan anlamaq bilər. 226 00:14:02,690 --> 00:14:07,100 >> Belə ki, həqiqətən yaddaş ünvanları haqqında danışarkən insanların çoxu kompüter nə 227 00:14:07,100 --> 00:14:10,210 və, xüsusilə göstəricilərinə söhbət 228 00:14:10,210 --> 00:14:14,220 Bu məhsulları həqiqətən olduğu kimin umurunda - 123 həyata figuring narahat deyil 229 00:14:14,220 --> 00:14:17,440 biz yalnız bəzi ədədi ünvan olduğunu bilirik - 230 00:14:17,440 --> 00:14:22,180 biz dünyanın sadələşdirmək və yalnız s ki, karakter işarə edir ki, 231 00:14:22,180 --> 00:14:25,080 t ki, karakter işarə edir. 232 00:14:25,080 --> 00:14:27,430 Və bir arrow var ki, çox qəsdən edir 233 00:14:27,430 --> 00:14:31,610 sanki artıq H və t işarə edir, çünki digər H da işarə edir 234 00:14:31,610 --> 00:14:34,720 Günün sonunda, bu ünvanı nə fərqi deyil, çünki 235 00:14:34,720 --> 00:14:40,240 lakin kodu bəzi parça ilə ünvan ifadə etmək imkanı var ki, məsələ yoxdur. 236 00:14:40,240 --> 00:14:42,730 Biz, həqiqətən, yalnız hələ bu ünvanlar manipulyasiya deyil 237 00:14:42,730 --> 00:14:47,770 belə biz interject və göstəricilər ilə şeyə və sort bilərsiniz görürsünüz 238 00:14:47,770 --> 00:14:52,030 amma sözün 12 indi xətt üçün nə dəyərləri biz müqayisə olunur 239 00:14:52,030 --> 00:14:55,500 line 12 Bu hekayə görə? 240 00:14:56,570 --> 00:15:01,290 Biz 456 üçün 123 bərabər bərabər olduğunu deyib mi? Və mütləq hal deyil. 241 00:15:01,290 --> 00:15:05,320 Və hətta konseptual, bu göstərici mütləq bu kimi eyni deyil 242 00:15:05,320 --> 00:15:09,500 , iki dəfə GetString adlanır və GetString ağıllı super olmaq üçün cəhd deyil, çünki 243 00:15:09,500 --> 00:15:12,470 həyata cəhd deyil, oh, siz 5 dəqiqə əvvəl HELLO tipli; 244 00:15:12,470 --> 00:15:15,090 əvvəl sizə verdi kimi məni eyni göstərici verək, 245 00:15:15,090 --> 00:15:18,450 yalnız yaddaş, yeni bir yığın siz zəng hər zaman ayırır. 246 00:15:18,450 --> 00:15:20,350 >> Biz bu problem Belə ki, necə düzeltirim? 247 00:15:20,350 --> 00:15:24,270 Yüksək səviyyədə, mən strings HELLO və HELLO müqayisə etmək istəyirəm - 248 00:15:24,270 --> 00:15:28,680 Mən göstəricilər haqqında qayğı yoxdur - Mən suala cavab haqqında necə getmək yoxdur, 249 00:15:28,680 --> 00:15:31,980 istifadəçi eyni şey yazın idi? Burada lazımdır? Bəli. 250 00:15:31,980 --> 00:15:35,200 [Tələbə] funksiyası istifadə edin. >> Mən qutusu bir funksiyası istifadə edə bilərsiniz. 251 00:15:35,200 --> 00:15:38,170 Mən strcmp, s-t-r-c-m-p adlı bir funksiyası istifadə edə bilərsiniz 252 00:15:38,170 --> 00:15:41,190 Simli müqayisə deyərək yalnız qısaldılmış versiyası. 253 00:15:41,190 --> 00:15:45,070 Və biz getmək əgər, məsələn, bu gün sədəqə arasında olan, 2 et 254 00:15:45,070 --> 00:15:46,690 Mən məhz bunu. 255 00:15:46,690 --> 00:15:51,750 Mən, 26 və ya aşağı başqa hər şey xətti 1 eyni saxlanılır 256 00:15:51,750 --> 00:15:54,360 və indi bu hissəsi yalnız bir az dəyişib bilərsiniz. 257 00:15:54,360 --> 00:15:57,690 Bir an üçün line 28 ignore və bu yalnız diqqət edək. 258 00:15:57,690 --> 00:16:00,410 Biz küç müqayisə edir ki, bazar ertəsi nə? 259 00:16:00,410 --> 00:16:05,200 O, bu halda 2 göstəricilərinə, s t alaraq prosesi emal 260 00:16:05,200 --> 00:16:08,480 növ faktiki olaraq, bu 2 məktublar onun barmaq qoyaraq 261 00:16:08,480 --> 00:16:11,530 və nə etməliyik, loop üçün bir müddət loop və ya kimi bir şeydir 262 00:16:11,530 --> 00:16:16,050 və bu eyni deyir? Əgər belədirsə, bu, barmaqları və ya irəli göstəricilərinə hərəkət edir. 263 00:16:16,050 --> 00:16:17,970 Bu eyni, bu eyni, bu eyni, 264 00:16:17,970 --> 00:16:22,710 bu eyni, bu eyni? Və ooh, mən s t həm də simli sonunda edirəm. 265 00:16:22,710 --> 00:16:26,780 Mən heç bir ziddiyyət aşkar deyil. Bəli, bu strings eynidir. 266 00:16:26,780 --> 00:16:31,940 2 strings eyni əgər küçəsi, yəqin qaytarılması nə müqayisə edir? Zero. 267 00:16:31,940 --> 00:16:35,900 Belə 0 Bu halda yaxşı çünki -1 ya +1, geri əgər 268 00:16:35,900 --> 00:16:40,560 edən yalnız t əlifba əvvəl və ya t sonra gəlmək olur ki, deməkdir. 269 00:16:40,560 --> 00:16:43,760 Və nə ki, simli əvvəl gəlir deyir ki, bir funksiyası var faydalı olardı 270 00:16:43,760 --> 00:16:46,720 və ya bir lüğət sonra? 271 00:16:46,720 --> 00:16:48,740 [Tələbə] axtarış. >> Axtarışı və çeşidlənməsi. 272 00:16:48,740 --> 00:16:51,730 >> Belə ki, ikili axtarış və ya bubble sırala kimi şeylər və ya sort daxil edə bilərsiniz 273 00:16:51,730 --> 00:16:53,230 şeyi müqayisə var. 274 00:16:53,230 --> 00:16:56,420 Bu günə qədər biz bəzi küncləri kəsilmiş növü var və yalnız çeşidlənməsi haqqında danışdı 275 00:16:56,420 --> 00:16:59,430 ədəd kontekstində bu barədə danışmaq üçün gözəl və asan deyil, çünki 276 00:16:59,430 --> 00:17:02,430 ancaq əlbəttə strings, alma və banan, müqayisə edə bilərsiniz 277 00:17:02,430 --> 00:17:05,349 alma eyni, banan əvvəl gəlib məlum olduqda, çünki 278 00:17:05,349 --> 00:17:09,319 Siz video birləşmə növ ilə idi yalnız Rob kimi yaddaş ətrafında strings hərəkət edə bilər 279 00:17:09,319 --> 00:17:15,880 və biz seleksiya sort daxil sort və bubble sırala ilə səhnəyə burada etdi. 280 00:17:15,880 --> 00:17:18,710 Belə ki, burada başqa biz bu edə bilər? Bu cəhd edək. 281 00:17:18,710 --> 00:17:23,980 Və Gəlin sort bir an üçün dərs unutmaq və indi cəhd və aşağıdakı etmək 1.c surəti. 282 00:17:23,980 --> 00:17:26,800 Line 21 Mən, çap bir şey dedi alıram 283 00:17:26,800 --> 00:17:28,520 sonra, istifadəçi bir string alıram 284 00:17:28,520 --> 00:17:30,690 sonra mən bu yoxlanılması alıram. 285 00:17:30,690 --> 00:17:33,620 Biz, həqiqətən, hələ bu vərdiş halına kazanılmış, lakin indi bu imkan yoxdur. 286 00:17:33,620 --> 00:17:40,990 Geri bu qat qabığı həqiqətən edək. Bu, həqiqətən, char * edir. Bu adam həqiqətən char * edir. 287 00:17:40,990 --> 00:17:45,690 Belə ki, s == NULL əgər yoxlanılması üçün nə deməkdir? 288 00:17:45,690 --> 00:17:48,380 Bu çıxır ki, siz GetString kimi bir funksiyası zəng zaman 289 00:17:48,380 --> 00:17:51,540 və ya daha çox, ümumiyyətlə, yalnız, bəzi yaddaş vermək üçün kompüter xahiş 290 00:17:51,540 --> 00:17:53,030 bir şey yanlış getmək bilər. 291 00:17:53,030 --> 00:17:56,630 Siz crazy və yaddaş terabayt üçün kompüter xahiş edə bilər 292 00:17:56,630 --> 00:18:01,780 yalnız kompüter mövcud olmayan yaddaş bytes trilyonlarca tələb edərək, 293 00:18:01,780 --> 00:18:05,130 lakin GetString və digər funksiyaları siz böyle bəzi yol lazımdır 294 00:18:05,130 --> 00:18:06,820 siz çox xahiş etdik əgər. 295 00:18:06,820 --> 00:18:10,450 Daha çox yaddaş tələb varsa və GetString Bunu yolu 296 00:18:10,450 --> 00:18:14,250 ki, super, super aşağı ehtimal belə, kompüter mövcuddur çox 297 00:18:14,250 --> 00:18:17,730 Bizə heç Enter sonra bir trilyon karakterleri yazın və davam edir, çünki 298 00:18:17,730 --> 00:18:21,980 lakin ola bilər, baxmayaraq aşağı ehtimalı, mən hələ də, yalnız halda onu yoxlamaq istəyirəm 299 00:18:21,980 --> 00:18:26,120 xüsusi dəyər GetString, cavab və digər funksiyaları gəlirlər ki, 300 00:18:26,120 --> 00:18:30,630 bir şey yanlış keçmişdir əgər bütün caps ildə NULL edir. 301 00:18:30,630 --> 00:18:36,520 >> Və NULL nədir? NULL yalnız bir göstərici təmsil olur. Bu yaddaş ünvan 0 var. 302 00:18:36,520 --> 00:18:40,800 Bu mənim kompüter yaddaş əgər dünya ki, özbaşına qərar - Bildiyiniz nə? - 303 00:18:40,800 --> 00:18:46,260 biz hər kompüter yaddaş yalnız 1 byte oğurlamaq olacaq və bu yeri 0 deyil. 304 00:18:46,260 --> 00:18:49,560 Biz NULL bir ləqəb vermək olacaq və biz vəd olacaq 305 00:18:49,560 --> 00:18:52,660 biz həqiqətən var real data qoymaq heç vaxt 306 00:18:52,660 --> 00:18:56,770 biz yalnız özbaşına xüsusi dəyəri, 0, NULL aka, lazımdır, çünki 307 00:18:56,770 --> 00:19:00,230 bir şey yanlış gedir əgər biz users fəğan edə bilsinlər. 308 00:19:00,230 --> 00:19:03,590 Əks halda 0 burada bir şey qoymaq deməkdir bilmirəm bilər 309 00:19:03,590 --> 00:19:05,490 və ya bir şey yanlış getdi deməkdir? 310 00:19:05,490 --> 00:19:09,190 Biz bütün NULL vasitəsilə heç bir şey qaytarılıb razılıq var 311 00:19:09,190 --> 00:19:11,700 heç bir faktiki ünvan qaytarılmışdır. 312 00:19:11,700 --> 00:19:15,210 İndi burada mən yalnız mən mənim insan konvensiya qəbul edirəm əsas, 1 qayıtmaq 313 00:19:15,210 --> 00:19:17,040 bir şey yanlış gedir əgər. 314 00:19:17,040 --> 00:19:20,650 Əsas qayıdışı konvensiya 0 yaxşı əgər qayıtmaq çünki O, var 315 00:19:20,650 --> 00:19:22,990 1 və ya bir başqa dəyər pis əgər. 316 00:19:22,990 --> 00:19:28,200 Amma GetString və NULL yaddaş yekunları fırsatlar bir şey pis gedir ki, əgər hər hansı fəaliyyət göstərir. 317 00:19:28,200 --> 00:19:33,480 >> Okay. Belə ki, təəssüf ki, line 27, bu olsa super sadə, tamamilə simli surəti bilmir. 318 00:19:33,480 --> 00:19:35,740 Niyə? Biz bu aşağıdakı kimi bilərsiniz. 319 00:19:35,740 --> 00:19:40,120 Mən s surəti edilməsi və t zəng etmək line 27 iddia edirəm. 320 00:19:40,120 --> 00:19:45,790 Mən 2 strings bu dəfə üçün istifadəçi isteyen deyiləm, mən yalnız s dəyəri dedi alıram 321 00:19:45,790 --> 00:19:47,870 habelə t qoymaq lazımdır. 322 00:19:47,870 --> 00:19:52,890 Belə ki, indi yalnız 29 irəli mən nə edirəm xətt, bu necə broken nümayiş? 323 00:19:52,890 --> 00:19:56,980 T uzunluğu 0 çoxdur əgər Birinci mən yoxlanılması alıram. 324 00:19:56,980 --> 00:19:59,330 Bəzi simli var. İstifadəçi daxil şey tipli 325 00:19:59,330 --> 00:20:03,410 Yəqin line bunu 32, nədir? 326 00:20:03,410 --> 00:20:08,910 [Işitilemez tələbə cavab] >> hüququ. Siz tipli mən bunu edir nə dedi onu nəticə çıxarmaq olar. 327 00:20:08,910 --> 00:20:13,200 Ancaq texniki, bu nə edir? t [0] nə təmsil? 328 00:20:13,200 --> 00:20:15,140 [Tələbə] Bu zeroth character. >> [Malan] The zeroth character. 329 00:20:15,140 --> 00:20:19,620 Yoxsa, daha çox insan kimi, t ilk xarakteri, o nə, H bəlkə bu halda. 330 00:20:19,620 --> 00:20:24,990 Və toupper deyir nə. Bu t zeroth xarakter capitalizes və onu dəyişir. 331 00:20:24,990 --> 00:20:28,430 Bu t zeroth xarakter etmək deməkdir ki, bu böyük etmək 332 00:20:28,430 --> 00:20:30,320 və həmin yeri geri qoydu. 333 00:20:30,320 --> 00:20:35,540 Mən kiçik də salam yazın Belə ki, bu kapital H. üçün kiçik h dəyişməlidir 334 00:20:35,540 --> 00:20:41,400 Ancaq problem xətləri 35 və Mən haqqında Ben nə 36 Bookmark s t üçün çap olmasıdır. 335 00:20:41,400 --> 00:20:43,120 Və donqarlamaq nə var? 336 00:20:43,120 --> 00:20:47,250 Mən, həqiqətən, Mən kiçik də salam çap görmek üçün nə edəcəyəm? 337 00:20:47,250 --> 00:20:52,280 Nə çap almaq üçün gedir? >> [Işitilemez tələbə cavab] >> ki, nə var? 338 00:20:52,280 --> 00:20:58,360 [Tələbə] Big H qalan kiçik. Kiçik >> böyük H və istirahət üçün, və ya t? 339 00:20:58,360 --> 00:21:03,170 [Tələbə] Həm. >> Edir. Exactly. Belə ki, burada neler görmek edək. 340 00:21:03,170 --> 00:21:08,380 >> Mənə davam və bu tərtib edək. Bu copy1, belə copy1 edir. Bütün hüquqlar. 341 00:21:08,380 --> 00:21:14,840 Kiçik də salam: Yadda davam və copy1 run, daxil edin, bir şey De edək daxil kiçildin. 342 00:21:14,840 --> 00:21:19,570 Bu surəti kapitallaşdırılır, lakin yəqin həmçinin orijinal kapitallaşdırılır 343 00:21:19,570 --> 00:21:22,070 nə bu hekayə olur çünki? 344 00:21:22,070 --> 00:21:27,030 Line 27 Mən, həqiqətən, simli çıxarmaq üçün görünmüyor 345 00:21:27,030 --> 00:21:30,450 ancaq daxilən belə ki, ümid ola bilər, baxmayaraq ki, 346 00:21:30,450 --> 00:21:33,680 Bu şəkil haqqında düşünüyorsanız, nə həqiqətən mən etmişəm? 347 00:21:33,680 --> 00:21:35,410 Şəkil yarısı eyni. 348 00:21:35,410 --> 00:21:39,390 T hələ xəbəri yoxdur ki, Belə ki, geri vaxtında roll imkan verir. 349 00:21:39,390 --> 00:21:43,160 S hekayə mövcud ola bilər, lakin edək salam bu dəfə kiçik. 350 00:21:43,160 --> 00:21:46,710 Mən həqiqətən daxil tipli nə mənə düzeltmek bildirin 351 00:21:46,710 --> 00:21:51,280 Burada bu halda biz h-e-l-l-o var. 352 00:21:51,280 --> 00:21:58,050 Biz simvol bir ardıcıllıqla kimi çəkmək lazımdır, burada mənim separator xətləri qoymaq və \ 0. 353 00:21:58,050 --> 00:22:05,980 Belə ki, biz 24-ish vasitəsilə tezliklə xətti 1 kimi burada deyil, vermək və ya almaq, icra var. 354 00:22:05,980 --> 00:22:07,800 Bu mənim yaddaş şəkil. 355 00:22:07,800 --> 00:22:10,800 Mən line 27 almaq zaman nə baş verir? 356 00:22:10,800 --> 00:22:14,730 Əvvəl istəyirəm Sadəcə, mən bu kvadrat kimi çəkmək lazımdır bir göstərici almaq. 357 00:22:14,730 --> 00:22:19,740 Bu t deyirlər. Və default dəyəri nə var? Kim bilir? Bəzi zibil dəyəri. 358 00:22:19,740 --> 00:22:22,060 >> Mən ki, uzaq bir sual işarəsi kimi mücərrəd yatıracağız. 359 00:22:22,060 --> 00:22:27,670 Və tezliklə line 27 sağ icra kimi, nə t daxilində qoyulması edirəm? 360 00:22:27,670 --> 00:22:30,770 S ki, eyni şey. 361 00:22:30,770 --> 00:22:34,120 Bir an biz arrow bu abstraksiya aradan qaldırılması və biz demək, əgər 362 00:22:34,120 --> 00:22:40,330 oh, bu t s, nöqtəli vergül olur deyəndə, yaddaşlı yük ünvan 123 deyil, 363 00:22:40,330 --> 00:22:42,700 siz sözün burada 123 qoyaraq edirik. 364 00:22:42,700 --> 00:22:45,200 Biz cür şəkillər ilə daha dünya sadələşdirmək İndi əgər, 365 00:22:45,200 --> 00:22:48,750 nə həqiqətən etdik, yalnız dünya üçün bir arrow əlavə 366 00:22:48,750 --> 00:22:52,910 ki t eyni dəqiq string işarə edir. 367 00:22:52,910 --> 00:22:59,730 Belə ki, xətt 31 və 32 Mən, həqiqətən, t [0] dəyişdirilməsi getmək zaman, 368 00:22:59,730 --> 00:23:05,580 t nə [0] indi ilə yəqin sinonimi? s [0] 369 00:23:05,580 --> 00:23:07,030 Belə ki, bütün baş verən deyil. 370 00:23:07,030 --> 00:23:09,900 Və hətta bu cür olsa hiss bir az aşağı və gizli 371 00:23:09,900 --> 00:23:12,760 və bu cür bəlkə daxilən bu yalnız işləmiş olmalıdır kimi hiss - 372 00:23:12,760 --> 00:23:15,410 Mən əvvəl şeyi nüsxə etdik və yalnız çalışmışdır - 373 00:23:15,410 --> 00:23:18,590 siz həqiqətən bir string həqiqətən nə barədə düşünmək, bu bir char * var. 374 00:23:18,590 --> 00:23:21,700 Yaxşı ki, nə? Bəzi xarakterli ünvan var. 375 00:23:21,700 --> 00:23:24,930 Sonra bəlkə daha çox əhəmiyyət kəsb edir ki, bir şey etmək üçün cəhd zaman 376 00:23:24,930 --> 00:23:29,220 bu kimi super zahirən sadə, siz yapýyorsun bütün çıxarmaq yaddaş ünvan. 377 00:23:29,220 --> 00:23:32,530 Siz, həqiqətən, simli özü ilə bir şey məşğul deyilik. 378 00:23:32,530 --> 00:23:37,500 Siz heç bir fikrim yoxdur, hətta belə ki, kodu bu problemi həll necə 379 00:23:37,500 --> 00:23:45,080 yüksək səviyyədə, konseptual, biz yəqin, s həqiqi surəti ta etmək üçün nə lazımdır? 380 00:23:46,670 --> 00:23:48,820 Bəli. >> [Tələbə] yeni bir yer ver? Məhz >>. 381 00:23:48,820 --> 00:23:50,800 >> Biz t yeni yeri vermək lazımdır. 382 00:23:50,800 --> 00:23:55,230 Biz birtəhər biz yaddaş yeni bir yığın almaq bir dünya yaratmaq üçün lazımdır 383 00:23:55,230 --> 00:24:00,090 yalnız aydınlıq xatirinə Mən bu bir aşağı çəkmək lazımdır, lakin orada olması lazım deyil. 384 00:24:00,090 --> 00:24:04,880 Amma eyni ölçüdə olmalıdır, mən eyni yerdə bu şaquli xətləri çəkmək lazımdır. 385 00:24:04,880 --> 00:24:09,720 Bu ilkin bütün zibil əgər O, gözəl deyil. Kim nə bilir? 386 00:24:09,720 --> 00:24:13,850 Mənə lazımdır Amma 1 adım çox yaddaş kimi mənə vermək lazımdır gedir 387 00:24:13,850 --> 00:24:18,630 salam surəti uyğun, sonra, burada h surəti necə burada e anlamaq 388 00:24:18,630 --> 00:24:20,390 burada və s l. 389 00:24:20,390 --> 00:24:24,880 Ətraflı bəzi hələ mücərrəd olsa Amma bu artıq bir az aşkar hiss etməlidir. 390 00:24:24,880 --> 00:24:28,690 Bu bu simli kopyalamak üçün, yalnız bir loop və ya bir müddət loop üçün var 391 00:24:28,690 --> 00:24:31,580 və ya bütün çox tanış olduğunuz olan bir şey. 392 00:24:31,580 --> 00:24:35,970 Belə ki, bu cəhd edək. Mənə copy2.c daxil edək. 393 00:24:35,970 --> 00:24:43,270 Copy2.c biz line 27 istisna olmaqla, demək olar ki, eyni proqram var. 394 00:24:43,270 --> 00:24:47,260 Bu bir az mürəkkəb görünür, lakin biz parça-parça onu qırmaq əgər 395 00:24:47,260 --> 00:24:48,950 sol tərəfdən eyni. 396 00:24:48,950 --> 00:24:52,790 Char * t bir sual işarəsi ilə də olsa, yaddaş bu şey yaradır 397 00:24:52,790 --> 00:24:54,680 biz heç bir fikrim yoxdur, çünki mənim orada nə var. 398 00:24:54,680 --> 00:24:57,920 Sağ tərəfdən biz indi yeni bir funksiyası, malloc təqdim edirik 399 00:24:57,920 --> 00:25:00,640 yaddaş ayırmaq üçün, mənə yaddaş vermək 400 00:25:00,640 --> 00:25:06,900 və yəqin edir neçə arqumentlər neçə mötərizə içərisində şeylər? 401 00:25:09,660 --> 00:25:12,130 Mən 1 və 2 murmurings eşitdim, lakin yalnız 1-dir. 402 00:25:12,130 --> 00:25:15,320 Parantez içinde yalnız 1 şey var deməkdir heç bir vergül, var. 403 00:25:15,320 --> 00:25:17,720 Digər parantez var baxmayaraq, mənə qeyd edək 404 00:25:17,720 --> 00:25:21,460 bu outermost mötərizə daxilində nə var, və bu ifadə var: 405 00:25:21,460 --> 00:25:25,880 (Strlen (s) + 1) * sizeof (char). 406 00:25:25,880 --> 00:25:29,190 Biz, həqiqətən, bu düşünmək Belə ki, bu mənə s uzunluğu vermək deyib. 407 00:25:29,190 --> 00:25:34,440 Niyə uzunluğu üzərinə 1 əlavə, baxmayaraq ki, am? >> [Işitilemez tələbə cavab] 408 00:25:34,440 --> 00:25:40,200 Exactly. Biz quyruq bu oğlan üçün yer yoxdur, ingilis mənası var ki, altıncı xarakter lazımdır 409 00:25:40,200 --> 00:25:42,250 lakin xüsusi proqram mənası yoxdur. 410 00:25:42,250 --> 00:25:46,800 >> Belə ki, bir + 1 lazımdır, çünki strlen yekunları uzunluğu insan gözləməsi 411 00:25:46,800 --> 00:25:50,890 salam və ya 5, siz əlavə null xarakter vermir. 412 00:25:50,890 --> 00:25:52,980 Mən əl + 1 Bu əlavə edin. 413 00:25:52,980 --> 00:25:56,060 Və bu, of * ölçüsü (char), biz bu əvvəl görmədim. 414 00:25:56,060 --> 00:25:57,480 Bu texniki bir funksiyası deyil. 415 00:25:57,480 --> 00:26:04,150 Bu, sadəcə nə ölçüsü kompüter bəzi data növü sizə deyir ki, xüsusi bir söz var 416 00:26:04,150 --> 00:26:06,980 əslində, çünki bizim bəzi 32-bit, kompüterlər var. 417 00:26:06,980 --> 00:26:10,900 Mən evdə olduqca köhnə kompüter var və bu yalnız göstəricilərinə təmsil 32 bit istifadə edir. 418 00:26:10,900 --> 00:26:13,900 Mən data type ölçüsü əgər Belə ki, bu 32 bit ola bilər. 419 00:26:13,900 --> 00:26:18,300 Mən yeni xülya kompüter istifadə edirəm, lakin, mən 64 bit dəyəri geri almaq bilər 420 00:26:18,300 --> 00:26:20,510 ünvan kimi bir şey. 421 00:26:20,510 --> 00:26:25,400 Belə ki, bu halda, yalnız super təhlükəsiz, biz kimi ağır kodu şey fikrində deyilik - 422 00:26:25,400 --> 00:26:28,740 yaxşı, biz indiyə qədər bildirib olduğunuz nə görə char həcmi nə qədərdir? 423 00:26:28,740 --> 00:26:34,450 Biz olduqca çox 1 byte var ki, şura daxilində olduqca çox doğrudur ki, şifahi bildirib etdik. 424 00:26:34,450 --> 00:26:37,000 Ancaq yenə də, fərziyyələr pis olur. 425 00:26:37,000 --> 00:26:40,850 Insanlar niyyətində deyil idi yollarla proqram istifadə əgər onlar arabası proqram gətirib. 426 00:26:40,850 --> 00:26:44,750 Belə edək abstrakt bu üz və daha çox ümumi olaraq demək 427 00:26:44,750 --> 00:26:46,830 Mən yaddaş bu çox chunks lazımdır 428 00:26:46,830 --> 00:26:50,210 və yaddaş hər yığın, bir xarakter ölçüsü ekvivalent olmalıdır 429 00:26:50,210 --> 00:26:54,870 Bu halda 1-bərabər faktiki olaraq olan, lakin o, yazılı bir daha ümumi yolu. 430 00:26:54,870 --> 00:27:00,460 Sözü salam əgər Belə ki, neçə bayt malloc yəqin salam ayrılan edir? 431 00:27:00,460 --> 00:27:04,980 [Tələbə] Altı. >> Altı. Biz ekranda sual işarələri var olduğu kimi bir çox. 432 00:27:04,980 --> 00:27:07,800 Və sonra indi GetString sizin anlaşma əsasında təxmin etmək 433 00:27:07,800 --> 00:27:12,790 malloc yəqin ki, nə qayıtmaq edir? >> [Tələbə] bir ünvan. 434 00:27:12,790 --> 00:27:17,020 Nə bir ünvan? Yaddaş ilk yığın edir. 435 00:27:17,020 --> 00:27:20,670 >> Biz nə var heç bir fikrim yoxdur, çünki bəzi digər funksiyası 436 00:27:20,670 --> 00:27:23,010 əvvəl bu yaddaş istifadə bilərdi. 437 00:27:23,010 --> 00:27:28,380 Amma malloc, GetString kimi, yaddaşlı ilk byte üçün ünvan qaytarır 438 00:27:28,380 --> 00:27:30,540 sizin üçün ləğv edib. 439 00:27:30,540 --> 00:27:38,380 Lakin, nə bunu etmir backslash null xarakterli bu boş doldurmaq olunur 440 00:27:38,380 --> 00:27:43,030 ints, simlər, diziler, siz bir şey ayrılması malloc istifadə edə bilərsiniz həyata çevrilir, çünki 441 00:27:43,030 --> 00:27:45,700 üzüb gedirdi, tələbə strukturlar. 442 00:27:45,700 --> 00:27:47,750 Siz tamamilə ümumi olaraq malloc istifadə edə bilərsiniz. 443 00:27:47,750 --> 00:27:51,470 Bu qayğı və ya sizin üçün yaddaş ayrılması nəyi yoxdur. 444 00:27:51,470 --> 00:27:55,810 Belə ki, bir \ 0 qoymaq malloc üçün lovğa olacaq 445 00:27:55,810 --> 00:27:58,340 yaddaş hər yığın sonunda siz verilməsi oldu 446 00:27:58,340 --> 00:28:02,620 bu \ 0 şey yalnız strings üçün konvensiya deyil. 447 00:28:02,620 --> 00:28:06,310 Bu ints üçün istifadə deyil, bu, üzüb gedirdi üçün istifadə deyil, o, tələbələr üçün istifadə deyil. 448 00:28:06,310 --> 00:28:11,730 Və malloc ilə gotcha yükünü siz tamamilə proqramçı olduğunu 449 00:28:11,730 --> 00:28:16,790 siz ayrılan neçə bayt xatırlamaq və heç loop üçün istifadə etmək 450 00:28:16,790 --> 00:28:21,570 və ya bir müddət loop və sizə verdiyi olduğunuz yaddaş yığın sərhəd keçmiş gedin. 451 00:28:21,570 --> 00:28:23,540 Tez yaddaş ayrılması kimi, başqa sözlə, 452 00:28:23,540 --> 00:28:28,510 Əgər əməliyyat sistemi xahiş edə bilməz, oh, yol, bu necə yaddaş yığın böyük idi? 453 00:28:28,510 --> 00:28:32,080 Bu dəyər lazımdır xatırlamaq sizə tamamilə var. 454 00:28:32,080 --> 00:28:34,330 >> Mən bu yaddaş istifadə üçün davam necə in görək. 455 00:28:34,330 --> 00:28:38,430 Line 28 və 29-nə bunu edirəm? 456 00:28:39,850 --> 00:28:42,260 Yalnız ümumi ağlı başında olma çek. 457 00:28:42,260 --> 00:28:45,110 Bir şey yanlış getdi Just halda, mən yaddaş bəzi crazy məbləği tələb 458 00:28:45,110 --> 00:28:48,690 və ya çox şey, yalnız kifayət yaddaş yoxdur kompüter çalışan var 459 00:28:48,690 --> 00:28:51,780 kimi bir şey, mən ən azı null kontrol etmək istəyirəm. 460 00:28:51,780 --> 00:28:55,260 Əslində, ən kompüter siz illüziya verəcək hər proqram 461 00:28:55,260 --> 00:28:57,080 Sizin RAM tam istifadə edə bilər, 462 00:28:57,080 --> 00:29:00,740 hətta, belə ki, bəlkə bəzi crazy uzun simli istifadəçi növləri əgər onlar pis oğlan edirik, çünki 463 00:29:00,740 --> 00:29:03,440 və onlar, həqiqətən, bu, sizin proqram və ya hack qəza çalışdığınız 464 00:29:03,440 --> 00:29:07,300 ən azı malloc qaytarılması dəyəri yoxlamaq istəyirəm və bu null bərabər olub. 465 00:29:07,300 --> 00:29:11,630 Və əgər, mən bu halda nə bilmirəm, çünki nin yalnız indi çıxmaq imkan verir. 466 00:29:11,630 --> 00:29:13,950 Necə simli surəti yoxdur? Bunun üçün bir neçə yol var. 467 00:29:13,950 --> 00:29:18,850 Yoxdur küç C funksiyaları surəti, lakin bizə bu köhnə yol etmək üçün sadə super deyil. 468 00:29:18,850 --> 00:29:23,110 >> Birinci mənə s uzunluğu nə həyata rəqəm imkan verir. 469 00:29:23,110 --> 00:29:26,930 Mən loop bu qoymaq bilərdi lakin əvəzinə yalnız aydınlıq üçün burada həyata qoydu. 470 00:29:26,930 --> 00:29:30,610 Belə n indi yəqin 5 olan orijinal simli uzunluğu, saklar. 471 00:29:30,610 --> 00:29:35,290 Sonra üçün loop Mən n qədər 0-dan iterating alıram 472 00:29:35,290 --> 00:29:40,940 və hər iteration Mən qoyulması alıram s [i] t daxilində [i]. 473 00:29:40,940 --> 00:29:45,060 Belə ki, mən əvvəl strings da işarə mənim 2 barmaqları ilə nəzərdə tutulan budur. 474 00:29:45,060 --> 00:29:49,260 Loop üçün bu kimi iterates kimi, mən, burada daxil h çıxarmaq üçün gedirəm 475 00:29:49,260 --> 00:29:52,890 burada l burada daxil daxil e bu s, çünki bu t edir. 476 00:29:52,890 --> 00:29:58,770 Və sonra nəhayət, line 35-nə bunu edirəm? 477 00:29:58,770 --> 00:30:03,770 Mən string t sona alıram əmin etmək lazımdır. 478 00:30:03,770 --> 00:30:06,170 Mən açıq super olmaq üçün bu yolu etdi. 479 00:30:06,170 --> 00:30:09,510 Lakin, ola bilər, əgər, bunu fərqli bir şəkildə kimsə təklif. 480 00:30:09,510 --> 00:30:13,930 Mən, həqiqətən, line 35 ehtiyac yoxdur. Bunun başqa yolu yoxdur. 481 00:30:13,930 --> 00:30:18,880 Bəli. >> [Işitilemez tələbə cavab] >> o Qaraçuxurlu söyləyin. 482 00:30:18,880 --> 00:30:20,960 [Tələbə] dən az və ya bərabər. Məhz >>. 483 00:30:20,960 --> 00:30:24,450 Biz yalnız daha az və ya ümumiyyətlə pis olan n, bərabər demək olar 484 00:30:24,450 --> 00:30:28,190 biz hesablanması etdiyiniz şey üçün bərabər qədər getmək demək olar ki, həmişə çünki 485 00:30:28,190 --> 00:30:30,000 biz çox 1 addım geri getmək. 486 00:30:30,000 --> 00:30:32,170 Amma unutmayın ki, biz nə qədər bytes ayrılması idi? 487 00:30:32,170 --> 00:30:37,210 Biz 6 cəmi, belə ki, 5 + 1 s strlen ayrılıb. 488 00:30:37,210 --> 00:30:39,980 Belə ki, bu halda biz bu kimi bir şey edə 489 00:30:39,980 --> 00:30:46,450 biz çox sonunda yalnız salam, həm də \ 0 deyil çıxarmaq edirik ki. 490 00:30:46,450 --> 00:30:49,860 Alternativ olaraq, biz strcpy küçəsi surəti deyilən bir funksiya istifadə edə 491 00:30:49,860 --> 00:30:51,700 lakin yaxın kimi çox fun ola bilməz. 492 00:30:51,700 --> 00:30:54,000 Lakin bu başlıq altında verir bütün var. 493 00:30:54,000 --> 00:30:56,050 Sonra nəhayət, biz əvvəlki kimi eyni şey. 494 00:30:56,050 --> 00:31:01,620 I t kapitallaşdırmaq və sonra orijinal bu surəti kimi görünür kimi görünür ki, iddia. 495 00:31:01,620 --> 00:31:08,570 Belə ki, indi bu edək. Mənə burada gedək. Copy2 olun. Biz zoom və copy2 run lazımdır. 496 00:31:08,570 --> 00:31:13,840 Mən kiçik də salam yazın gedirəm, həqiqətən, Mən orijinal kimi salam kiçik almaq 497 00:31:13,840 --> 00:31:16,930 lakin surəti üçün Xoşgəldiniz paytaxtı. 498 00:31:16,930 --> 00:31:20,300 Amma yalnız hələ həyata deyiləm. Burada 1 son şey etmək lazımdır. 499 00:31:20,300 --> 00:31:28,000 46 və 47 aydın yaddaş azad, amma əslində nə deməkdir? 500 00:31:28,000 --> 00:31:33,250 Mən line 46 və line 47 zəng siz hesab edirəm ki, nə edirəm? 501 00:31:33,250 --> 00:31:38,900 Nə təsir edir? Bəli. 502 00:31:38,900 --> 00:31:43,140 [Işitilemez tələbə cavab] >> Exactly. 503 00:31:43,140 --> 00:31:46,380 >> Siz yalnız, hey, bu yaddaş üçün təşəkkür əməliyyat sistemi izah olunur. 504 00:31:46,380 --> 00:31:48,320 İndi başqası üçün istifadə edə bilərsiniz. 505 00:31:48,320 --> 00:31:50,790 Burada zibil dəyərlər mükəmməl misal var. 506 00:31:50,790 --> 00:31:55,430 Mən sadəcə, 2 yerlərdə salam sözü yazmaq üçün yaddaş istifadə 507 00:31:55,430 --> 00:31:57,490 burada, burada, burada və burada. 508 00:31:57,490 --> 00:32:00,910 Belə ki, bu h-e-l-l-o-\ 0 deyil. 509 00:32:00,910 --> 00:32:06,960 Amma sonra line 46 və line 47 zəng və şəkil baxımından orada nə bilirik? 510 00:32:06,960 --> 00:32:10,010 Əslində, gözləyin, bu şəkil köhnə biridir. 511 00:32:10,010 --> 00:32:12,550 Biz çıxarmaq sonra, bu oğlan həqiqətən, burada işarə edir 512 00:32:12,550 --> 00:32:16,110 belə yenə nömrələri aradan qaldırılması və yalnız mücərrəd üz bizim oxlar kimi edək. 513 00:32:16,110 --> 00:32:19,370 Mən pulsuz zəng nə bu şəkil olur? 514 00:32:19,370 --> 00:32:22,750 [Işitilemez tələbə cavab] >> Hətta. 515 00:32:22,750 --> 00:32:29,510 Mən s t pulsuz zəng varsa - oyun sual növü - bu şəkil bütün dəyişmir 516 00:32:29,510 --> 00:32:33,880 s zəng və zəng çünki t yalnız əməliyyat sistemi deyir 517 00:32:33,880 --> 00:32:39,010 hey, siz yenidən bu yaddaş istifadə edə bilər, lakin bu null dəyişdirmək deyil 518 00:32:39,010 --> 00:32:41,840 və ya xüsusi xarakterli, bu dəyişmir 519 00:32:41,840 --> 00:32:47,350 bu h və ya e ya başqa bir şey ya yerdə l və ya l və ya o dəyişmir. 520 00:32:47,350 --> 00:32:51,610 Şəkil baxımından, tezliklə siz pulsuz, heç bir dəyişikliklər zəng kimi. 521 00:32:51,610 --> 00:32:56,570 Və orada zibil dəyərlərin mənşəyi yerləşir çünki mən sonra bu proqram 522 00:32:56,570 --> 00:33:01,010 ki GetString ya malloc və ya kimi bir şey daha çox yaddaş üçün əməliyyat sistemi xahiş 523 00:33:01,010 --> 00:33:04,900 və əməliyyat sistemi, əmin, Mən yalnız azad yaddaş 12 bytes var, deyir 524 00:33:04,900 --> 00:33:08,080 bu istifadə, nə təqdim ediləcək? 525 00:33:08,080 --> 00:33:10,830 Biz adətən cəlb ki, yaddaş yığın təhvil olacaq 526 00:33:10,830 --> 00:33:13,700 sual işarələri, lakin bu sual işarələri nə var? 527 00:33:13,700 --> 00:33:17,000 Onlar h-e-l-l-o, h-e-l-l-o olması baş verir. 528 00:33:17,000 --> 00:33:20,940 Bu tez yaddaş pulsuz olaraq yeni zibil dəyərlərdir. 529 00:33:20,940 --> 00:33:22,750 >> Bir real dünya dolayısı burada da var. 530 00:33:22,750 --> 00:33:24,720 Bu RAM ilə olur, ancaq kompüter 531 00:33:24,720 --> 00:33:26,720 həqiqətən disk ilə eyni şey. 532 00:33:26,720 --> 00:33:30,620 Biz Suclari fokuslanan bir gələcək problem dəsti ilə xüsusilə bu barədə danışmaq lazımdır. 533 00:33:30,620 --> 00:33:36,170 Sizin masa üstü bəzi həssas maliyyə fayl varsa Amma nə həqiqətən baş verir 534 00:33:36,170 --> 00:33:39,600 və ya bir yarım yamalak JPEG və sizin zibil daxil sürükleyin 535 00:33:39,600 --> 00:33:44,390 Siz zibil və ya zibil bin daxil sürükleyin zaman nə olar? 536 00:33:44,390 --> 00:33:47,240 Mən söhbət nə bilirdi. [Gülüş] 537 00:33:47,240 --> 00:33:52,370 Əgər zibil bin və ya zibil bilər daxil sübut sürüklənəcəklər sonra ne olur? 538 00:33:52,370 --> 00:33:55,920 [Işitilemez tələbə cavab] 539 00:33:55,920 --> 00:33:58,000 Yaxşı, belə ehtiyatlı. Bunu ne olur? 540 00:33:58,000 --> 00:34:01,030 Qısa cavab doğru bir şey deyil? 541 00:34:01,030 --> 00:34:04,790 Yarım yamalak ya həssas fayl hələ yalnız sabit bir yerdə orada yaşayır. 542 00:34:04,790 --> 00:34:07,940 Bizim ən azı sizin zibil boşaltmaq lazımdır ki, ağır yol öyrəndim 543 00:34:07,940 --> 00:34:10,429 və ya zibil bin həqiqətən faylları silmək üçün. 544 00:34:10,429 --> 00:34:13,440 And olsun ki, siz sağ basın və ya zibil basın nəzarət zaman bilərsiniz 545 00:34:13,440 --> 00:34:15,580 və ya Fayl, Boş Çöp və ya hər hansı seçmək 546 00:34:15,580 --> 00:34:21,420 və həqiqətən zibil bilər və ya, həqiqətən, bu şəkil sonra nə zibil vedrəsi, boş? 547 00:34:22,810 --> 00:34:25,969 Daha heç bir şey. Belə ki, heç bir şey həqiqətən disk üzərində olur. 548 00:34:25,969 --> 00:34:30,880 >> Biz yalnız müvəqqəti sapmaq və yazmaq əgər - I'll yalnız bu geri istifadə edin. 549 00:34:30,880 --> 00:34:34,639 Belə ki, indi hekayə proqramlarının mövcud olduğu olan RAM, doğru dəyişir 550 00:34:34,639 --> 00:34:39,250 siz disk, onlara yayınlıyorsanız isə onlar uzun müddət saxlanılır, burada olan 551 00:34:39,250 --> 00:34:42,920 hakimiyyəti indi üçün gedir belə - və biz gələcəkdə bu geri gəlmək lazımdır - 552 00:34:42,920 --> 00:34:46,380 Gəlin bu kompüter sabit daxili təmsil iddia 553 00:34:46,380 --> 00:34:50,110 çünki geri gün onlar çox disketleri kimi, dairəvi disklər olmaq üçün istifadə. 554 00:34:50,110 --> 00:34:55,130 Bəzi həssas Excel fayl var Belə ki, bu yaddaş bu yığın up bilər 555 00:34:55,130 --> 00:34:59,770 kompüter disk haqqında və mən yalnız eyni ixtiyari 1s və 0s rəsm alıram. 556 00:34:59,770 --> 00:35:03,970 Sizin zibil qutusuna kimi fayl sürükleyin zaman və ya bin yeniden bilər, 557 00:35:03,970 --> 00:35:07,750 Apple və Microsoft yalnız qərara çünki sözün heç bir şey olmaz 558 00:35:07,750 --> 00:35:10,450 zibil bilər və zibil bin həqiqətən yalnız müvəqqəti tutucu edir. 559 00:35:10,450 --> 00:35:14,710 Bəlkə nəticədə OS sizin üçün boş, lakin adətən, o, heç bir şey deyil 560 00:35:14,710 --> 00:35:17,090 yer, həqiqətən aşağı etdiyiniz ən azı qədər. 561 00:35:17,090 --> 00:35:20,870 >> Lakin, boş zibil və ya boş zibil bin getmək zaman, 562 00:35:20,870 --> 00:35:23,460 eyni, heç bir şey bu şəkil olur. 563 00:35:23,460 --> 00:35:28,590 Olur ki, bütün başqa yerdə kompüter deyil, masa, bir növ var. 564 00:35:28,590 --> 00:35:35,400 Bu, resume.doc, deyək ki, deyir ki, bir az istifadə etmək hesabatı kimi sort var 565 00:35:35,400 --> 00:35:40,920 sizin sabit disk yeri 123 yaşaya üçün istifadə bir Microsoft Word faylı sizin CV, 566 00:35:40,920 --> 00:35:43,710 deyil yaddaş və RAM ancaq sabit disk, 567 00:35:43,710 --> 00:35:49,050 və 456-da yarım yamalak JPEG yaşayır və Excel faylı 789 və ya yerdə yaşayır. 568 00:35:49,050 --> 00:35:53,640 Həqiqətən, zibil və ya zibil bin boşaltma ilə silin zaman, 569 00:35:53,640 --> 00:35:59,530 Bu şəkil dəyişmir. Sabit üzrə 0s və 1s yerdə getmək yoxdur. 570 00:35:59,530 --> 00:36:03,930 Amma bu cədvəl, növ bu kiçik verilənlər bazası, dəyişiklik yoxdur. 571 00:36:03,930 --> 00:36:08,750 Faylı bir mənada silindi sanki sizin CV silmək, o deyil, 572 00:36:08,750 --> 00:36:12,790 ki şey sabit yaşadığı lakin bütün kompüter unutmaq deyil. 573 00:36:12,790 --> 00:36:17,870 Sizin CV və ya digər faylları hər hansı bəstələmək ki 0s və 1s hələ bütöv var. 574 00:36:17,870 --> 00:36:21,960 >> Yanlışlıkla bu idi əgər, qeyri-sıfır ehtimal hələ var 575 00:36:21,960 --> 00:36:25,800 Norton Utilities və ya bir kommersiya proqram istifadə edərək, məlumatları bərpa edə bilər ki, 576 00:36:25,800 --> 00:36:29,810 həyat onun məqsədi 0s və növ yetim ki 1s tapmaq 577 00:36:29,810 --> 00:36:33,300 burada unudulmuş ancaq geri data ala bilərsiniz ki, burada qaldı. 578 00:36:33,300 --> 00:36:38,410 Yoxsa polis və ya FBI ilə məhkəmə müstəntiqləri həqiqətən sabit edəcək 579 00:36:38,410 --> 00:36:42,550 və həqiqətən, 0s və JPEGs kimi baxmaq, Excel faylları kimi baxmaq 1s nümunələri axtarmaq 580 00:36:42,550 --> 00:36:46,400 və onlara kompüter orada unutmuşdur, hətta bu yolla bərpa. 581 00:36:46,400 --> 00:36:49,820 Belə ki, biz gələcəkdə müzakirə edəcəyik kimi, data silmək üçün həqiqətən yeganə yolu, 582 00:36:49,820 --> 00:36:54,190 ilə fayl və ya sabit disk ovucu və ya silmək üçün - 583 00:36:54,190 --> 00:36:56,540 Siz həqiqətən 0s və 1s xilas edə bilməz 584 00:36:56,540 --> 00:36:59,440 başqa bir gigabyte sabit başlamaq istədiyiniz çünki 585 00:36:59,440 --> 00:37:02,380 siz daim silmə halda, siz bir MB sabit disk ilə başa istədiyiniz 586 00:37:02,380 --> 00:37:04,380 sanki 0s və 1s. 587 00:37:04,380 --> 00:37:06,310 Siz, həqiqətən, sizin musiqi əhatə etmək istəyirdi əgər Beləliklə, siz nə edəcəyik 588 00:37:06,310 --> 00:37:10,510 və əsas problem hələ 0s və disk haqqında 1s var ki? 589 00:37:10,510 --> 00:37:14,930 Mən sizə fiziki cihaz qırmaq ki gesticulating kimsə görürük. Bu işləyəcək. 590 00:37:14,930 --> 00:37:19,600 Bir bahalı həll növü var əgər [gülüş] Lakin nə daha məqsədəuyğun olardı? 591 00:37:19,600 --> 00:37:23,270 Bəli. >> [Tələbə] Onlardan yazır. >> Nə ilə yazır? >> [Tələbə] Digər məlumatlar. 592 00:37:23,270 --> 00:37:29,070 Digər data. Siz yalnız 0s və ya 1s və ya bütün 0s, bütün 1s ilə disk üzerine bilər. 593 00:37:29,070 --> 00:37:31,230 >> Və proqram bəzi nə həqiqətən var. 594 00:37:31,230 --> 00:37:33,570 Siz proqram almaq və ya hətta pulsuz proqram əldə edə bilərsiniz 595 00:37:33,570 --> 00:37:36,610 və hətta az belə Windows, bu gün Mac OS üçün inşa 596 00:37:36,610 --> 00:37:38,660 təhlükəsiz silmək imkanı var. 597 00:37:38,660 --> 00:37:41,960 Bu gün bütün run ev istəyirsinizsə Əslində, bir Mac və bu əgər 598 00:37:41,960 --> 00:37:45,740 siz var, sizin zibil bəzi məhsulları, siz Secure Boş Çöp edə bilər 599 00:37:45,740 --> 00:37:47,610 hansı dəqiq ki, yoxdur. 600 00:37:47,610 --> 00:37:53,350 Əksinə burada yalnız sil faylları çox, bu, 0s və 1s burada silmək deyil 601 00:37:53,350 --> 00:38:01,240 deyil, yalnız 0s və nöqtə, nöqtə, nöqtə, məsələn, hamısını dəyişir. 602 00:38:01,240 --> 00:38:05,330 Belə ki, gələcək psets biri həqiqətən qəsdən data bərpa etmək olacaq - 603 00:38:05,330 --> 00:38:08,430 biz kampus insanlar, yerləri və şeyi qəbul etdiyiniz fotoşəkillər 604 00:38:08,430 --> 00:38:12,810 üçün biz bir digital kamera yaddaş kartı məhkəmə image etmək lazımdır 605 00:38:12,810 --> 00:38:17,120 olan dəqiq eyni fikir - və həqiqətən tapmaq üçün etiraz olacaq 606 00:38:17,120 --> 00:38:20,160 sizin sabit JPEGs təmsil nümunələri, 607 00:38:20,160 --> 00:38:23,610 çox olan e-poçt ki, keçmiş tələbə kimi mən bir neçə həftə əvvəl oxumaq etdi 608 00:38:23,610 --> 00:38:25,860 onun bacısının fotoşəkillər bərpa. 609 00:38:25,860 --> 00:38:30,300 Niyə biz burada 5 dəqiqə fasilə etmək yoxdur və biz yaddaş daha regroup lazımdır. 610 00:38:33,030 --> 00:38:38,610 Belə ki, burada şeyi bir az ağıl əyilmə almaq yerləşir, lakin bu çox güclü bir addım 611 00:38:38,610 --> 00:38:40,480 bu bütün daha çox dərk doğru. 612 00:38:40,480 --> 00:38:42,900 Burada pointers.c adlı bir proqramdır. 613 00:38:42,900 --> 00:38:45,430 Bu gün örnek kod biridir. 614 00:38:45,430 --> 00:38:51,280 Ilk bir neçə xətləri, 22 vasitəsilə 19, biz edirik bütün GetString kimi bir şeydir edək ki, 615 00:38:51,280 --> 00:38:54,460 və s bu saxlanılması, bir ünvan qaytarılması. 616 00:38:54,460 --> 00:38:58,380 Bundan pset hətta 3 istəyirsinizsə lakin pset 4 və 617 00:38:58,380 --> 00:39:01,030 yerləşir, siz özünüz off bu təlim təkərlər etmək başlaya bilər 618 00:39:01,030 --> 00:39:04,030 strings artıq mövcud olan iddia etmək heç bir səbəb yoxdur. 619 00:39:04,030 --> 00:39:07,030 Əlbəttə ki, yalnız char * deyərək başlamaq üçün OK. 620 00:39:07,030 --> 00:39:12,610 >> Bir kənara kimi, online istinadlar və kitablar siz tez-tez dəyişən yanındakı ulduz ola bilər. 621 00:39:12,610 --> 00:39:15,600 Siz hətta hər iki ətrafında fəzalarda görə bilərsiniz. 622 00:39:15,600 --> 00:39:17,680 O Bütün funksional doğru. 623 00:39:17,680 --> 00:39:21,180 İndi, baxmayaraq ki, biz super aydın etmək üçün bu yanaşma standartlaşdırmaq lazımdır 624 00:39:21,180 --> 00:39:24,000 ki, char * xarakter göstərici deyən kimi. 625 00:39:24,000 --> 00:39:25,680 Bu data növüdür. 626 00:39:25,680 --> 00:39:28,730 Və sonra dəyişən adı bu halda s. 627 00:39:28,730 --> 00:39:31,180 Beləliklə, biz bir string kazanılmış etdik və s adlı etdik. 628 00:39:31,180 --> 00:39:35,180 Və sonra aşağı burada həqiqətən kələk bir az edirəm ki, görürsünüz. 629 00:39:35,180 --> 00:39:39,080 Bu super sadə növ olan göstərici hesab adlanır. 630 00:39:39,080 --> 00:39:41,790 Bu yalnız göstəricilərinə nömrələrin əlavə və çıxmaq deməkdir. 631 00:39:41,790 --> 00:39:43,660 Amma bu həqiqətən işləyir. 632 00:39:43,660 --> 00:39:49,170 Bu proqram yəqin belə sonunda nəticəsində həmin xətt üzrə simli s 1 xarakterli yazdıran - 633 00:39:49,170 --> 00:39:54,920 Məhz buna görə də biz bu hara getdiyini, korlamaq göstəricilərinə etmək göstəricilərinə run, mənə daxil zoom imkan bilər 634 00:39:54,920 --> 00:39:58,940 İndi HELLO və növü daxil kimi bir şey mənə növü bildirin 635 00:39:58,940 --> 00:40:01,080 və line 1 xarakterli görüntüler. 636 00:40:01,080 --> 00:40:04,730 Up ikinci əvvəl qədər, biz kvadrat mötərizə notation bu edərdi. 637 00:40:04,730 --> 00:40:09,760 Biz loop üçün istiyorum və biz s printf etmək istədiyiniz [i] və biz təkrar və yenidən bunu istədiyiniz 638 00:40:09,760 --> 00:40:11,950 hər xətti sonunda backslash n. 639 00:40:11,950 --> 00:40:16,800 Lakin bu proqram fərqlidir. Bu proqram sözün hesab istifadə edir. 640 00:40:16,800 --> 00:40:18,860 Bəs burada olub? 641 00:40:18,860 --> 00:40:24,720 Bu loop hətta icra əvvəl, ilk növbədə, nə, yalnız aydın olmaq, s əslində? 642 00:40:24,720 --> 00:40:27,270 S var? >> [Tələbə] bir ünvan. >> Bir ünvan. 643 00:40:27,270 --> 00:40:32,980 >> Və salam halda, bu ünvan var ki, söz ilk xarakter olan h. 644 00:40:32,980 --> 00:40:37,370 Belə ki, s, bu misalda, h ünvan. 645 00:40:37,370 --> 00:40:41,850 Belə ki, s nə deməkdir + i? 646 00:40:41,850 --> 00:40:46,280 Yaxşı, i loop üçün 0 başlayır. Biz dəfələrlə etdik. 647 00:40:46,280 --> 00:40:49,760 Mən yəqin ki, simli uzunluğu qədər getmək niyyətindədir. 648 00:40:49,760 --> 00:40:53,950 Beləliklə, bu loop ilk iteration haqqında, i açıq-aydın 0 deyil. 649 00:40:53,950 --> 00:41:01,740 Deyil, s +0- ki, açıq-aydın yalnız s var - bu ifadə s + i deyib. 650 00:41:01,740 --> 00:41:04,320 Belə * burada s nədir? 651 00:41:04,320 --> 00:41:08,530 İndi bir az fərqli şəkildə star istifadə edirik. 652 00:41:08,530 --> 00:41:13,080 Mənə davam və biz t və s surətləri söhbət tamamlayın çünki t xilas edək. 653 00:41:13,080 --> 00:41:15,540 İndi biz yalnız s cəlb hekayə demək istəyirəm. 654 00:41:15,540 --> 00:41:20,090 Əvvəl idi çox kimi və bu anda növü simli sonra, bizim dünya baxır 655 00:41:20,090 --> 00:41:26,630 yalnız s h ünvan saxlanılması və ümumiyyətlə salam simli da işarə ilə. 656 00:41:26,630 --> 00:41:33,170 İndi * kimi bir xətt varsa (s + i), bu cəhd edək. 657 00:41:33,170 --> 00:41:40,140 Belə * (s + i). Bu 0 çünki mənə bu sadələşdirmək ki, bu * (s +0) edir. 658 00:41:40,140 --> 00:41:43,790 Yaxşı, bir dəqiqə gözləyin. Daha sadələşdirmək. Bu * (s) təşkil edir. 659 00:41:43,790 --> 00:41:47,020 Yaxşı, indi parantez axmaq növü var, indi yalnız bunu * s bildirin. 660 00:41:47,020 --> 00:41:50,540 Beləliklə, bu loop, qeyd edir ki, xətt, 26 ilk iteration-ci ildə, 661 00:41:50,540 --> 00:41:53,650 bu çap olduqca çox bərabərdir. 662 00:41:53,650 --> 00:41:56,040 * S data type nədir? 663 00:41:56,040 --> 00:42:00,770 Ulduz, s özü yanında olmaq olur Bu baxımdan, çünki 664 00:42:00,770 --> 00:42:04,930 lakin daha dəqiq desək, biz artıq, s bəyan çünki 665 00:42:04,930 --> 00:42:09,730 biz artıq bir dəyişən yaratmaq deyilik, line 26 char * heç bir qeyd var 666 00:42:09,730 --> 00:42:14,280 söz simli heç bir qeyd yoxdur, biz yalnız, s adlı dəyişən istifadə 667 00:42:14,280 --> 00:42:19,650 indi ulduz mənası çaşdırıcı, admittedly qədər müxtəlif və çıxır. 668 00:42:19,650 --> 00:42:26,590 Burada * s var nə s ünvan və çap getmək deməkdir. 669 00:42:26,590 --> 00:42:33,750 Beləliklə s burada * s - sort oluklar və Nərdivanlar kimi, bu arrow edin - burada. 670 00:42:33,750 --> 00:42:35,850 Belə ki, bu * s. 671 00:42:35,850 --> 00:42:39,060 >> Belə ki, xətt 26 ki loop ilk iteration nə çap olur? 672 00:42:39,060 --> 00:42:42,170 Mən bir xarakter üçün tutucu olan% c, çap 673 00:42:42,170 --> 00:42:48,520 sonra yeni bir \ n. * (S + i) i 0 yalnız bu deyil yerləşir. 674 00:42:48,520 --> 00:42:53,670 Belə ki, nə char mən% c üçün yer yoxdur? H. 675 00:42:53,670 --> 00:42:56,900 Bu hara getdiyini yəqin bilərsiniz - - loop növbəti iteration ildə 676 00:42:56,900 --> 00:43:01,350 növbəti iteration i açıq-aydın 1, belə ki, bu vasitə s +1, 677 00:43:01,350 --> 00:43:05,580 İndi ulduz demək lazımdır, çünki sonra indi parantez lazımdır 678 00:43:05,580 --> 00:43:08,620 yaddaş ünvan s +1 gedin. 679 00:43:08,620 --> 00:43:14,170 S nədir? Vaxt geri gəzmək və bu arrow indi həqiqətən hər hansı ne'mətlərini bunu deyil demək edək. 680 00:43:14,170 --> 00:43:18,450 Bu sayı 123 saxlanması demək xüsusilə edək 681 00:43:18,450 --> 00:43:25,110 Bu simli başlanğıc hello, bu ünvan 123, çünki bu s 124, və. 682 00:43:25,110 --> 00:43:30,550 Mən s +1 dedi alıram zaman ikinci iteration haqqında ki, 123 +1 deyən kimi 683 00:43:30,550 --> 00:43:35,340 başqa 124 kimi tanınan, char ikinci iteration çap olur nə belə? 684 00:43:35,340 --> 00:43:37,850 Yaddaş ünvan 124 at E. 685 00:43:37,850 --> 00:43:44,440 Burada almaq əvvəl Sonra + yenidən, 125, 126, 127 və bu loop təşəkkürlə dayandırır 686 00:43:44,440 --> 00:43:49,040 Mən çox yüksək saymaq deyil əmin etmək strlen kullanıyorum çünki. 687 00:43:49,040 --> 00:43:50,810 Belə ki, çox deyil. 688 00:43:50,810 --> 00:43:55,000 Yenə, bu, bir həftə əvvəl etdiyi kimi, baxmayaraq ki,. 689 00:43:55,000 --> 00:43:59,200 Biz də bunu istəmirəm baxmayaraq mənə line aşağıda yazın edək. 690 00:43:59,200 --> 00:44:02,500 Bu artıq eynidir. 691 00:44:02,500 --> 00:44:08,310 >> Belə ki, həftə üçün zəng etdiyiniz kimi, bir string olsa, s həqiqətən char * edir. 692 00:44:08,310 --> 00:44:13,270 Biz super anal olmaq istəyirəm əgər, bu spesifik xarakterli yazmaq həqiqətən müvafiq deyil 693 00:44:13,270 --> 00:44:17,490 Bu rəqəmli ünvanları və bu ulduz operator istifadə İTH yerdə, 694 00:44:17,490 --> 00:44:20,470 amma açıq, bu, yalnız çox təmiz. Beləliklə, bu, pis deyil. 695 00:44:20,470 --> 00:44:26,720 , Heç bir səbəblə burada line 27 bunu dayandırmaq, lakin 26 funksional eyni 696 00:44:26,720 --> 00:44:31,570 və biz bu günə qədər müzakirə etdik ki, məhz səbəblərdən funksional eyni. 697 00:44:31,570 --> 00:44:33,650 Və nəhayət, 29 yalnız yaxşı təcrübədir. 698 00:44:33,650 --> 00:44:38,420 S pulsuz Zəng indi GetString sizə verdi ki, yaddaş geri ötürür o deməkdir ki, 699 00:44:38,420 --> 00:44:41,630 yenidən, mən həftə GetString, Bazar ertəsi qeyd olunduğu kimi, çünki 700 00:44:41,630 --> 00:44:44,180 kodunuzu daxil bir səhv təqdim edilmişdir. 701 00:44:44,180 --> 00:44:46,490 Həftə üçün kodu yaddaş sızıntıları var 702 00:44:46,490 --> 00:44:49,970 vasitəsi yaddaş üçün GetString xahiş etdik lakin geri verilməsi heç vaxt etdik. 703 00:44:49,970 --> 00:44:53,410 Və qəsdən pedaqoji bizim seçilmişdir ki, 704 00:44:53,410 --> 00:44:55,880 bu erkən düşünmək yalnız çox, çünki. 705 00:44:55,880 --> 00:44:57,710 Amma indi biz daha simmetriya lazımdır. 706 00:44:57,710 --> 00:45:00,830 Yaddaş üçün kompüter soruşsanız, kimi, GetString olduğu 707 00:45:00,830 --> 00:45:02,820 kimi işə, malloc üçün yəqin ki, 708 00:45:02,820 --> 00:45:07,970 siz pset 4 gələcək üçün pulsuz bu cür yaddaş artıq olmalıdır. 709 00:45:07,970 --> 00:45:11,650 Bu int n deyərək fərqli edək. 710 00:45:11,650 --> 00:45:15,040 Siz GetString zəng çünki bu azad ehtiyac yoxdur 711 00:45:15,040 --> 00:45:16,890 və malloc zəng etməyib. 712 00:45:16,890 --> 00:45:20,610 >> Biz nəhayət görürsünüz və hətta, GetInt adlı əgər 713 00:45:20,610 --> 00:45:25,520 Həqiqətən integers ətrafında keçə bilər, çünki GetInt üçün yaddaş ayrılması deyil 714 00:45:25,520 --> 00:45:29,430 və biz həftə məşğul olduğunuz yalnız yolu üzüb gedirdi və chars. 715 00:45:29,430 --> 00:45:33,960 Həqiqətən onlar çox chars ilə concatenation edirik çünki Strings baxmayaraq, xüsusi var. 716 00:45:33,960 --> 00:45:37,450 Belə ki, onlar chars və üzüb gedirdi və ints yalnız müxtəlif istəyirik və s. 717 00:45:37,450 --> 00:45:39,980 Ancaq biz əvvəl uzun qayıda bilərsiniz. 718 00:45:39,980 --> 00:45:44,920 Hər hansı bir sualınız sonra göstəricilərinə bu əvvəlində haqqında? Bəli. 719 00:45:44,920 --> 00:45:49,690 [Işitilemez tələbə sual] 720 00:45:49,690 --> 00:45:51,440 Ah, çox yaxşı sualdır. 721 00:45:51,440 --> 00:45:55,790 C həqiqətən sizin üçün bir neçə biri olan, rahat 722 00:45:55,790 --> 00:46:00,110 bu ölçüsü data type edir nə üçün rəqəmlər 723 00:46:00,110 --> 00:46:03,060 və sonra üçün vurma bu cür edir. 724 00:46:03,060 --> 00:46:06,610 Demək olar ki, həmişə bir char 1 byte, çünki bu, chars halda əlaqəsiz deyil 725 00:46:06,610 --> 00:46:08,150 bu yalnız çalışır. 726 00:46:08,150 --> 00:46:11,220 Lakin müzakirə naminə həqiqətən integers çap edilmişdir 727 00:46:11,220 --> 00:46:15,500 və siz bəzi dəyəri nin tam da işarə edilmişdir ki, çap çalışır 728 00:46:15,500 --> 00:46:20,720 bir int 4 bayt edir * i yalnız çünki eyni + 4 etmək lazımdır deyil. 729 00:46:20,720 --> 00:46:25,780 Pointer hesab C və compiler sizin üçün bütün riyaziyyat etmək deməkdir. 730 00:46:25,780 --> 00:46:29,190 Haqqında qayğı bütün insan mənada cür hesablanması edir. Bəli. 731 00:46:29,190 --> 00:46:35,200 [Tələbə] Siz loop üçün daxili bir string bəyan etsəniz, daha sonra azad etmək lazımdır? 732 00:46:35,200 --> 00:46:36,760 Sual Yaxşı. 733 00:46:36,760 --> 00:46:41,390 >> Siz loop üçün bir simli daxilində elan etsəniz, daha sonra azad etmək lazımdır? 734 00:46:41,390 --> 00:46:47,520 Siz yalnız GetString ya malloc ilə ayrılması pulsuz yaddaş lazımdır. 735 00:46:47,520 --> 00:46:53,110 Yalnız bir şey istəyirəm demək əgər - bütün kodu bağlı mənə indi qıvrım aşırma qoymaq bildirin. 736 00:46:53,110 --> 00:46:58,580 Bu kimi buggily olsa bir şey, əgər, char * t = s, 737 00:46:58,580 --> 00:47:03,450 t malloc ya GetString hər hansı qeyd daxil deyil, çünki siz pulsuz t ehtiyac yoxdur. 738 00:47:03,450 --> 00:47:08,960 Siz bunu əksinə varsa, GetString, sonra bəli, pulsuz t lazımdır. 739 00:47:08,960 --> 00:47:14,350 Və əslində, bunu etmək üçün yalnız imkanı daxilində eyni məsələ, bu loop içərisində indi 740 00:47:14,350 --> 00:47:16,060 biz keçmişdə müzakirə etdik. 741 00:47:16,060 --> 00:47:18,830 Əks halda, yaddaş ayrılması yaddaş ayrılması, yaddaşlı ayrılması olarıq 742 00:47:18,830 --> 00:47:21,230 və proqramın sonunda ki, loop kənarda edirik, çünki 743 00:47:21,230 --> 00:47:24,240 t mövcud deyil, lakin əməliyyat sistemi bildirib heç 744 00:47:24,240 --> 00:47:26,750 artıq yaddaş lazım deyil ki. 745 00:47:26,750 --> 00:47:30,430 Və uzun əvvəl, pset 4 və ya 5-biz Valgrind adlı proqram ilə təchiz edəcəyik 746 00:47:30,430 --> 00:47:34,160 olan, bu gizli interface qədər var ki, ruhunda gdb kimi 747 00:47:34,160 --> 00:47:35,750 amma həyat onun məqsəd sizə kömək edir. 748 00:47:35,750 --> 00:47:39,380 Və Valgrind gələcəkdə proqramları axtarış bir proqram 749 00:47:39,380 --> 00:47:42,550 yaddaş sızıntıları axtarır, GetString ya malloc olan olub, 750 00:47:42,550 --> 00:47:47,800 olan biz kimi çox CS50 kitabxana istifadə dayandırmaq kimi daha çox istifadə edəcəyik. 751 00:47:47,800 --> 00:47:53,030 Nəhayət, indi söz sort və nəzəriyyəsi əqli model sort var 752 00:47:53,030 --> 00:47:55,170 bu broken proqram həll olan. 753 00:47:55,170 --> 00:47:59,410 >> Beləliklə, bu broken proqram, svop, svop daxilində işləyir 754 00:47:59,410 --> 00:48:05,280 əsas x və y, geri keçmişdir, çünki bu, həqiqətən, əsas işləyib heç 755 00:48:05,280 --> 00:48:07,260 və bu belə danışmaq, dəyərləri tərəfindən qəbul olunmuşdur. 756 00:48:07,260 --> 00:48:09,330 Onlara surəti dəyişdirmək verilmişdir. 757 00:48:09,330 --> 00:48:12,520 Svop sonunda, bir və b həqiqətən mübadiləsi edilmiş, 758 00:48:12,520 --> 00:48:16,120 lakin əlbəttə biz bazar ertəsi müzakirə kimi x və y, olmayıb. 759 00:48:16,120 --> 00:48:19,940 Mən burada həqiqətən həll ki, burada yaşıl təklif. 760 00:48:19,940 --> 00:48:22,640 Və həqiqətən, məni yalnız ardıcıl olmaq mənim ulduzları hərəkət imkan 761 00:48:22,640 --> 00:48:24,440 baxmayaraq, yenə funksional bu məsələ deyil. 762 00:48:24,440 --> 00:48:28,730 Zaman və nə üçün məsələ deyil, gələcək həftə biz izah edəcəyik. 763 00:48:28,730 --> 00:48:30,600 Belə ki, yaşıl, indi bir həll edir. 764 00:48:30,600 --> 00:48:33,700 Mən bu ulduz bütün çünki Açığı, bu, bütün çox Messier görünür. 765 00:48:33,700 --> 00:48:35,380 Mənə bir şey qeyd edək. 766 00:48:35,380 --> 00:48:40,040 Bu int * Bir və int * b deyir burada ən line 767 00:48:40,040 --> 00:48:42,820 həmişə olduğu kimi əsaslı eyni şey edir. 768 00:48:42,820 --> 00:48:47,070 Bu dəyişdirmək üçün 2 dəlilləri və ya parametrləri elan edir 769 00:48:47,070 --> 00:48:49,940 bir int göstərici olan ilk adlandırıb 770 00:48:49,940 --> 00:48:53,100 olan ikinci b adlı int göstəricisidir. 771 00:48:53,100 --> 00:48:55,770 Bu baxımdan yeni olan tək şey bir ulduz var olmasıdır. 772 00:48:55,770 --> 00:48:59,340 >> Ki, nə deməkdir? A int deyil, b bir int deyil. 773 00:48:59,340 --> 00:49:04,100 A int üçün ünvan və b müxtəlif int və ünvanı. 774 00:49:04,100 --> 00:49:06,980 Mən C confusing olur etiraf yerləşir Down burada bu. 775 00:49:06,980 --> 00:49:09,790 İndi biz bir ulduz istifadə etdiyiniz, lakin bu çərçivədə müxtəlif mənası vardır. 776 00:49:09,790 --> 00:49:13,150 Biz burada kimi biz göstəricilərinə elan deyilik, çünki 777 00:49:13,150 --> 00:49:15,500 burada şeyi dereferencing olunur. 778 00:49:15,500 --> 00:49:21,520 Belə ki, texniki, svop daxilində birinci, ikinci və üçüncü xəttinin bu çərçivədə ulduz 779 00:49:21,520 --> 00:49:24,560 yalnız deməkdir dereference operator, orada getmək edir. 780 00:49:24,560 --> 00:49:27,400 Mənim barmaq h üçün ok sonra, Belə ki, yalnız kimi 781 00:49:27,400 --> 00:49:31,100 * Bir deməkdir ki ünvanına getmək və mənə var ki, int tapa bilərsiniz. 782 00:49:31,100 --> 00:49:34,250 * B vasitələri ünvan getmək və orada nə mənə keçir. 783 00:49:34,250 --> 00:49:40,730 Belə nin bazar ertəsi indi çərçivəsində bir yığın istifadə şəkil redraw edək, 784 00:49:40,730 --> 00:49:43,130 hansı alt bir əsas olacaq 785 00:49:43,130 --> 00:49:47,600 olan üst bir, svop olacaq 786 00:49:47,600 --> 00:49:50,880 bizim dünya bu kimi, yalnız bazar ertəsi kimi görünür ki,. 787 00:49:50,880 --> 00:49:53,620 Burada əsas istifadə edir ki yaddaş yığın edir. 788 00:49:53,620 --> 00:49:56,520 >> Proqram yalnız 2 dəyişənlərin olduğunu Bazar ertəsi Xatırladaq, 789 00:49:56,520 --> 00:50:01,930 bir x və y adlı bir adlanır və orada nömrələri 1 və 2 qoymuşdu. 790 00:50:01,930 --> 00:50:06,580 İndi kimi dəyişdirmək zəng zaman bazar ertəsi etdi 791 00:50:06,580 --> 00:50:11,000 Mən bu proqramı qırmızı versiyası istifadə əvvəllər zaman, hansı ki, bu kimi görünür 792 00:50:11,000 --> 00:50:17,470 I 2 parametrləri, bir və b var və biz burada və burada nə yazdın? 793 00:50:17,470 --> 00:50:21,160 Yalnız 1 və 2, sanki x və y nüsxə. 794 00:50:21,160 --> 00:50:23,070 Bu gün biz dəyişir. 795 00:50:23,070 --> 00:50:28,510 Bu gün əvəzinə ints keçən bir və b biz 2 ünvanlar keçmək olacaq. 796 00:50:28,510 --> 00:50:34,290 Bu URL ints qeyd etmək nə, ancaq bu URL özləri ints deyil. 797 00:50:34,290 --> 00:50:37,330 Onlar ünvanları var. Bu əvəzinə poçt ünvanı kimi. 798 00:50:37,330 --> 00:50:40,580 Belə ki, indi biz yalnız özümü ekranda bir az daha ətraflı vermək lazımdır. 799 00:50:40,580 --> 00:50:43,250 Bütün gün oldu bu mənim kompüter yaddaş. 800 00:50:43,250 --> 00:50:45,120 İndi biz bir ixtiyari nömrələmə sxemi lazımdır. 801 00:50:45,120 --> 00:50:50,580 Belə ki, bu yaddaş ünvan 123, 124 ki, yalnız təsadüfən, yalnız deyək. 802 00:50:50,580 --> 00:50:55,660 Gəlin məhz bu 125 demək, bu, 126 və s, lakin tamamilə əsassız deyil. 803 00:50:55,660 --> 00:50:58,590 Biz yalnız mənim yaddaş bəzi nömrələmə sxemi lazımdır. 804 00:50:58,590 --> 00:51:04,030 Belə ki, indi mən, həqiqətən, x və y keçmək zaman, mən x və y keçmək niyyətində deyiləm; 805 00:51:04,030 --> 00:51:08,400 Mən x və y, belə ki, danışmaq üçün poçt ünvanı keçmək gedirəm 806 00:51:08,400 --> 00:51:11,870 belə nə burada və burada saxlanılan olur 1 və 2 deyil ki, 807 00:51:11,870 --> 00:51:16,030 Mənim small mətn bilərsiniz ancaq, nə burada və burada qəbul olur? 808 00:51:16,030 --> 00:51:23,340 [Işitilemez tələbə cavab] >> Exactly. 123 bura qoymaq olur və 124 bura qoymaq olur. 809 00:51:23,340 --> 00:51:28,910 >> İndi, çünki üst qədər burada bu çox ilk line şəkildə star istifadə 810 00:51:28,910 --> 00:51:34,340 mənim proqram yalnız onlar açıq-aydın integers olmalarına baxmayaraq ki, 123 və 124 bilir 811 00:51:34,340 --> 00:51:40,160 hər hansı bir insan hiss edə bilər ki, onlar ünvanları rəqəmli ünvanları kimi təfsir olunmalıdır. 812 00:51:40,160 --> 00:51:43,250 Onlar ints və özlərini deyil, onlar, ünvanlarını edirik 813 00:51:43,250 --> 00:51:46,120 Mən aydın şəkildə orada ulduzları qoymaq çünki ki. 814 00:51:46,120 --> 00:51:51,360 Belə ki, indi nə burada baş faktiki kodu mənim birinci, ikinci və üçüncü line? 815 00:51:51,360 --> 00:51:53,380 Nin şəkil qalan cəlb edək. 816 00:51:53,380 --> 00:51:56,980 Tmp yalnız bazar ertəsi idi kimi. Tmp haqqında xüsusi bir şey. 817 00:51:56,980 --> 00:52:03,060 Bu, sadəcə bir yerli 32 bit dəyişən və daxili ki, mən yəqin * bir dəyəri saxlanılması edirəm. 818 00:52:03,060 --> 00:52:08,580 İndi yalnız o, həmin tmp = a, burada nə qoymaq olar? >> [Tələbə] 123. 819 00:52:08,580 --> 00:52:10,370 123. Amma mən edirəm nə deyil. 820 00:52:10,370 --> 00:52:13,670 Mən tmp dedi alıram = * a. Star vasitəsilə getmək. 821 00:52:13,670 --> 00:52:19,370 Belə ki, burada, 123-dir. Necə getmək yoxdur? Bir arrow var kimi Pretend. 822 00:52:19,370 --> 00:52:24,460 Bəli, orada, 1-dir. Belə görünür, tmp nə saxlanılır olur? Yalnız 1. 823 00:52:24,460 --> 00:52:29,620 Belə ki, başqa sözlə, tmp * bir * vasitəsi bir anda olduğunu ünvan getmək deyil, 824 00:52:29,620 --> 00:52:31,320 olan yəqin 123-dir. 825 00:52:31,320 --> 00:52:33,910 >> OK, burada biz yeri 123 var ki, sayı 1 bax 826 00:52:33,910 --> 00:52:35,670 Mən orada 1 nömrəli qoymaq üçün gedirəm. 827 00:52:35,670 --> 00:52:39,020 İndi line 2-nə etməliyəm, * a = * b? 828 00:52:39,020 --> 00:52:44,570 Bir nə indi, çünki bu bir az daha cəlb edir? Bu 123 var. 829 00:52:44,570 --> 00:52:50,220 Belə * bir haradadır? Sağ əvvəl oldu. Belə ki, orada getmək. Okay. 830 00:52:50,220 --> 00:52:53,420 İndi nəhayət, sonra nəhayət, bu, ümid edirəm ki, mənada başlayacaq 831 00:52:53,420 --> 00:53:00,280 * B b nə deməkdir? 124. Mən 2 olan, getmək lazımdır. 832 00:53:00,280 --> 00:53:03,430 Mən burada nə qoymaq bilərəm? 833 00:53:03,430 --> 00:53:10,100 * B * bir gider çünki 2 burada gider. Mən bunu edəcəyik. 834 00:53:10,100 --> 00:53:13,120 Və artıq biz çox yaxın olduğunu, bəlkə də görə bilərsiniz 835 00:53:13,120 --> 00:53:17,710 ilk dəfə doğru bu axmaq, sadə probleminin həllinə 836 00:53:17,710 --> 00:53:20,920 indi biz hələ x nə bir xatirə, çünki, 837 00:53:20,920 --> 00:53:23,230 biz, y, etiraf, 2 nüsxədə var 838 00:53:23,230 --> 00:53:25,850 lakin 3 satır indi * b deyir. 839 00:53:25,850 --> 00:53:31,080 Belə ki, burada b var. * B vasitəsilə getmək. Belə yeri 124 haradadır? 840 00:53:31,080 --> 00:53:35,560 Burada yəqin var. Mən burada nə qoymaq bilərəm? Aydındır ki, tmp. 841 00:53:35,560 --> 00:53:39,600 Belə ki, indi bu yoxdur. Mən burada 1 burada və 2 var. 842 00:53:39,600 --> 00:53:43,560 İndi nə bütün bu ki, 123, 124 və 1 haqqında? 843 00:53:43,560 --> 00:53:47,910 Qısa svop qaytarır, bu yaddaş itirilmiş kimi yaxşı 844 00:53:47,910 --> 00:53:51,070 kimi tezliklə svop yekunları, əməliyyat sistemi kimi çünki 845 00:53:51,070 --> 00:53:54,190 gələcəkdə daha yaddaş istifadə üçün pulsuzdur. 846 00:53:54,190 --> 00:53:58,870 Bu sözdə yığını altında yalnız əsas xatirəsinə ətrafında sərvətdən. 847 00:53:58,870 --> 00:54:01,470 >> Və nəhayət, biz indi bir iş versiyası var. 848 00:54:01,470 --> 00:54:06,310 Mənə swap.c daxil və aşağıdakı qeyd edək. 849 00:54:06,310 --> 00:54:11,280 Proqramın üst Mən prototip olmaq değiştirdik int * Bir və int * b. 850 00:54:11,280 --> 00:54:15,000 Mən pis olan qırmızı, yaxşı olan yaşıl getmək dəyişdi yalnız Belə ki, 851 00:54:15,000 --> 00:54:17,350 Mən bu gün bu ulduz əlavə olunur. 852 00:54:17,350 --> 00:54:21,520 Amma sonra aşağı burada özünü dəyişdirmək mən surəti idi, yalnız slayd idi nə yapışdırıb. 853 00:54:21,520 --> 00:54:24,140 Mən burada bir ulduz var, burada star - ki, prototip oyunları - 854 00:54:24,140 --> 00:54:27,930 və sonra bu şeyi indi tmp başqa ulduz var 855 00:54:27,930 --> 00:54:30,680 müvəqqəti dəyişən istifadə, çünki yeni bir şey var var. 856 00:54:30,680 --> 00:54:33,040 Mən yalnız bir int müvəqqəti saxlama lazımdır. 857 00:54:33,040 --> 00:54:34,820 Beləliklə, biz bir ulduz ehtiyac yoxdur. 858 00:54:34,820 --> 00:54:39,310 Biz özbaşına sərhəd bu cür keçmək bilər ki, biz yalnız ulduz lazımdır 859 00:54:39,310 --> 00:54:42,900 mənim kompüter yaddaşında bu 2 çərçivəsində arasında. 860 00:54:42,900 --> 00:54:45,630 Amma son bir şey dəyişdirmək üçün var, və siz artıq glimpsed ola bilər. 861 00:54:45,630 --> 00:54:48,810 Hansı xətt indi açıq-aydın müxtəlif edir? >> [Tələbə] & x. 862 00:54:48,810 --> 00:54:53,270 >> Bəli, belə ki, 25 mən işləmək üçün bu dəyişiklik lazımdır kodu son xəttidir. 863 00:54:53,270 --> 00:54:58,360 Bir həftə əvvəl və hətta bazar ertəsi line 25 Bu kimi baxdı, x və y, dəyişdirmək 864 00:54:58,360 --> 00:55:02,020 siz demək əgər, çünki bu yalnız qırıldı svop (x, y) 865 00:55:02,020 --> 00:55:05,660 siz, sonra öz şey bunu ki, dəyişdirmək üçün x və y surəti verən 866 00:55:05,660 --> 00:55:09,080 ancaq əslində x və y özü dəyişən heç edirik. 867 00:55:09,080 --> 00:55:12,880 Siz kodu də işareti ilə əvvəl bu xarakterli görməmişəm Belə ki, hətta, 868 00:55:12,880 --> 00:55:15,860 yalnız bir tahmin edir. Bu işareti görünür, nə edir? 869 00:55:15,860 --> 00:55:17,890 [Tələbə] ünvan edir. >> Ünvan edir. 870 00:55:17,890 --> 00:55:21,160 Belə ki işareti mənə x ünvanı vermək deyib. 871 00:55:21,160 --> 00:55:25,590 Olduğu Kim bilir? Bu 123 olmaq olur. Mən qayğı yoxdur. Just me x ünvan verir. 872 00:55:25,590 --> 00:55:28,340 Və y me y ünvan vermək deməkdir. 873 00:55:28,340 --> 00:55:34,450 Və hekayə şəkil ilə mükəmməl uyğun olduğunu nöqtədə bir an əvvəl çəkdi. 874 00:55:34,450 --> 00:55:38,310 >> Mən ilk bu təlim başladı Mən, mənim üçün əlbəttə ki, göstəricilər qəbul edəcəyik 875 00:55:38,310 --> 00:55:40,570 mütləq ətrafında fikrimi kesmek üçün ən ağır şeyi biri idi. 876 00:55:40,570 --> 00:55:43,760 Lakin, biz hər şeyi bu cür oynayan saxlamaq xüsusən, həyata 877 00:55:43,760 --> 00:55:48,030 siz bu super sadə sort üçün qırmaq əgər intellektual problemləri maraqsız 878 00:55:48,030 --> 00:55:52,270 yalnız göstəricilər ilə qarışıqlıq bir çox ətrafında cavab ədəd hərəkət 879 00:55:52,270 --> 00:55:56,590 həqiqətən bu çox əsas mexanika əldə edilə bilər. 880 00:55:56,590 --> 00:55:59,070 Burada bir ünvan var. Ulduz var gedin. 881 00:55:59,070 --> 00:56:03,830 Və ya əksinə, burada bir işareti var. Ünvan həqiqətən nə anlamaq. 882 00:56:03,830 --> 00:56:06,270 Bütün hüquqlar. 883 00:56:06,270 --> 00:56:09,000 Belə ki, bu yaddaş bütün gəlir? 884 00:56:09,000 --> 00:56:12,360 Biz bu şəkil bir neçə dəfə tərtib etdik və mən buna qayıtmaq lazımdır perspektivli saxlamaq 885 00:56:12,360 --> 00:56:14,920 lakin burada kompüter yaddaş təmsil edir 886 00:56:14,920 --> 00:56:17,420 ki, burada bir az daha etiketli bizim Kara Tahta çox var. 887 00:56:17,420 --> 00:56:21,590 Üst mətni seqment proqram ilə bağlı nə təmsil? 888 00:56:21,590 --> 00:56:26,090 [Işitilemez tələbə cavab] >> Bağışlayın? Yenə deyirəm. 889 00:56:26,090 --> 00:56:28,660 [Tələbə] aktual proqramı. >> Faktiki proqramı. 890 00:56:28,660 --> 00:56:32,430 >> Bu 0s və C kodu yazılı sonra tərtib ki, 1s və sonra qaçaraq cingilti Belə 891 00:56:32,430 --> 00:56:35,910 və 0s və 1s başa yaradan yaddaş var tucked olmaq 892 00:56:35,910 --> 00:56:38,570 Siz ikiqat Mac və ya PC bir icon basın zaman, çünki 893 00:56:38,570 --> 00:56:43,010 və ya 0s və 1s disk, sizin sətirinə mario kimi bir funksiyanı çalıştırın 894 00:56:43,010 --> 00:56:45,700 kompüter onları manipulyasiya ki, yaddaş instantly almaq 895 00:56:45,700 --> 00:56:47,540 və daha tez yerinə. 896 00:56:47,540 --> 00:56:50,880 Belə başlatılmış data və uninitialized data, biz bu barədə çox danışmaq olmaz 897 00:56:50,880 --> 00:56:52,420 lakin bu yalnız qlobal dəyişənlər var. 898 00:56:52,420 --> 00:56:54,710 Başlatılmış siz dəyərlər verdi ki, qlobal dəyişənlər deməkdir; 899 00:56:54,710 --> 00:56:59,300 uninitialized siz hələ dəyərlər vermədi ki, qlobal dəyişənlər deməkdir. 900 00:56:59,300 --> 00:57:01,900 Sonra mən tamamilə mənim əl dalğa olacaq bu mühit değişkenleri var 901 00:57:01,900 --> 00:57:04,860 lakin onlar var və istifadəçi adı kimi mağazalar şeylər 902 00:57:04,860 --> 00:57:08,090 aşağı səviyyəli məlumat və digər növ. 903 00:57:08,090 --> 00:57:12,880 Lakin yaddaş nin planının juiciest ədəd yığını və yığın adlanan bu şey. 904 00:57:12,880 --> 00:57:17,470 Daha yığını, aydın olmaq, funksiyaları deyilir zaman istifadə ki, yaddaş 905 00:57:17,470 --> 00:57:19,710 yerli dəyişənlər var zaman 906 00:57:19,710 --> 00:57:22,120 və zaman parametrləri ətrafında orada qəbul olunur. 907 00:57:22,120 --> 00:57:24,490 Ki, bütün yığını olur. 908 00:57:24,490 --> 00:57:29,570 Bu yığın biz danışdıq, lakin yığın istifadə edən bir tahmin etmək deyil. 909 00:57:31,120 --> 00:57:32,690 Yaddaş Bir başqa yığın. 910 00:57:32,690 --> 00:57:36,620 Bu üst burada çəkiləcək olur, ancaq bir ixtiyari şəkilli konvensiya var. 911 00:57:36,620 --> 00:57:41,670 Kim yəqin həftə yığın olan yaddaş istifadə edir? 912 00:57:41,670 --> 00:57:44,830 Bu texniki siz lakin dolayı var. >> [Tələbə] GetString. 913 00:57:44,830 --> 00:57:47,950 GetString və malloc. Belə ki, burada əsas fərq var. 914 00:57:47,950 --> 00:57:51,300 >> Siz yaddaş lazımdır, yalnız bir dəyişən bəyan edir ki, son bir neçə həftə bilirik. 915 00:57:51,300 --> 00:57:54,560 Yaddaş çox ehtiyac varsa, sağ daxilində funksiyası bir sıra bəyan edir. 916 00:57:54,560 --> 00:57:59,620 Siz yerli daxili funksiyaları dəyişənlərin elan Lakin əgər biz qarşıya saxlanılır sorunu edir 917 00:57:59,620 --> 00:58:05,340 kimi tezliklə funksiyası yekunları kimi, nə yaddaş və o dəyişənlər olur? 918 00:58:05,340 --> 00:58:09,620 Bu yalnız sort sağ, sizin artıq var? Bu yalnız konseptual növ yox. 919 00:58:09,620 --> 00:58:13,950 Bu açıq-aydın, fiziki hələ, ancaq artıq istifadə etmək hüququ var. 920 00:58:13,950 --> 00:58:17,160 Həyat funksiyaları yazmaq istəyirsinizsə, bu açıq-aydın problemlidir 921 00:58:17,160 --> 00:58:20,440 həqiqətən yaddaş ayrılması və dərhal geri vermir ki. 922 00:58:20,440 --> 00:58:24,180 Point halda: həyatında GetString məqsədi əvvəlcədən heç bir fikir var ki, 923 00:58:24,180 --> 00:58:26,390 necə klaviatura ilə yazın gedirəm bir simli böyük, 924 00:58:26,390 --> 00:58:30,390 lakin bu David ya salam keçirilməsi yaddaş ayrılması etmək üçün var 925 00:58:30,390 --> 00:58:32,860 istifadəçi daxil yazdığınız bilər ki, ya bütün esse 926 00:58:32,860 --> 00:58:35,280 Belə GetString malloc istifadə edir. 927 00:58:35,280 --> 00:58:38,910 Malloc səbəbdən heç yığını istifadə edilməlidir; 928 00:58:38,910 --> 00:58:40,770 əvəzinə yığın adlanan bu şey istifadə edir. 929 00:58:40,770 --> 00:58:44,430 Yaddaş haqqında müxtəlif bir şey yoxdur. Bu sürətli və ya yavaş və ya bu kimi bir şey deyil. 930 00:58:44,430 --> 00:58:46,570 Bu fərqli yeri yalnız fiziki deyil. 931 00:58:46,570 --> 00:58:50,120 >> Amma qayda olduğunu yığın ayrılmış olan yaddaş 932 00:58:50,120 --> 00:58:56,180 zəng qədər uzaq qəbul heç vaxt - bir tahmin etmək - pulsuz. 933 00:58:56,180 --> 00:59:00,510 Əksinə, hər hansı bir yaddaş yalnız bir sıra elan yığını haqqında xahiş 934 00:59:00,510 --> 00:59:03,320 və ya həftə məşğul olduğunuz kimi bir dəyişən elan 935 00:59:03,320 --> 00:59:05,640 ki ismarıcları yığını qədər çatır. 936 00:59:05,640 --> 00:59:09,550 Və o rarer hallarda vaxt böyük 90% çalışır, ancaq 937 00:59:09,550 --> 00:59:12,470 siz yaddaş ayrılması və onun ətrafında saxlamaq istədiyiniz 938 00:59:12,470 --> 00:59:14,730 sonra malloc kimi bir funksiyası istifadə etmək lazımdır. 939 00:59:14,730 --> 00:59:19,370 Yoxsa öz növbəsində malloc istifadə edən GetString kimi bir funksiyası istifadə. 940 00:59:19,370 --> 00:59:23,300 Bu qırmaq və sonra Binky bir peek bilər harada görmək edək. 941 00:59:23,300 --> 00:59:25,820 Biz gələcəkdə də ki, geri qayıtmaq lazımdır. 942 00:59:25,820 --> 00:59:29,270 Burada ilk 2 xətləri nə bir super sadə proqram var? 943 00:59:29,270 --> 00:59:33,460 İngilis dili, kod bu ilk 2 xətləri daxilində əsas nə etməliyəm? 944 00:59:33,460 --> 00:59:35,600 [Işitilemez tələbə cavab] 945 00:59:35,600 --> 00:59:37,880 Diqqətli. Mənə x və ya y ünvanı vermir. 946 00:59:37,880 --> 00:59:41,840 [Tələbə] ints üçün göstəricilər verir. >> Yaxşı. Integers mənə 2 göstəricilərinə verin. 947 00:59:41,840 --> 00:59:45,130 Başqa sözlə, mənə bu gün rəsm saxlamaq yaddaş 2 chunks vermək 948 00:59:45,130 --> 00:59:46,950 baxmayaraq mən meydan kimi, indi silinə. 949 00:59:46,950 --> 00:59:50,000 Mənə yaddaş 2 chunks verin, bir x adlı bir y çağırıb - 950 00:59:50,000 --> 00:59:54,320 əvvəllər mən onları s t adlanır - və yaddaş ki, yığın növü nədir? 951 00:59:54,320 --> 00:59:57,160 Bu ünvan saxlamaq olacaq. 952 00:59:57,160 --> 00:59:59,110 Bu növü int * var. 953 00:59:59,110 --> 01:00:01,630 >> Belə ki, bir int üçün ünvan nəhayət, x yaşayacaqdır 954 01:00:01,630 --> 01:00:03,860 bir int üçün ünvan nəhayət, y yaşayacaqdır 955 01:00:03,860 --> 01:00:08,460 lakin əvvəlcə, x və y daxilində nə var? Kim bilir? Zibil dəyərlər. 956 01:00:08,460 --> 01:00:10,180 Bu göstəricilər ilə heç bir əlaqəsi yoxdur. 957 01:00:10,180 --> 01:00:12,720 Biz orada həqiqətən nə bilir orada bir şey qoymaq yoxsa? 958 01:00:12,720 --> 01:00:18,950 İndi x. Burada olur? X bir pointer Çünki indi legit edir. Bu int * var. 959 01:00:18,950 --> 01:00:21,870 Mən x yaddaş bəzi yığın üçün ünvan bilər deməkdir. 960 01:00:21,870 --> 01:00:25,120 Malloc nə geri edir? Mükəmməl, o, ünvanlarını qaytarır 961 01:00:25,120 --> 01:00:28,510 yaddaş bütün yığın ilk byte və ünvanı. 962 01:00:28,510 --> 01:00:31,140 Bu yəqin cihaz da, məsələn, neçə bayt ayrılması olunur? 963 01:00:31,140 --> 01:00:33,510 Bir int həcmi nedir? 4. 964 01:00:33,510 --> 01:00:36,600 Siz həftə 1 geri düşünüyorsanız, bu, həmişə yadda mühüm super deyil 965 01:00:36,600 --> 01:00:38,870 bu halda o, 4 bayt bilmək faydalıdır. 966 01:00:38,870 --> 01:00:41,770 Belə ki, bu yığın 4 bayt üzrə bölüşdürülməsi olunur 967 01:00:41,770 --> 01:00:46,110 və özbaşına mənə ilk bir ünvan qaytarılması oldu. 968 01:00:46,110 --> 01:00:47,700 İndi x nə edir? 969 01:00:47,700 --> 01:00:52,200 A * x = 42 nə edir? 970 01:00:52,200 --> 01:00:57,150 Biz bir zibil dəyəri ilə bu kimi görünür hansı x, var, hekayə bu nöqtədə edin 971 01:00:57,150 --> 01:01:04,120 bu artıq xətt 3-I 4 bayt ayrılan sonra, indi bəzi zibil dəyəri y edir. 972 01:01:04,120 --> 01:01:06,950 Bu şəkil mahiyyətcə bu kimi görünür. 973 01:01:06,950 --> 01:01:12,010 Bu ixtiyari ünvan 123 əgər və ya daha dəqiq desək, bu, bizim hekayə indi kimi görünür. 974 01:01:12,010 --> 01:01:23,940 * X = 42 indi nə deməkdir? Ünvan 123 getmək və sayı 42 qoymaq deməkdir. 975 01:01:23,940 --> 01:01:26,220 Biz strings məşğul deyilik, çünki bu xətlər çəkmək lazım deyil. 976 01:01:26,220 --> 01:01:29,480 >> Mən bu kimi yazılı və yalnız nümayiş xatirinə olmalıdır 977 01:01:29,480 --> 01:01:33,240 Bir int tipli 42, 4 bayt yer çox tutur. 978 01:01:33,240 --> 01:01:35,960 Belə ki, orada baş verən nə, ancaq bir problem indi yoxdur. 979 01:01:35,960 --> 01:01:40,580 * Y = 13. Burada nə olacaq? 980 01:01:40,580 --> 01:01:46,470 Bu problem bizim sadələşdirilmiş dünyada * y yalnız y də ünvanına getmək deməkdir. 981 01:01:46,470 --> 01:01:48,590 Y nedir? Bəzi zibil dəyəri. 982 01:01:48,590 --> 01:01:53,150 Belə ki, zibil dəyəri kimi dəli bir şey 5551212 edir ki, fərz edək. 983 01:01:53,150 --> 01:01:56,750 * Y vasitələri 5551212 müraciət gedin. 984 01:01:56,750 --> 01:02:00,450 Yəni burada artıq kimi. Bu, məsələn, mövcud deyil. 985 01:02:00,450 --> 01:02:05,310 Belə * y burada 13 çəkmək çalışıram 13 vasitəsilə alır. Bu mövcud deyil. 986 01:02:05,310 --> 01:02:08,790 Mən yazı taxtası seqmentində aştınız. Mən nə etməliyəm? 987 01:02:08,790 --> 01:02:14,930 Mən yaddaş qoymaq çalışıram Çünki sirli mesaj seqmentasiya günah 988 01:02:14,930 --> 01:02:19,470 mövcud deyil ki, bir yerdə 13 kimi bir dəyəri. 989 01:02:19,470 --> 01:02:23,900 Proqramın qalan deyil ki nöqtə qədər tamam, lakin iş bilər. 990 01:02:23,900 --> 01:02:25,350 Belə ki, bu hekayə izah edək. 991 01:02:25,350 --> 01:02:27,830 Biz ki, hex danışıb sonra qayıda bilərsiniz. 992 01:02:27,830 --> 01:02:30,290 Bu geri Binky adlanan bu şey ilə bağlamaq edək 993 01:02:30,290 --> 01:02:33,710 olan geri, claymation oynayan evdə oturan Stanford professor 994 01:02:33,710 --> 01:02:36,380 məhz həmin proqram hekayə demək. 995 01:02:36,380 --> 01:02:40,580 Bu, sadəcə uzun təxminən 3 dəqiqə var. Burada Binky var. 996 01:02:40,580 --> 01:02:45,030 [Video kişi natiq] Hey Binky, ardınca gedən. Bu göstərici əyləncə üçün vaxt var. 997 01:02:45,030 --> 01:02:50,080 [Binky] Nə olub? Göstəricilər haqqında məlumat əldə edin? Oh, goody! 998 01:02:50,080 --> 01:02:53,700 [Kişi natiq] Bəli, başlamaq üçün, biz bir neçə göstəricilərinə lazım olacaq danışarlar. 999 01:02:53,700 --> 01:02:57,890 >> [Binky] Okay. Bu kod integers qeyd edə bilərsiniz 2 göstəricilərinə ayırır. 1000 01:02:57,890 --> 01:03:02,220 [Kişi natiq] Okay. Yaxşı, mən 2 göstəricilərinə görmək, lakin onlar bir şey işarə etmək görünmür. 1001 01:03:02,220 --> 01:03:05,550 [Binky] doğru. İlkin göstəricilər bir şey qeyd etmir. 1002 01:03:05,550 --> 01:03:09,270 Onlar qeyd şeyi pointees çağırdı və onlara müəyyən bir ayrı addım deyil. 1003 01:03:09,270 --> 01:03:12,330 [Kişi natiq] Oh, sağ, sağ. Hesab edirəm ki, bilirdi. Bu pointees ayrı. 1004 01:03:12,330 --> 01:03:15,630 Er, belə necə bir pointee ayrılması edirsiniz? 1005 01:03:15,630 --> 01:03:21,510 [Binky] Okay. Bu kod yeni tam pointee ayırır və bu hissəsi x onu qeyd etmək edir. 1006 01:03:21,510 --> 01:03:23,500 [Kişi natiq] Hey, daha yaxşı görünür. 1007 01:03:23,500 --> 01:03:26,030 Belə ki, bir şey etmək. >> [Binky] Okay. 1008 01:03:26,030 --> 01:03:30,300 Mən dereference göstəricisidir x onun pointee daxil sayı 42-saxlamaq üçün yatıracağız. 1009 01:03:30,300 --> 01:03:34,410 Bu oyun mən dereferencing mənim sehrli wand lazımdır. 1010 01:03:34,410 --> 01:03:38,610 [Kişi natiq] dereferencing Sizin sehrli wand? Bu harika. 1011 01:03:38,610 --> 01:03:44,230 [Binky] Bu kodu kimi görünür. Mən sayı qurmaq və bilərsiniz ... [Səs yaratma] 1012 01:03:44,230 --> 01:03:46,100 Baxmaq [kişi natiq] Hey, orada gedir. 1013 01:03:46,100 --> 01:03:50,990 Belə x bir dereference edir, ox onun pointee daxil olmaq üçün aşağıdakı 1014 01:03:50,990 --> 01:03:53,230 bu halda orada 42 mağaza. 1015 01:03:53,230 --> 01:03:57,630 Hey, digər göstərici, y vasitəsilə 13 saylı saxlamaq üçün istifadə edin. 1016 01:03:57,630 --> 01:04:03,250 [Binky] Okay. Mən y burada artıq getmək və 13 saylı qurmaq almaq lazımdır 1017 01:04:03,250 --> 01:04:08,360 və sonra yalnız dereferencing və çubuq almaq ... [Cızıltı səs] Whoa! 1018 01:04:08,360 --> 01:04:10,980 [Kişi natiq] hey Oh ki, işləmədi. 1019 01:04:10,980 --> 01:04:14,870 >> Binky De, mən y dereferencing yaxşı bir fikir olduğunu düşünmürəm 1020 01:04:14,870 --> 01:04:17,880 bu pointee yaradılması ayrı bir addımdır, çünki 1021 01:04:17,880 --> 01:04:19,850 və biz heç bunu düşünmürəm. 1022 01:04:19,850 --> 01:04:21,770 [Binky] Hmm, yaxşı bir nöqtəyə. 1023 01:04:21,770 --> 01:04:26,640 [Kişi natiq] Bəli. Biz göstərici y ayrılan amma pointee qeyd etmək müəyyən vaxt. 1024 01:04:26,640 --> 01:04:28,780 [Binky] Hmm, çox müşahidəçi. 1025 01:04:28,780 --> 01:04:30,690 [Kişi natiq] Hey, siz Binky, orada yaxşı arıyorsanız. 1026 01:04:30,690 --> 01:04:34,160 Bunu düzeltmek olar ki x eyni pointee üçün y bal? >> [Binky] Sure. 1027 01:04:34,160 --> 01:04:37,100 Mən göstərici təyinatlı mənim sehrli wand istifadə edəcəyik. 1028 01:04:37,100 --> 01:04:39,070 [Kişi natiq] əvvəl bir problem olacaq ki? 1029 01:04:39,070 --> 01:04:40,840 [Binky] Xeyr, bu pointees toxunmaq deyil. 1030 01:04:40,840 --> 01:04:44,780 Bu yalnız başqa eyni şey qeyd etmək bir pointer dəyişir. [Səs yaratma] 1031 01:04:44,780 --> 01:04:48,570 [Kişi natiq] Oh, mən görürəm. X eyni yerə İndi y xal. 1032 01:04:48,570 --> 01:04:51,140 Beləliklə, gözləyin. İndi y müəyyən edilir. Bu pointee var. 1033 01:04:51,140 --> 01:04:54,520 Beləliklə, siz 13 göndərmək üçün yenidən dereferencing və çubuq cəhd edə bilərsiniz. 1034 01:04:54,520 --> 01:04:58,130 [Binky] Ah, tamam. Burada gedir. [Səs yaratma] 1035 01:04:58,130 --> 01:05:01,250 [Kişi natiq] Hey ki, baxın. İndi y işləri dereferencing. 1036 01:05:01,250 --> 01:05:05,200 The göstəricilərinə bir pointee mübadiləsi, çünki, onlar həm 13 görürük. 1037 01:05:05,200 --> 01:05:06,910 [Binky] Bəli, mübadiləsi. Neyse. 1038 01:05:06,910 --> 01:05:08,880 >> Belə ki, indi yerlərdə keçid gedir? 1039 01:05:08,880 --> 01:05:11,420 [Kişi natiq] göz Oh, biz vaxt həyata edirik. >> [Binky] Amma - 1040 01:05:11,420 --> 01:05:13,880 [Kişi natiq] 3 pointer qaydaları Just xatırlayıram. 1041 01:05:13,880 --> 01:05:18,630 Sayı 1, əsas struktur bir göstərici var və bu pointee üzərində göstərir. 1042 01:05:18,630 --> 01:05:23,120 Lakin göstərici və pointee ayrı-ayrı və ümumi səhv bir pointer qurmaq üçün 1043 01:05:23,120 --> 01:05:25,680 lakin pointee vermək unutmaq. 1044 01:05:25,680 --> 01:05:29,580 Sayı 2, pointer dereferencing göstəricisidir başlayır və üzərində arrow aşağıdakı 1045 01:05:29,580 --> 01:05:31,060 onun pointee daxil olmaq üçün. 1046 01:05:31,060 --> 01:05:34,340 Biz bütün Bildiyiniz kimi bir pointee olarsa, bu, yalnız işləri 1047 01:05:34,340 --> 01:05:36,460 hansı növ sayı 1 istisna geri alır. 1048 01:05:36,460 --> 01:05:39,870 Sayı 3, pointer tapşırıq bir pointer edir və dəyişir 1049 01:05:39,870 --> 01:05:42,390 başqa göstərici eyni pointee qeyd etmək. 1050 01:05:42,390 --> 01:05:45,890 Belə ki, tapşırıq sonra, 2 göstəricilərinə eyni pointee qeyd edəcək. 1051 01:05:45,890 --> 01:05:47,800 Bəzən paylaşım deyirlər. 1052 01:05:47,800 --> 01:05:50,910 >> Və həqiqətən var hamısı. Indi Güle güle. 1053 01:05:50,910 --> 01:05:55,840 Bu Binky edir. Bu CS50 edir. Gələn həftə görəcəksiniz. [Alqış] 1054 01:05:55,840 --> 01:05:59,000 >> [CS50.TV]