1 00:00:00,000 --> 00:00:06,030 >> [MUSIC PLAYING] 2 00:00:06,030 --> 00:00:08,390 >> DOUG LLOYD: Pointers, burada biz. 3 00:00:08,390 --> 00:00:11,080 Bu yəqin ki, gedir ən çətin mövzusu 4 00:00:11,080 --> 00:00:12,840 biz CS50 haqqında danışmaq ki. 5 00:00:12,840 --> 00:00:15,060 Və oxumaq sonra əgər göstəricilər haqqında bir şey 6 00:00:15,060 --> 00:00:19,080 bir az ola bilər əvvəl qorxuducu Bu video gedən. 7 00:00:19,080 --> 00:00:21,260 Bu göstəricilər doğru siz imkanı verir yoxdur 8 00:00:21,260 --> 00:00:23,740 bəlkə qıymaq olduqca pis siz olduğunuzda 9 00:00:23,740 --> 00:00:27,450 dəyişənlərin və məlumat ilə iş, və proqram qəza səbəb. 10 00:00:27,450 --> 00:00:30,490 Lakin onlar, həqiqətən, həqiqətən faydalı istəyirik və onlar bizə həqiqətən böyük yol verir 11 00:00:30,490 --> 00:00:33,340 geri məlumat keçmək və irəli funksiyaları arasında, 12 00:00:33,340 --> 00:00:35,490 ki, biz başqa bunu etmək iqtidarında deyilik. 13 00:00:35,490 --> 00:00:37,750 >> Və belə ki, biz, həqiqətən, qatar burada etmək istəyirəm 14 00:00:37,750 --> 00:00:41,060 Siz yaxşı göstərici nizam-intizam var, belə ki, Siz səmərəli göstəricilərinə istifadə edə bilərsiniz ki, 15 00:00:41,060 --> 00:00:43,850 Sizin proqramları daha yaxşı etmək. 16 00:00:43,850 --> 00:00:48,220 Dediyim kimi göstəricilər bizə müxtəlif vermək yol funksiyaları arasında data keçmək. 17 00:00:48,220 --> 00:00:50,270 İndi geri əgər bir əvvəlki video, zaman 18 00:00:50,270 --> 00:00:53,720 biz söhbət dəyişən daxilində, mən qeyd 19 00:00:53,720 --> 00:01:00,610 ki, biz arasında keçir ki, bütün data C funksiyaları dəyəri tərəfindən qəbul edilir. 20 00:01:00,610 --> 00:01:03,070 Mən ki, istifadə ola bilər müddətli Mən demək nə 21 00:01:03,070 --> 00:01:07,170 biz məlumatların surətlərini keçən idi. 22 00:01:07,170 --> 00:01:12,252 Biz bir funksiyası dəyişən keçmək zaman, biz, həqiqətən, dəyişən keçən deyilik 23 00:01:12,252 --> 00:01:13,210 funksiyası, sağ? 24 00:01:13,210 --> 00:01:17,670 Biz surəti keçən edirik funksiyası ki, məlumat. 25 00:01:17,670 --> 00:01:20,760 funksiyası nə edər və bəzi dəyəri hesablayır, 26 00:01:20,760 --> 00:01:23,180 və bəlkə ki, dəyəri istifadə onu geri verir. 27 00:01:23,180 --> 00:01:26,700 >> Bir istisna var idi dəyəri keçən bu qayda, 28 00:01:26,700 --> 00:01:31,210 və biz nə üçün geri gəlmək lazımdır Bu video sonra bir az. 29 00:01:31,210 --> 00:01:34,880 Biz əvəzinə göstəricilərinə istifadə əgər dəyişənlər istifadə, 30 00:01:34,880 --> 00:01:38,180 və ya dəyişənlər istifadə əvəzinə özləri və ya dəyişənlərin surətləri, 31 00:01:38,180 --> 00:01:43,790 biz indi ətrafında dəyişənlərin keçə bilər fərqli bir şəkildə funksiyaları arasında. 32 00:01:43,790 --> 00:01:46,550 Bu etmək əgər o deməkdir ki, bir funksiyası bir dəyişiklik, 33 00:01:46,550 --> 00:01:49,827 ki, dəyişiklik həqiqətən olacaq fərqli bir funksiyası təsir. 34 00:01:49,827 --> 00:01:52,160 Yenə də, bu bir şeydir ki, Biz əvvəllər edə bilmədim 35 00:01:52,160 --> 00:01:56,979 və heç dəyişdirmək üçün cəhd varsa funksiyası iki dəyişənlərin dəyəri, 36 00:01:56,979 --> 00:01:59,270 Bu problem fark etdik qədər sürünən sort, sağ? 37 00:01:59,270 --> 00:02:04,340 >> Biz X və Y və biz dəyişdirmək istəyirsinizsə svop adlı funksiyası onları keçmək 38 00:02:04,340 --> 00:02:08,680 funksiyası daxilində dəyişdirmək dəyişənlər mübadiləsi dəyərlər yoxdur. 39 00:02:08,680 --> 00:02:12,600 Bir iki olur, iki olur bir, lakin biz, həqiqətən, yoxdur 40 00:02:12,600 --> 00:02:16,890 orijinal bir şey dəyişdirmək funksiyası zəng edir. 41 00:02:16,890 --> 00:02:19,550 Çünki biz bilməz, biz etdiyiniz yalnız Onların nüsxə ilə işləyir. 42 00:02:19,550 --> 00:02:24,760 Baxmayaraq ki göstəricilər ilə, biz əslində bir funksiyası X və Y keçir. 43 00:02:24,760 --> 00:02:26,960 Ki, funksiyası edə bilərsiniz onlarla bir şey. 44 00:02:26,960 --> 00:02:29,250 Və bu dəyişənlər dəyərlər həqiqətən dəyişə bilərsiniz. 45 00:02:29,250 --> 00:02:33,710 Belə ki, kifayət qədər bir dəyişiklik var data ilə işləmək üçün qabiliyyəti. 46 00:02:33,710 --> 00:02:36,100 >> Biz daxil dalış əvvəl göstəricilər, mən bu dəyər hesab edirəm 47 00:02:36,100 --> 00:02:38,580 bir neçə dəqiqə alaraq burada geri əsasları gedin. 48 00:02:38,580 --> 00:02:41,000 Və necə bir göz var kompüter yaddaş işləri 49 00:02:41,000 --> 00:02:45,340 Bu iki subyektləri gedir çünki həqiqətən olduqca qarşılıqlı olmalıdır. 50 00:02:45,340 --> 00:02:48,480 Siz yəqin bilirsiniz ki, Sizin kompüter sistemi 51 00:02:48,480 --> 00:02:51,310 Bir sabit və ya bəlkə bir bərk dövlət sürücü, 52 00:02:51,310 --> 00:02:54,430 fayl storage yeri bir növ. 53 00:02:54,430 --> 00:02:57,950 Bu yerdə adətən var 250 gigabayt məhəllə 54 00:02:57,950 --> 00:02:59,810 İndi terabayt bəlkə bir neçə. 55 00:02:59,810 --> 00:03:02,270 Və harada bütün sizin faylları nəticədə, yaşamaq 56 00:03:02,270 --> 00:03:04,870 Sizin kompüter bağlamaq hətta off, siz onu geri bilər 57 00:03:04,870 --> 00:03:09,190 və sizin faylları var tapa bilərsiniz daha sistem reboot zaman. 58 00:03:09,190 --> 00:03:14,820 Amma bir sabit disk drive kimi disk sürücüler, bir HDD və ya bərk dövlət sürücü, bir SSD, 59 00:03:14,820 --> 00:03:16,050 yalnız storage var. 60 00:03:16,050 --> 00:03:20,400 >> Biz, həqiqətən, bir şey edə bilməz sabit disk olan məlumatlar, 61 00:03:20,400 --> 00:03:22,080 və ya bərk dövlət sürücü. 62 00:03:22,080 --> 00:03:24,950 Həqiqətən dəyişdirmək üçün məlumat və ya ətrafında hərəkət, 63 00:03:24,950 --> 00:03:28,800 biz hərəkət etmək lazımdır RAM, rasgele erişim yaddaşını. 64 00:03:28,800 --> 00:03:31,170 İndi RAM, bir çox kompüter az. 65 00:03:31,170 --> 00:03:34,185 Siz haradasa ola bilər 512 megabayt məhəllə 66 00:03:34,185 --> 00:03:38,850 Eski kompüter varsa, bəlkə iki, dörd, səkkiz, 16, 67 00:03:38,850 --> 00:03:41,820 bəlkə hətta bir az daha RAM gigabayt. 68 00:03:41,820 --> 00:03:46,390 Belə ki, daha kiçik, lakin ki burada uçucu data bütün mövcuddur. 69 00:03:46,390 --> 00:03:48,270 Biz hər şeyi dəyişə bilərsiniz harada. 70 00:03:48,270 --> 00:03:53,350 Amma biz kompüter söndürmək zaman, RAM məlumatların bütün məhv edilir. 71 00:03:53,350 --> 00:03:57,150 >> Biz sabit disk lazımdır nə ki, var Bunun daha qalıcı yeri, 72 00:03:57,150 --> 00:03:59,720 Bu exists- ki olardı həqiqətən, pis əgər hər dəfə biz 73 00:03:59,720 --> 00:04:03,310 bizim kompüter söndürüldükdə hər Bizim sistemində fayl məhv edilib. 74 00:04:03,310 --> 00:04:05,600 Beləliklə, biz RAM daxilində işləmək. 75 00:04:05,600 --> 00:04:09,210 Və hər dəfə bəhs edirik yaddaş, olduqca çox, CS50, 76 00:04:09,210 --> 00:04:15,080 biz RAM deyil, sabit disk söhbət edirik. 77 00:04:15,080 --> 00:04:18,657 >> Beləliklə, biz yaddaş şeyi hərəkət zaman, bu yer müəyyən tutur. 78 00:04:18,657 --> 00:04:20,740 Məlumat növləri Bütün biz iş etdik 79 00:04:20,740 --> 00:04:23,480 up müxtəlif almaq RAM yer məbləğlər. 80 00:04:23,480 --> 00:04:27,600 Belə ki, hər zaman tam yaratmaq yaddaş dəyişən dörd bytes 81 00:04:27,600 --> 00:04:30,750 belə ki, RAM kənara müəyyən edilir ki, tam ilə işləyə bilər. 82 00:04:30,750 --> 00:04:34,260 Siz tam elan edə bilər, dəyişdirmək, onu təyin 83 00:04:34,260 --> 00:04:36,700 artırılacağını bir dəyər 10 bir, belə ki, və s ilə. 84 00:04:36,700 --> 00:04:39,440 Baş lazımdır ki, bütün RAM, və dörd bayt almaq 85 00:04:39,440 --> 00:04:42,550 hər ilə işləmək üçün yaratmaq tam. 86 00:04:42,550 --> 00:04:45,410 >> Hər bir xarakter sizə yaratmaq bir byte olur. 87 00:04:45,410 --> 00:04:48,160 Bu kosmik yalnız nə qədər var Bir xarakter saxlamaq lazımdır. 88 00:04:48,160 --> 00:04:51,310 Hər float, bir real sayı, dörd bayt olur 89 00:04:51,310 --> 00:04:53,390 bir cüt var halda dəqiq üzən point 90 00:04:53,390 --> 00:04:56,510 sizə imkan verir sayı, Daha dəqiq və ya daha çox rəqəm ola 91 00:04:56,510 --> 00:04:59,300 Bu kəsir sonra dəqiq itirmədən, 92 00:04:59,300 --> 00:05:01,820 olan yaddaş səkkiz bayt almaq. 93 00:05:01,820 --> 00:05:06,730 Long longs, həqiqətən böyük integers, də yaddaş səkkiz bayt almaq. 94 00:05:06,730 --> 00:05:09,000 Neçə yaddaş bytes strings qədər alır? 95 00:05:09,000 --> 00:05:12,990 Yaxşı ki, sözügedən bir pin qoymaq bildirin İndi, lakin biz geri gəlmək lazımdır. 96 00:05:12,990 --> 00:05:17,350 >> Belə ki, geri yaddaş bu ideya kimi byte ölçülü hüceyrələrinin böyük array. 97 00:05:17,350 --> 00:05:20,871 Bu, həqiqətən, bütün var, bu hüceyrələri yalnız bir böyük array, 98 00:05:20,871 --> 00:05:23,370 yalnız hər hansı digər array kimi ki, Siz tanış olduğunuz və görmək, 99 00:05:23,370 --> 00:05:26,430 hər element istisna olmaqla, bir byte genişdir. 100 00:05:26,430 --> 00:05:30,030 Və yalnız bir sıra kimi, hər element bir ünvan var. 101 00:05:30,030 --> 00:05:32,120 Bir sıra hər element indeksi, və biz var 102 00:05:32,120 --> 00:05:36,302 sözdə bunu index istifadə edə bilərsiniz sıra təsadüfi giriş. 103 00:05:36,302 --> 00:05:38,510 Biz başlamaq üçün yoxdur serialın əvvəlində, 104 00:05:38,510 --> 00:05:40,569 hər vasitəsilə təkrarlamaq bir element onların, 105 00:05:40,569 --> 00:05:41,860 biz aradığınız nə tapa bilərsiniz. 106 00:05:41,860 --> 00:05:45,790 Biz yalnız mən almaq istəyirəm, demək olar 15 element və ya 100 element. 107 00:05:45,790 --> 00:05:49,930 Və yalnız ki sayı keçə bilər və aradığınız dəyər almaq. 108 00:05:49,930 --> 00:05:54,460 >> Eynilə hər yeri yaddaşında bir ünvan var. 109 00:05:54,460 --> 00:05:57,320 Belə ki, yaddaş bilər bu kimi bir şey. 110 00:05:57,320 --> 00:06:01,420 Burada bir çox kiçik bir yığın var yaddaş, bu yaddaş 20 bytes edir. 111 00:06:01,420 --> 00:06:04,060 ilk 20 bytes, çünki mənim alt var müraciət 112 00:06:04,060 --> 00:06:08,890 3, 2, 1, 0, və belə 19 qədər bütün yol. 113 00:06:08,890 --> 00:06:13,190 Mən dəyişənlərin elan zaman Mən onlarla iş başlamaq zaman, 114 00:06:13,190 --> 00:06:15,470 sistem qurmaq niyyətindədir Mənim üçün kənara bəzi kosmik 115 00:06:15,470 --> 00:06:17,595 Bu yaddaş işləmək Mənim dəyişənlərin. 116 00:06:17,595 --> 00:06:21,610 Belə ki, char c paytaxtı bərabərdir, demək olar ki, H. Və nə baş verəcək? 117 00:06:21,610 --> 00:06:23,880 Yaxşı sistemi gedir Mənə bir byte üçün ayrılmış. 118 00:06:23,880 --> 00:06:27,870 Bu halda byte sayı seçdi Dörd ünvan dörd byte, 119 00:06:27,870 --> 00:06:31,310 və saxlamaq olacaq mənim üçün orada məktub kapital H. 120 00:06:31,310 --> 00:06:34,350 Mən sonra int sürəti demək olarsa limit bu, 65 bərabərdir 121 00:06:34,350 --> 00:06:36,806 kənara dörd müəyyən olacaq Mənim üçün yaddaş bytes. 122 00:06:36,806 --> 00:06:39,180 Və bu müalicə olacaq vahid kimi dörd bytes 123 00:06:39,180 --> 00:06:41,305 Biz çalışırıq çünki burada tam deyil. 124 00:06:41,305 --> 00:06:44,350 Və orada 65 saxlamaq olacaq. 125 00:06:44,350 --> 00:06:47,000 >> İndi artıq mən cür deyiləm bir yalan bir az izah 126 00:06:47,000 --> 00:06:50,150 sağ, biz bilirik ki, çünki kompüter ikili çalışır. 127 00:06:50,150 --> 00:06:53,100 Onlar başa düşmürəm mütləq kapital H nə 128 00:06:53,100 --> 00:06:57,110 və ya 65 onlar yalnız nə ikili, adet sıfır və olanları başa düşürük. 129 00:06:57,110 --> 00:06:59,000 Və belə ki, həqiqətən nə biz orada saxlanılması edirik 130 00:06:59,000 --> 00:07:03,450 məktub H və sayı 65 deyil əksinə ikili nümayəndəlikləri 131 00:07:03,450 --> 00:07:06,980 onların hansı baxmaq bu kimi kiçik bir şey. 132 00:07:06,980 --> 00:07:10,360 Və xüsusilə tam dəyişən kontekstində, 133 00:07:10,360 --> 00:07:13,559 Bu, yalnız daxil tüpürmək etmək niyyətində deyil bu bir dörd kimi müalicə etmək niyyətində deyil 134 00:07:13,559 --> 00:07:15,350 byte yığın mütləq bu, həqiqətən gedir 135 00:07:15,350 --> 00:07:19,570 dörd bir byte chunks kimi müalicə etmək, bu kimi bir şey ola bilər. 136 00:07:19,570 --> 00:07:22,424 Və hətta bu deyil tamamilə doğru və ya, 137 00:07:22,424 --> 00:07:24,840 adlı bir şey görə biz deyilik bir endianness, 138 00:07:24,840 --> 00:07:26,965 İndi almaq üçün gedir, lakin Siz merak etdiyiniz halda, 139 00:07:26,965 --> 00:07:29,030 Siz az qədər oxuya bilərsiniz və böyük endianness. 140 00:07:29,030 --> 00:07:31,640 Amma bu arqument naminə, Bu video naminə, 141 00:07:31,640 --> 00:07:34,860 Yalnız ki, güman edək əslində, necə 65 olardı 142 00:07:34,860 --> 00:07:36,970 təmsil olunacaq hər sistem yaddaş, 143 00:07:36,970 --> 00:07:38,850 Bu tamamilə doğru deyil, baxmayaraq ki. 144 00:07:38,850 --> 00:07:41,700 >> Amma həqiqətən, yalnız almaq imkan tamamilə bütün ikili xilas, 145 00:07:41,700 --> 00:07:44,460 və yalnız H kimi düşünmək 65, bir çox asandır 146 00:07:44,460 --> 00:07:47,900 kimi bu barədə düşünmək bir insan kimi. 147 00:07:47,900 --> 00:07:51,420 Bütün hüquqlar, bu da görünür ki, bəlkə bir az təsadüfi ki I've- mənim sistemi 148 00:07:51,420 --> 00:07:55,130 bytes 5, 6, 7, mənə vermədi, 8 tam saxlamaq üçün. 149 00:07:55,130 --> 00:07:58,580 Ki, bir səbəbi də var ki, biz indi almaq, lakin kifayət deyil 150 00:07:58,580 --> 00:08:00,496 bu nə demək kompüter burada edir 151 00:08:00,496 --> 00:08:02,810 yəqin ki, onun hissəsi yaxşı hərəkət edir. 152 00:08:02,810 --> 00:08:06,020 Mənə yaddaş vermək deyil mütləq geri geri. 153 00:08:06,020 --> 00:08:10,490 Indi bunu olacaq, baxmayaraq ki, Başqa bir string almaq istəyirsinizsə, 154 00:08:10,490 --> 00:08:13,080 soyadı adlanır və mən istəyirəm orada Lloyd qoymaq. 155 00:08:13,080 --> 00:08:18,360 Mən bir uyğun lazımdır gedirəm xarakteri, ki, hər bir məktub var 156 00:08:18,360 --> 00:08:21,330 bir tələb edir xarakteri, yaddaş bir byte. 157 00:08:21,330 --> 00:08:26,230 Mən array daxil Lloyd qoymaq bilər, belə ki, oxşar Mən getmək üçün olduqca yaxşı Ben? 158 00:08:26,230 --> 00:08:28,870 Nə itkin? 159 00:08:28,870 --> 00:08:31,840 >> Hər simli biz iş olduğunu unutmayın C backslash sıfır ilə başa çatır ilə, 160 00:08:31,840 --> 00:08:33,339 və biz, ya burada buraxmaq olmaz. 161 00:08:33,339 --> 00:08:36,090 Biz kənara bir byte təyin etmək lazımdır yaddaş belə ki keçirilməsi 162 00:08:36,090 --> 00:08:39,130 Bizim string sona çatdı zaman bilirik. 163 00:08:39,130 --> 00:08:41,049 Belə ki, yenə bu tənzimləmə yol şeyi 164 00:08:41,049 --> 00:08:42,799 yaddaş gücü görünür bir az təsadüfi ola 165 00:08:42,799 --> 00:08:44,870 lakin bu, həqiqətən necə Ən sistemləri nəzərdə tutulmuşdur. 166 00:08:44,870 --> 00:08:48,330 Multiples onları sıralamaq dörd, səbəblərdən yenidən 167 00:08:48,330 --> 00:08:50,080 biz lazım deyil ki, İndi almaq. 168 00:08:50,080 --> 00:08:53,060 Amma bu, belə ki, demək kifayətdir kodu bu üç xətləri sonra, 169 00:08:53,060 --> 00:08:54,810 Bu yaddaş kimi baxmaq bilər nə. 170 00:08:54,810 --> 00:08:58,930 Mən yaddaş yerlərdə ehtiyac varsa 4, 8, 12, mənim məlumat keçirmək üçün 171 00:08:58,930 --> 00:09:01,100 bu mənim yaddaş kimi baxmaq bilər nə. 172 00:09:01,100 --> 00:09:04,062 >> Və yalnız xüsusilə olmaq Burada zaman xırdaçı 173 00:09:04,062 --> 00:09:06,020 biz yaddaş söhbət edirik URL adətən biz 174 00:09:06,020 --> 00:09:08,390 belə hexadecimal notlari istifadə etmək. 175 00:09:08,390 --> 00:09:12,030 Belə ki, niyə biz bu bütün çevirmək deyil hexadecimal notation decimal-dan 176 00:09:12,030 --> 00:09:15,010 ki, yalnız adətən, çünki necə xatirəsinə baxın. 177 00:09:15,010 --> 00:09:17,880 Belə ki, əvəzinə vasitəsilə 0 olan 19, nə biz sıfır 178 00:09:17,880 --> 00:09:20,340 sıfır X1 üç vasitəsilə x sıfır. 179 00:09:20,340 --> 00:09:23,790 Həmin yaddaş 20 bytes var ki, biz və ya biz bu image baxırıq var 180 00:09:23,790 --> 00:09:25,540 burada. 181 00:09:25,540 --> 00:09:29,310 >> Belə ki, dedi olunur bütün edək ikinci yaddaş üz addım 182 00:09:29,310 --> 00:09:30,490 və geri göstəricilərinə. 183 00:09:30,490 --> 00:09:32,420 Burada ən əhəmiyyətli şey xatırlamaq 184 00:09:32,420 --> 00:09:34,070 biz göstəricilər ilə iş başlamaq kimi. 185 00:09:34,070 --> 00:09:36,314 A göstərici bir şey deyil Bir ünvan çoxdur. 186 00:09:36,314 --> 00:09:38,230 Mən bir daha, çünki demək lazımdır Bu, vacibdir 187 00:09:38,230 --> 00:09:42,730 bir göstərici bir şey deyil Bir ünvan çoxdur. 188 00:09:42,730 --> 00:09:47,760 Pointers yerlərdə ünvanları yaddaş dəyişənlərin yaşadığı. 189 00:09:47,760 --> 00:09:52,590 Bu inşallah olur ki, bilmədən asan az onlarla işləmək. 190 00:09:52,590 --> 00:09:54,550 Mən istəyirəm, başqa bir şey nə sort var 191 00:09:54,550 --> 00:09:58,510 vizual nə təmsil şemalar kodu müxtəlif xətləri ilə baş. 192 00:09:58,510 --> 00:10:00,660 Və biz bu bir neçə edəcəyik göstəricilər dəfə, 193 00:10:00,660 --> 00:10:03,354 və biz dinamik haqqında danışmaq zaman yaddaş ayrılması həmçinin. 194 00:10:03,354 --> 00:10:06,020 Mən bu diaqramları ki, hesab edirəm, çünki xüsusilə faydalı ola bilər. 195 00:10:06,020 --> 00:10:09,540 >> Mən, məsələn demək Belə ki, int k mənim kodu, nə baş verir? 196 00:10:09,540 --> 00:10:12,524 Well əsasən nədir baş Mən, mənim üçün ayrılmış yaddaş alıram 197 00:10:12,524 --> 00:10:14,690 lakin mən hətta kimi deyil Mən kimi bu barədə düşünmək 198 00:10:14,690 --> 00:10:16,300 bir qutu kimi bu barədə düşünmək istəyirəm. 199 00:10:16,300 --> 00:10:20,090 Mən bir qutusu var və bu rəngli yaşıl Çünki 200 00:10:20,090 --> 00:10:21,750 yaşıl qutuları integers bilər. 201 00:10:21,750 --> 00:10:23,666 Bu bir xarakter I idi mavi qutusu ola bilər. 202 00:10:23,666 --> 00:10:27,290 Mən yaradılması alıram Lakin mən həmişə deyirlər integers aça bilər bir qutusu 203 00:10:27,290 --> 00:10:28,950 ki, box, yaşıl rəngli olunur. 204 00:10:28,950 --> 00:10:33,020 Mən daimi marker almaq və mən tərəfində k yazın. 205 00:10:33,020 --> 00:10:37,590 Mən k adlı qutusu var hansı Mən integers bilər. 206 00:10:37,590 --> 00:10:41,070 Mən int k deyəndə ki, ki, nə mənim baş verir. 207 00:10:41,070 --> 00:10:43,140 Mən k beş bərabərdir demək, mən nə edirəm? 208 00:10:43,140 --> 00:10:45,110 Bəli, mən beş qoyulması alıram qutusuna, doğru. 209 00:10:45,110 --> 00:10:48,670 Bu halda, olduqca sadə deyil Mən int k, k adlı qutusu yaratmaq deyirlər. 210 00:10:48,670 --> 00:10:52,040 Əgər mən k 5 bərabərdir demək qutusuna beş qoydu. 211 00:10:52,040 --> 00:10:53,865 Ümid edirəm ki, bir sıçrayış çox deyil. 212 00:10:53,865 --> 00:10:55,990 Hər şeyi bir getmək burada baxmayaraq maraqlı kiçik. 213 00:10:55,990 --> 00:11:02,590 Mən int * pk demək olarsa, mən deyil, hətta bu mütləq nə deməkdir, 214 00:11:02,590 --> 00:11:06,150 Bu aydın bir şey var bir tam ilə. 215 00:11:06,150 --> 00:11:08,211 Beləliklə, mən rəng gedirəm Yaşıl-ish bu qutusu, 216 00:11:08,211 --> 00:11:10,210 Mən bir şey var bilirəm bir tam ilə, 217 00:11:10,210 --> 00:11:13,400 lakin bu tam özü deyil, bir int ulduz çünki. 218 00:11:13,400 --> 00:11:15,390 Bir şey bir az var bu barədə fərqli. 219 00:11:15,390 --> 00:11:17,620 Belə ki, bir tam nin cəlb, lakin başqa bu 220 00:11:17,620 --> 00:11:19,830 Çox fərqli deyil biz haqqında söhbət. 221 00:11:19,830 --> 00:11:24,240 Bu bir qutusu var, onun, bir etiket var bir etiket pk qalıcı oldu, 222 00:11:24,240 --> 00:11:27,280 və keçirilməsi qadir olanlar nə int ulduz. 223 00:11:27,280 --> 00:11:29,894 Onlar bir şey var integers ilə, aydın. 224 00:11:29,894 --> 00:11:31,060 Burada son line baxmayaraq var. 225 00:11:31,060 --> 00:11:37,650 Mən demək olarsa pk = k, Vay, nə sağ, oldu? 226 00:11:37,650 --> 00:11:41,820 Belə ki, bu təsadüfi sayı, zahirən təsadüfi sıra var qutusuna atılan olur. 227 00:11:41,820 --> 00:11:44,930 Ki, bütün, pk edir k ünvanı olur. 228 00:11:44,930 --> 00:11:52,867 K yaddaşında yaşayır Beləliklə, mən yapışdırılması alıram, ünvanı, onun bayt ünvanı. 229 00:11:52,867 --> 00:11:55,200 Edirəm All I dedi alıram deyil ki, dəyəri gedirəm nə 230 00:11:55,200 --> 00:11:59,430 Mənim qutusu adlı PK daxilində qoymaq. 231 00:11:59,430 --> 00:12:02,080 Və bunlar çünki göstəricilərinə, və axtarır, çünki 232 00:12:02,080 --> 00:12:04,955 sıfır x kimi bir simli səkkiz sıfır c yeddi dörd səkkiz 233 00:12:04,955 --> 00:12:07,790 iki sıfır yəqin ki, çox mənalı deyil. 234 00:12:07,790 --> 00:12:12,390 Biz ümumiyyətlə göstəricilərinə görüntüləmək zaman, Biz, həqiqətən, göstəricilər kimi bunu. 235 00:12:12,390 --> 00:12:17,000 Pk bizə məlumat verir biz yaddaş k tapmaq lazımdır. 236 00:12:17,000 --> 00:12:19,120 Belə ki, əsasən pk bu bir arrow var. 237 00:12:19,120 --> 00:12:21,670 Və biz uzunluğu gəzmək əgər ki arrow təsəvvür 238 00:12:21,670 --> 00:12:25,280 bu gəzmək bilər bir şey var, biz əgər arrow boyunca gəzmək, 239 00:12:25,280 --> 00:12:29,490 ki arrow çox ucunda, biz yaddaşında yer tapa 240 00:12:29,490 --> 00:12:31,390 burada k yaşayır. 241 00:12:31,390 --> 00:12:34,360 Və həqiqətən vacibdir k yaşadığı biz bir dəfə, çünki, 242 00:12:34,360 --> 00:12:37,870 biz data ilə işləmək üçün başlaya bilərsiniz ki, yaddaş yeri daxilində. 243 00:12:37,870 --> 00:12:40,780 Biz bir ufacık əldə etdiyiniz baxmayaraq İndi irəlidə özümüz bit. 244 00:12:40,780 --> 00:12:42,240 >> Belə bir göstərici nədir? 245 00:12:42,240 --> 00:12:45,590 A göstərici olan bir veri maddə dəyəri yaddaş ünvanı. 246 00:12:45,590 --> 00:12:49,740 Idi ki, sıfır x səkkiz sıfır stuff ki davam, bir yaddaş ünvanı oldu. 247 00:12:49,740 --> 00:12:52,060 Ki, yaddaş bir yer idi. 248 00:12:52,060 --> 00:12:55,080 Və bir göstərici növü cür təsvir 249 00:12:55,080 --> 00:12:56,930 məlumatların siz tapa bilərsiniz ki, yaddaş ünvanı. 250 00:12:56,930 --> 00:12:58,810 Belə ki, int ulduz hissəsi hüququ var. 251 00:12:58,810 --> 00:13:03,690 Hesab edirəm ki, arrow edin, bu bir yerə mənə yol gedir. 252 00:13:03,690 --> 00:13:06,980 Və yeri, nə Mənim nümunə orada tapa bilərsiniz, 253 00:13:06,980 --> 00:13:08,240 yaşıl rəngli qutusu edir. 254 00:13:08,240 --> 00:13:12,650 Bu nə var, bir tamsayı Mən Hesab edirəm ki, ünvana getmək əgər tapa bilərsiniz. 255 00:13:12,650 --> 00:13:14,830 bir veri növü pointer nə təsvir 256 00:13:14,830 --> 00:13:17,936 ki, yaddaş ünvanda tapa bilərsiniz. 257 00:13:17,936 --> 00:13:19,560 Belə ki, burada olsa, həqiqətən, sərin şey var. 258 00:13:19,560 --> 00:13:25,090 Pointers us keçmək üçün imkan verir funksiyaları arasında dəyişənlər. 259 00:13:25,090 --> 00:13:28,520 Və həqiqətən dəyişənlərin keçmək və onların surətlərini keçə. 260 00:13:28,520 --> 00:13:32,879 Bildiyimiz Çünki əgər dəqiq yaddaş dəyişən tapmaq üçün, 261 00:13:32,879 --> 00:13:35,670 biz çıxarmaq lazım deyil Bu, biz yalnız yeri getmək olar 262 00:13:35,670 --> 00:13:37,844 ki, dəyişən ilə işləmək. 263 00:13:37,844 --> 00:13:40,260 Mahiyyəti göstəricilər belə sort bir kompüter mühit etmək 264 00:13:40,260 --> 00:13:42,360 daha çox real dünya kimi, doğru. 265 00:13:42,360 --> 00:13:44,640 >> Belə ki, burada bir bənzətmə var. 266 00:13:44,640 --> 00:13:48,080 Mən bir notebook var ki, deyirlər, sağ və bu qeydlər tam deyil. 267 00:13:48,080 --> 00:13:50,230 Mən onu yeniləmək istəyirəm. 268 00:13:50,230 --> 00:13:53,960 Siz bir funksiyası var ki, yenilikləri qeydlər, doğru. 269 00:13:53,960 --> 00:13:56,390 Yolla biz oldum bu günə qədər iş, nə 270 00:13:56,390 --> 00:14:02,370 Siz mənim notebook olacaq olur, Siz surəti mağaza getmək lazımdır 271 00:14:02,370 --> 00:14:06,410 Siz bir Xerox surəti etmək lazımdır notebook hər səhifə. 272 00:14:06,410 --> 00:14:09,790 Siz geri notebook tərk edəcəyik mənim masası üzərində Bitirdiğinizde, 273 00:14:09,790 --> 00:14:14,600 Siz getmək və hər şeyi keçmək lazımdır mənim tarixi və ya yanlış həyata notebook, 274 00:14:14,600 --> 00:14:19,280 və sonra geri keçmək lazımdır Mənə Xerox pages yığını 275 00:14:19,280 --> 00:14:22,850 ki, mənim notebook bir replica ilə siz etdiyiniz dəyişikliklər. 276 00:14:22,850 --> 00:14:27,040 Və o nöqtədə, bu kimi mənə var zəng funksiyası zəng kimi, 277 00:14:27,040 --> 00:14:30,582 sizin qeyd etmək qərar və mənim notebook onları geri inteqrasiya edir. 278 00:14:30,582 --> 00:14:32,540 Belə addımlar bir çox var Burada iştirak hüququ. 279 00:14:32,540 --> 00:14:34,850 Like daha yaxşı ola bilməz Mən yalnız demək əgər, hey, edə bilərsiniz 280 00:14:34,850 --> 00:14:38,370 mənim notebook yeniləmə Mənə, mənim notebook əl 281 00:14:38,370 --> 00:14:40,440 və siz hər şeyi almaq və sanki onları keçmək 282 00:14:40,440 --> 00:14:42,810 və mənim notebook mənim qeyd yeniləmə. 283 00:14:42,810 --> 00:14:45,140 Və sonra mənim notebook geri vermək. 284 00:14:45,140 --> 00:14:47,320 Bu cür nə göstəricilər, bizə imkan verir 285 00:14:47,320 --> 00:14:51,320 bu mühit çox etmək biz əslində fəaliyyət necə Kimi daha çox. 286 00:14:51,320 --> 00:14:54,640 >> Ki, bütün sağ nə var bir göstərici, danışaq ki, 287 00:14:54,640 --> 00:14:58,040 göstəricilər C işləmək və necə haqqında necə onlarla işləmək üçün başlaya bilərsiniz. 288 00:14:58,040 --> 00:15:02,550 Belə ki, bir çox sadə göstərici var C null göstərici çağırıb. 289 00:15:02,550 --> 00:15:04,830 heç bir şey null göstərici xal. 290 00:15:04,830 --> 00:15:08,310 Bu kimi Bu yəqin ki, görünür həqiqətən çox faydalı bir şey, 291 00:15:08,310 --> 00:15:10,500 lakin biz bir görəcəksiniz kimi sonra az, fakt 292 00:15:10,500 --> 00:15:15,410 bu null göstərici var ki, həqiqətən, həqiqətən lazımlı gəlmək olar. 293 00:15:15,410 --> 00:15:19,090 Və bir pointer yaratmaq zaman, və Siz onun dəyəri immediately- müəyyən deyil 294 00:15:19,090 --> 00:15:21,060 qəbulu nümunəsi onun dəyəri dərhal 295 00:15:21,060 --> 00:15:25,401 geri bir neçə slaydlar olacaq Mən pk & K bərabərdir söylədi 296 00:15:25,401 --> 00:15:28,740 pk kimi, K ünvanı olur Biz o deməkdir ki, nə görürsünüz 297 00:15:28,740 --> 00:15:32,990 ki, kod necə görürsünüz shortly- biz bir şey onun dəyəri müəyyən deyil əgər 298 00:15:32,990 --> 00:15:35,380 dərhal mənalı, Siz həmişə olmalıdır 299 00:15:35,380 --> 00:15:37,480 null qeyd etmək üçün göstərici müəyyən. 300 00:15:37,480 --> 00:15:40,260 Siz heç bir şey qeyd etmək müəyyən etməlidir. 301 00:15:40,260 --> 00:15:43,614 >> Daha çox fərqli Bu kimi yalnız dəyəri tərk 302 00:15:43,614 --> 00:15:45,530 və sonra bir elan pointer və yalnız fərz 303 00:15:45,530 --> 00:15:48,042 ki, nadir hallarda doğrudur, çünki bu null. 304 00:15:48,042 --> 00:15:50,000 Beləliklə, siz həmişə müəyyən etməlidir bir göstərici dəyəri 305 00:15:50,000 --> 00:15:55,690 Siz onun dəyəri müəyyən yoxsa null dərhal mənalı bir şey. 306 00:15:55,690 --> 00:15:59,090 Siz kontrol edə bilərsiniz bir göstərici dəyər olub bərabərlik operator istifadə edərək null deyil 307 00:15:59,090 --> 00:16:05,450 (==), Yalnız hər hansı bir tam müqayisə istəyirəm dəyərlər və ya character dəyərlər istifadə (==) 308 00:16:05,450 --> 00:16:06,320 həmçinin. 309 00:16:06,320 --> 00:16:10,994 Bu daimi xüsusi sort Siz test üçün istifadə edə bilərsiniz dəyəri. 310 00:16:10,994 --> 00:16:13,160 Belə ki, bir çox sadə idi pointer, null göstərici. 311 00:16:13,160 --> 00:16:15,320 Başqa bir yolu yaratmaq bir göstərici çıxarmaq üçün 312 00:16:15,320 --> 00:16:18,240 dəyişən ünvanı Əgər siz artıq yaratdıq, 313 00:16:18,240 --> 00:16:22,330 və və bu istifadə etmək operator ünvanı hasilatı. 314 00:16:22,330 --> 00:16:26,720 Hansı biz artıq əvvəllər gördüm ilk diagram Məsələn mən göstərdi. 315 00:16:26,720 --> 00:16:31,450 X biz bir dəyişən əgər Belə ki, artıq növü tam yaradılmış, 316 00:16:31,450 --> 00:16:35,110 sonra və x bir tam bir göstəricisidir. 317 00:16:35,110 --> 00:16:39,810 & X edir- & çıxarış gedir unutmayın sağ şey ünvanı. 318 00:16:39,810 --> 00:16:45,350 Və pointer yalnız bir ünvanı ildən, daha & x bir tam bir göstəricisidir 319 00:16:45,350 --> 00:16:48,560 onların dəyəri harada yaddaş x həyatında edir. 320 00:16:48,560 --> 00:16:50,460 Bu X ünvanı var. 321 00:16:50,460 --> 00:16:53,296 Belə ki, & x x ünvanı. 322 00:16:53,296 --> 00:16:55,670 Bu bir addım olsun daha və bir şey qoşulmaq 323 00:16:55,670 --> 00:16:58,380 Mən əvvəl video alluded. 324 00:16:58,380 --> 00:17:06,730 Varış cütlərin bir sıra sonra, Əgər & Varış kvadrat mötərizə i bir göstərici 325 00:17:06,730 --> 00:17:08,109 ikiqat üçün. 326 00:17:08,109 --> 00:17:08,970 OLDU. 327 00:17:08,970 --> 00:17:12,160 i, əgər kvadrat mötərizə Varış Varış, cütlərin bir sıra edir 328 00:17:12,160 --> 00:17:19,069 sonra i kvadrat mötərizə Varış ki, serialın i-ci element, 329 00:17:19,069 --> 00:17:29,270 və & kvadrat mötərizə Varış i harada edir Yaddaş arr i-ci element mövcuddur. 330 00:17:29,270 --> 00:17:31,790 >> Belə ki, dolayısı burada nə var? 331 00:17:31,790 --> 00:17:34,570 Bir Diziler adı, dolayısı bu bütün şey, 332 00:17:34,570 --> 00:17:39,290 bir serialın adı ki, həqiqətən özü bir göstərici. 333 00:17:39,290 --> 00:17:41,170 Siz iş etdik bütün boyunca göstəricilər ilə 334 00:17:41,170 --> 00:17:45,290 Siz bir sıra istifadə etdiyiniz hər zaman. 335 00:17:45,290 --> 00:17:49,090 Məsələn saxla dəyişən daxilində, 336 00:17:49,090 --> 00:17:53,420 Mən təqdim Videonu sonuna yaxın biz bir funksiyası var nümunə 337 00:17:53,420 --> 00:17:56,890 adlı set int və funksiyası set array çağırıb. 338 00:17:56,890 --> 00:18:00,490 Və problem müəyyən etmək üçün və ya, və ya nə 339 00:18:00,490 --> 00:18:03,220 biz çap dəyərlər funksiyası sonu, 340 00:18:03,220 --> 00:18:05,960 Əsas Proqramın sonunda. 341 00:18:05,960 --> 00:18:08,740 >> Siz ki, məsələn geri əgər və ya video seyr etdik əgər, 342 00:18:08,740 --> 00:18:13,080 Siz zəng qaynar zaman bilirik ki, set int səmərəli heç bir şey yoxdur. 343 00:18:13,080 --> 00:18:16,390 Amma zəng array yoxdur təyin etmək üçün. 344 00:18:16,390 --> 00:18:19,280 Mən növ niyə üzərində cilalanacaq o zaman belə idi. 345 00:18:19,280 --> 00:18:22,363 Mən də, bu, bir sıra var ki, dedi: xüsusi, bilirsiniz, bir səbəb var. 346 00:18:22,363 --> 00:18:25,020 Bunun səbəbi bir sıra nin adı, həqiqətən, yalnız bir göstərici 347 00:18:25,020 --> 00:18:28,740 və bu xüsusi var kvadrat mötərizə sintaksis ki, 348 00:18:28,740 --> 00:18:30,510 ilə işləmək üçün hər şeyi çox gözəl edir. 349 00:18:30,510 --> 00:18:34,410 Onlar bir fikir etmək çox az qorxuducu göstərici 350 00:18:34,410 --> 00:18:36,800 onlar sort istəyirik niyə və ki ki, şəkildə təqdim. 351 00:18:36,800 --> 00:18:38,600 Amma həqiqətən serialların yalnız göstəricilər var. 352 00:18:38,600 --> 00:18:41,580 Və niyə zaman biz serialın bir dəyişiklik etdi 353 00:18:41,580 --> 00:18:44,880 biz bir parametri kimi bir sıra keçərkən funksiyası və ya bir arqument kimi 354 00:18:44,880 --> 00:18:50,110 serialın bir funksiyası, məzmunu həqiqətən də callee dəyişdi 355 00:18:50,110 --> 00:18:51,160 və zəng edir. 356 00:18:51,160 --> 00:18:55,846 Hər bir digər növ hansı gördük dəyişən halda deyildi. 357 00:18:55,846 --> 00:18:58,970 Belə ki, saxlamaq üçün bir şey var Siz göstəricilər ilə çalışırıq zaman ağla, 358 00:18:58,970 --> 00:19:01,610 ki, bir adı array həqiqətən bir pointer 359 00:19:01,610 --> 00:19:04,750 ki, serialın ilk element. 360 00:19:04,750 --> 00:19:08,930 >> OK, belə ki, indi biz bütün bu var faktlar, sağ, davam edək. 361 00:19:08,930 --> 00:19:11,370 Niyə biz qayğı yoxdur burada bir şey yaşayır. 362 00:19:11,370 --> 00:19:14,120 Dediyim Yaxşı kimi, bu olduqca var bir şey yaşadığı bilmək faydalıdır 363 00:19:14,120 --> 00:19:17,240 belə ki, orada getmək və onu dəyişə bilərsiniz. 364 00:19:17,240 --> 00:19:19,390 Bu iş və həqiqətən şey var ki, 365 00:19:19,390 --> 00:19:23,710 ki, dəyişən take təsiri etmək istəyirəm, və bəzi surəti qüvvəyə deyil. 366 00:19:23,710 --> 00:19:26,150 Bu dereferencing adlanır. 367 00:19:26,150 --> 00:19:28,690 Biz yalnız getmək və biz dəyər dəyişir. 368 00:19:28,690 --> 00:19:32,660 Biz bir göstərici var və əgər Belə ki, deyirlər pc, və bir xarakter göstərir, 369 00:19:32,660 --> 00:19:40,610 sonra biz * pc və * pc demək olar biz getmək əgər biz tapa bilərsiniz nə adı 370 00:19:40,610 --> 00:19:42,910 Ünvan PC. 371 00:19:42,910 --> 00:19:47,860 Biz orada tapa bilərsiniz bir xarakter və * Pc ki, data baxın necə 372 00:19:47,860 --> 00:19:48,880 yeri. 373 00:19:48,880 --> 00:19:54,150 Beləliklə, biz kimi bir şey deyə bilər * Pc = D ya kimi bir şey, 374 00:19:54,150 --> 00:19:59,280 ki, o deməkdir ki, hər hansı , yaddaş ünvanı pc idi 375 00:19:59,280 --> 00:20:07,040 nə xarakter əvvəl idi biz pc = D * demək əgər orada, indi D edir. 376 00:20:07,040 --> 00:20:10,090 >> Belə ki, burada biz yenə getmək bəzi qəribə C stuff, doğru. 377 00:20:10,090 --> 00:20:14,560 Beləliklə, biz kimi əvvəllər * gördük elə data type hissəsi, 378 00:20:14,560 --> 00:20:17,160 və indi istifadə olunur bir az fərqli kontekstində 379 00:20:17,160 --> 00:20:19,605 bir yerdə məlumat daxil olmaq üçün. 380 00:20:19,605 --> 00:20:22,480 Mən bunu bir az confusing bilirik və ki, həqiqətən, bu bütün hissəsi 381 00:20:22,480 --> 00:20:25,740 kimi, niyə göstəricilər bu mifologiya var onların ətrafında belə mürəkkəb kimi, 382 00:20:25,740 --> 00:20:28,250 vicdanla, bir syntax problem növüdür. 383 00:20:28,250 --> 00:20:31,810 Lakin * Hər iki kontekstlərdə istifadə olunur, həm növü adı hissəsi kimi, 384 00:20:31,810 --> 00:20:34,100 və biz bir az görürsünüz çox başqa sonra bir şey. 385 00:20:34,100 --> 00:20:36,490 Və indi dereference operator. 386 00:20:36,490 --> 00:20:38,760 Belə ki, yalnız gedir, Bu data çatmaz 387 00:20:38,760 --> 00:20:43,000 göstərici yeri, və Siz iradəsi ilə manipulyasiya etməyə imkan verir. 388 00:20:43,000 --> 00:20:45,900 >> İndi bu çox oxşardır Sizin qonşu ziyarət hüququ. 389 00:20:45,900 --> 00:20:48,710 Əgər bilirsinizsə, nə qonşu sen, yaşayır 390 00:20:48,710 --> 00:20:50,730 Sizin qonşu ilə həyata asma deyil. 391 00:20:50,730 --> 00:20:53,510 Siz başına bilirik yaşadıqları bilirik, 392 00:20:53,510 --> 00:20:56,870 lakin çox demək deyil ki, ki, bilik olan fəziləti 393 00:20:56,870 --> 00:20:59,170 Siz onlara ilə əlaqə olunur. 394 00:20:59,170 --> 00:21:01,920 Onlarla qarşılıqlı istəyirsinizsə, Siz öz evinə getmək üçün var 395 00:21:01,920 --> 00:21:03,760 Əgər onlar yaşadığı getmək üçün var. 396 00:21:03,760 --> 00:21:07,440 Və bunu bir dəfə, sonra qarşılıqlı bilər 397 00:21:07,440 --> 00:21:09,420 onlarla yalnız istəyirəm istəyirəm. 398 00:21:09,420 --> 00:21:12,730 Və eyni dəyişənlərin, onların ünvanına getmək lazımdır 399 00:21:12,730 --> 00:21:15,320 Əgər siz onları qarşılıqlı istəyirsinizsə, Yalnız Ünvanı bilmirəm bilər. 400 00:21:15,320 --> 00:21:21,495 Və ünvana getmək yoldur *, dereference operator istifadə etmək. 401 00:21:21,495 --> 00:21:23,620 Siz nə düşünürsünüz biz cəhd və dereference əgər 402 00:21:23,620 --> 00:21:25,260 onların dəyəri bir göstərici null edir? 403 00:21:25,260 --> 00:21:28,470 Null Xatırladaq ki, pointer heç bir şey göstərir. 404 00:21:28,470 --> 00:21:34,110 Siz cəhd və dereference əgər heç bir şey bir ünvan heç bir şey getmək və ya, 405 00:21:34,110 --> 00:21:36,800 Siz nə düşünürsünüz? 406 00:21:36,800 --> 00:21:39,630 Yaxşı Siz guessed əgər seqmentasiya günah, doğru olarıq. 407 00:21:39,630 --> 00:21:41,390 Siz cəhd və dereference əgər bir null pointer, 408 00:21:41,390 --> 00:21:43,140 Bir seqmentasiya əziyyət günah. Lakin, gözləyin 409 00:21:43,140 --> 00:21:45,820 Mən ki, siz demək deyildi Siz fikrində deyilik əgər 410 00:21:45,820 --> 00:21:49,220 Sizin dəyəri təyin etmək üçün mənalı bir şey göstərici, 411 00:21:49,220 --> 00:21:51,000 Siz null müəyyən etməlidir? 412 00:21:51,000 --> 00:21:55,290 Mən və həqiqətən seqmentasiya günah yaxşı davranış növüdür. 413 00:21:55,290 --> 00:21:58,680 >> Heç bir dəyişən elan var dərhal onun dəyər təyin deyil? 414 00:21:58,680 --> 00:22:02,680 Belə ki, yalnız int x demək; siz deyil həqiqətən bir şey üçün təyin 415 00:22:02,680 --> 00:22:05,340 və sonra sizin kodu, Siz x dəyəri çap 416 00:22:05,340 --> 00:22:07,650 hələ olmayan bir şey üçün təyin. 417 00:22:07,650 --> 00:22:10,370 Tez-tez almaq lazımdır sıfır, lakin bəzən 418 00:22:10,370 --> 00:22:15,000 bir təsadüfi nömrə almaq və bilər Siz gələn heç bir fikrim yoxdur. 419 00:22:15,000 --> 00:22:16,750 Eynilə şeyi edə bilərsiniz göstəricilər ilə baş verir. 420 00:22:16,750 --> 00:22:20,110 Bir göstərici elan zaman int * məsələn pk, 421 00:22:20,110 --> 00:22:23,490 və siz bir dəyər təyin deyil Siz yaddaş üçün dörd bayt almaq. 422 00:22:23,490 --> 00:22:25,950 Nə olursa olsun dörd bytes sistem yaddaş bilərsiniz 423 00:22:25,950 --> 00:22:28,970 bir mənalı dəyəri var ki, tapa bilərsiniz. 424 00:22:28,970 --> 00:22:31,760 Və ola artıq bir şey 425 00:22:31,760 --> 00:22:34,190 başqa lazım artıq funksiyası, yalnız belə 426 00:22:34,190 --> 00:22:35,900 nə data var idi. 427 00:22:35,900 --> 00:22:40,570 >> Nə dereference etməyə çalışdı əgər Siz var idi don't- bəzi ünvan 428 00:22:40,570 --> 00:22:43,410 artıq bayt və məlumat orada ki, pointer indi. 429 00:22:43,410 --> 00:22:47,470 , Siz cəhd əgər ki, pointer dereference Bəzi yaddaş ilə messing edilə bilər 430 00:22:47,470 --> 00:22:49,390 Siz niyyətində deyil ki, bütün mess üçün. 431 00:22:49,390 --> 00:22:51,639 Və əslində siz edə bilər həqiqətən dağıdıcı bir şey, 432 00:22:51,639 --> 00:22:54,880 kimi başqa bir proqram qırmaq, və ya, başqa bir funksiyası qırmaq 433 00:22:54,880 --> 00:22:58,289 və ya zərərli bir şey Siz bütün etmək niyyətində deyil idi. 434 00:22:58,289 --> 00:23:00,080 Bu niyə və ki var həqiqətən yaxşı bir fikirdir 435 00:23:00,080 --> 00:23:04,030 əgər null sizin göstəricilərinə təyin etmək mənalı bir şey onlara müəyyən deyil. 436 00:23:04,030 --> 00:23:06,760 Bu, yəqin ki, daha yaxşıdır Proqram üçün gün sonu 437 00:23:06,760 --> 00:23:09,840 Bunu sonra qəza bir şey vintlər qədər 438 00:23:09,840 --> 00:23:12,400 başqa bir proqram və ya başqa bir funksiyası. 439 00:23:12,400 --> 00:23:15,207 Bu davranış, hətta yəqin ki, yalnız şaqqıltılı az ideal. 440 00:23:15,207 --> 00:23:17,040 Bu niyə və ki var həqiqətən yaxşı bir vərdiş 441 00:23:17,040 --> 00:23:20,920 Sizin göstəricilərinə qurmaq üçün daxil olmaq Əgər siz onları müəyyən yoxsa null 442 00:23:20,920 --> 00:23:24,540 mənalı dəyəri Bildiyiniz dərhal dəyəri 443 00:23:24,540 --> 00:23:27,260 və siz dereference təhlükəsiz bilərsiniz. 444 00:23:27,260 --> 00:23:32,240 >> Belə ki, indi geri gəlsin və bir göz atın vəziyyət ümumi sintaksis. 445 00:23:32,240 --> 00:23:37,400 Mən int * p demək olarsa ;, Mən nə etmişəm? 446 00:23:37,400 --> 00:23:38,530 Mən etdik bu. 447 00:23:38,530 --> 00:23:43,290 Mən p dəyəri bir ünvan olduğunu bütün göstəricilər yalnız çünki 448 00:23:43,290 --> 00:23:44,660 ünvanları. 449 00:23:44,660 --> 00:23:47,750 Mən dereference p * operator istifadə edərək. 450 00:23:47,750 --> 00:23:51,250 Çox burada Bu əhatədə top * Növü hissəsi xatırlayıram. 451 00:23:51,250 --> 00:23:53,510 Int * data növüdür. 452 00:23:53,510 --> 00:23:56,150 Amma dereference bilər * operator istifadə edərək p, 453 00:23:56,150 --> 00:24:01,897 Mən bunu, mən ki, ünvan üçün getmək əgər, Hesab edirəm ki, ünvanda nə tapa bilərsiniz? 454 00:24:01,897 --> 00:24:02,855 Mən tam tapa bilərsiniz. 455 00:24:02,855 --> 00:24:05,910 Belə ki, int * p əsasən deyərək, p bir ünvanı. 456 00:24:05,910 --> 00:24:09,500 Mən p dereference əgər Mən, mən tam tapa 457 00:24:09,500 --> 00:24:11,920 ki, yaddaş yeri. 458 00:24:11,920 --> 00:24:14,260 >> OK, belə ki, mən başqa olduğunu ifadə etdi ulduzları ilə annoying şey 459 00:24:14,260 --> 00:24:17,060 və burada yerləşir ki ulduzları ilə annoying şeydir. 460 00:24:17,060 --> 00:24:21,640 Əgər elan cəhd eyni tipli çox dəyişənlər 461 00:24:21,640 --> 00:24:24,409 kod eyni xətt üzrə? 462 00:24:24,409 --> 00:24:27,700 Belə ki, ikinci, xətt iddia Mən, həqiqətən, yaşıl var code 463 00:24:27,700 --> 00:24:29,366 yoxdur və yalnız int x, y, z deyir ;. 464 00:24:29,366 --> 00:24:31,634 465 00:24:31,634 --> 00:24:34,550 Hansı ki, nə olardı həqiqətən yaratmaq sizin üçün üç tam dəyişənlər, 466 00:24:34,550 --> 00:24:36,930 bir adlı x, bir adlı y, bir z çağırıb. 467 00:24:36,930 --> 00:24:41,510 Bu olmadan bunu etmək üçün bir yol var üç xətt üzərində split olan. 468 00:24:41,510 --> 00:24:43,890 >> Stars almaq burada baxmayaraq yenə annoying, 469 00:24:43,890 --> 00:24:49,200 * həqiqətən hissəsidir, çünki həm növü adı və bir hissəsi 470 00:24:49,200 --> 00:24:50,320 dəyişən adı. 471 00:24:50,320 --> 00:24:56,430 Və mən demək əgər int * px, py, Pz, nə həqiqətən almaq bir tam bir göstəricisidir 472 00:24:56,430 --> 00:25:01,650 px və iki integers, py və Pz çağırıb. 473 00:25:01,650 --> 00:25:04,950 Və yəqin ki, nə var ki, yaxşı deyil, istəyirəm. 474 00:25:04,950 --> 00:25:09,290 >> Bir neçə göstəricilərinə yaratmaq istəyirsinizsə Belə ki, eyni xətt üzrə, eyni tipli, 475 00:25:09,290 --> 00:25:12,140 Mən, həqiqətən, ehtiyac nə və ulduzları, etmək üçün * pb * pc, int * pa demək deyil. 476 00:25:12,140 --> 00:25:17,330 477 00:25:17,330 --> 00:25:20,300 İndi yalnız dedi ki və indi, sizə bu izah 478 00:25:20,300 --> 00:25:22,170 Siz yəqin ki, bunu heç vaxt. 479 00:25:22,170 --> 00:25:25,170 Və bu, vicdanla, yəqin ki, yaxşı bir şey deyil siz təsadüfən bilər, çünki 480 00:25:25,170 --> 00:25:26,544 bir ulduz, belə bir şey buraxmaq. 481 00:25:26,544 --> 00:25:29,290 Bu bəlkə elan etmək yəqin ki, ən yaxşı fərdi xətləri üzrə göstəricilər, 482 00:25:29,290 --> 00:25:31,373 lakin bu, yalnız bir biri o annoying sintaksis 483 00:25:31,373 --> 00:25:35,310 etmək ulduzları ilə şeyi ilə işləmək üçün belə çətin göstəricilər. 484 00:25:35,310 --> 00:25:39,480 Yalnız bu sintaktik, çünki mess vasitəsilə işləmək lazımdır. 485 00:25:39,480 --> 00:25:41,600 Təcrübə ilə yoxdur həqiqətən ikinci təbiət olur. 486 00:25:41,600 --> 00:25:45,410 Mən hələ də bu səhvlər 10 il üçün proqramlaşdırma sonra, 487 00:25:45,410 --> 00:25:49,630 Bir şey olsa belə pərişan olmayın Sizə, vicdanla olduqca ümumi var. 488 00:25:49,630 --> 00:25:52,850 Bu cür həqiqətən var sintaksis bir qüsur. 489 00:25:52,850 --> 00:25:54,900 >> OK, belə ki, I növ vəd biz yenidən ki, 490 00:25:54,900 --> 00:25:59,370 necə böyük anlayışı bir simli edir. 491 00:25:59,370 --> 00:26:02,750 Yaxşı mən sizə deyib ki, əgər simli, biz növ həqiqətən var 492 00:26:02,750 --> 00:26:04,140 Sizə bütün vaxt yalan edilmişdir. 493 00:26:04,140 --> 00:26:06,181 Deyilən data type var simli və əslində mən 494 00:26:06,181 --> 00:26:09,730 biri bu qeyd bizim data növləri üzrə erkən video, 495 00:26:09,730 --> 00:26:13,820 ki, simli bir veri növü idi ki, cs50.h. sizin üçün yaradılmışdır 496 00:26:13,820 --> 00:26:17,050 Siz # daxil etmək lazımdır Istifadə etmək üçün cs50.h. 497 00:26:17,050 --> 00:26:19,250 >> Yaxşı string yalnız həqiqətən bir şey üçün bir alias 498 00:26:19,250 --> 00:26:23,600 , char * adlı bir xarakter göstərici. 499 00:26:23,600 --> 00:26:26,010 Yaxşı göstəricilər, geri, yalnız müraciət edir. 500 00:26:26,010 --> 00:26:28,780 Belə ki, ölçüsü nədir simli bayt? 501 00:26:28,780 --> 00:26:29,796 Yaxşı dörd və ya səkkiz var. 502 00:26:29,796 --> 00:26:32,170 Və səbəb deyirəm dörd və ya səkkiz çünki əslində 503 00:26:32,170 --> 00:26:36,730 Siz istifadə edirsinizsə, sistem asılıdır CS50 ide, char * bir char ölçüsü 504 00:26:36,730 --> 00:26:39,340 * Bu bir 64-bit sistemi var, səkkiz edir. 505 00:26:39,340 --> 00:26:43,850 Yaddaş Hər ünvan üçün 64 bit uzun. 506 00:26:43,850 --> 00:26:48,270 Siz CS50 cihaz istifadə edirsinizsə və ya hər hansı 32-bit maşın istifadə edərək, 507 00:26:48,270 --> 00:26:51,640 və bu müddət 32-parça eşitdim maşın, bir 32-bit maşın nədir? 508 00:26:51,640 --> 00:26:56,090 Yaxşı yalnız hər o deməkdir ki, yaddaş ünvan 32 bit uzun. 509 00:26:56,090 --> 00:26:59,140 Və belə 32 bit dörd bayt edir. 510 00:26:59,140 --> 00:27:02,710 Belə ki, bir char * dörd və ya səkkiz edir sistem asılı olaraq bayt. 511 00:27:02,710 --> 00:27:06,100 Həqiqətən hər hansı bir məlumat növləri, və hər hansı bir məlumat bir göstərici 512 00:27:06,100 --> 00:27:12,030 bütün göstəricilər yalnız çünki, yazın ünvanları, dörd və ya səkkiz bytes var. 513 00:27:12,030 --> 00:27:14,030 Belə ki, bu yenidən edək diaqram və bir-bağlamaq imkan 514 00:27:14,030 --> 00:27:18,130 burada bir az həyata keçirilməsi ilə bu video. 515 00:27:18,130 --> 00:27:21,600 Belə ki, burada biz off sol diagram var Videonu çox əvvəlində. 516 00:27:21,600 --> 00:27:23,110 I * pk = 35 demək əgər Belə ki, nə indi baş verir? 517 00:27:23,110 --> 00:27:26,370 518 00:27:26,370 --> 00:27:30,530 Belə ki, * pk = 35 Mən deyəndə nə deməkdir? 519 00:27:30,530 --> 00:27:32,420 Ikinci edin. 520 00:27:32,420 --> 00:27:34,990 * Pk. 521 00:27:34,990 --> 00:27:39,890 Burada kontekstində * deyil dereference operator. 522 00:27:39,890 --> 00:27:42,110 Belə ki dereference operator istifadə olunur 523 00:27:42,110 --> 00:27:48,520 Ünvan işarə biz getmək PK ilə, və biz tapmaq nə dəyişir. 524 00:27:48,520 --> 00:27:55,270 Belə ki, * pk = 35 səmərəli şəkil bu yoxdur. 525 00:27:55,270 --> 00:27:58,110 Belə ki, syntactically əsasən bir eyni k = 35 söyləyib. 526 00:27:58,110 --> 00:28:00,740 527 00:28:00,740 --> 00:28:01,930 >> Daha bir. 528 00:28:01,930 --> 00:28:05,510 Mən int m demək, mən yaratmaq m adlı yeni dəyişən. 529 00:28:05,510 --> 00:28:08,260 Yeni qutusu, bir yaşıl qutu, çünki Bu tam keçirmək olacaq, 530 00:28:08,260 --> 00:28:09,840 və m etiketli edir. 531 00:28:09,840 --> 00:28:14,960 I m = 4 desəniz, mən qoymaq ki qutusuna tam. 532 00:28:14,960 --> 00:28:20,290 Demək pk = & m, necə varsa bu diaqram dəyişiklik? 533 00:28:20,290 --> 00:28:28,760 Pk = & m, siz nə geri edə & Operator yoxdur və ya adlanır? 534 00:28:28,760 --> 00:28:34,430 Ki, və bəzi dəyişən adını xatırlayıram dəyişən adı ünvanı. 535 00:28:34,430 --> 00:28:38,740 Belə ki, nə biz deyərək edirik edir pk m ünvanı olur. 536 00:28:38,740 --> 00:28:42,010 Və belə səmərəli nə olur diagram artıq xal PK 537 00:28:42,010 --> 00:28:46,420 m, lakin xal k. 538 00:28:46,420 --> 00:28:48,470 >> Yenə göstəricilərinə çox var ilə işləmək üçün çətin 539 00:28:48,470 --> 00:28:50,620 və onlar bir çox təcrübə, lakin 540 00:28:50,620 --> 00:28:54,150 imkan üçün onların qabiliyyəti funksiyaları arasında data keçmək 541 00:28:54,150 --> 00:28:56,945 və həqiqətən o var dəyişikliklər qüvvəyə, 542 00:28:56,945 --> 00:28:58,820 ətrafında baş almaq həqiqətən vacibdir. 543 00:28:58,820 --> 00:29:02,590 Bu yəqin ki, ən mürəkkəb biz CS50 müzakirə mövzusu 544 00:29:02,590 --> 00:29:05,910 lakin dəyəri ki, göstəricilərinə istifadə almaq 545 00:29:05,910 --> 00:29:09,200 qədər fəsadlar üstələyir ki, onları öyrənmək gəlir. 546 00:29:09,200 --> 00:29:12,690 Beləliklə, mən sizə uğurlar arzulayıram Uğurlar göstəricilər haqqında öyrənmək. 547 00:29:12,690 --> 00:29:15,760 Mən Doug Lloyd deyiləm, bu CS50 edir. 548 00:29:15,760 --> 00:29:17,447