1 00:00:00,000 --> 00:00:11,320 2 00:00:11,320 --> 00:00:13,260 >> დავით Malan: Hello, და მივესალმებით უკან CS50. 3 00:00:13,260 --> 00:00:14,860 ასე რომ, ეს ბოლოს კვირაში ოთხი. 4 00:00:14,860 --> 00:00:16,680 მხოლოდ ერთი განცხადება გააკეთა. 5 00:00:16,680 --> 00:00:19,600 ასე რომ, ე.წ. მეხუთე ორშაბათს ახლოვდება ამ მოდის ორშაბათს. 6 00:00:19,600 --> 00:00:22,800 ეს არის შესაძლებლობა, რომ შეიცვალოს SAT / UNSAT ასო კლასის, ან 7 00:00:22,800 --> 00:00:24,130 წერილი კლასის SAT / UNSAT. 8 00:00:24,130 --> 00:00:27,130 გამაღიზინებლად, რომ პროცესი არ საჭიროებს ხელმოწერის, რადგან თქვენ უნდა შეავსოთ 9 00:00:27,130 --> 00:00:28,770 ერთი იმ ვარდისფერი დამატება / წვეთი ფორმები. 10 00:00:28,770 --> 00:00:31,680 >> იმის გამო, რომ ტექნიკურად, SAT / UNSAT მობილური და წერილი კლასის მობილური 11 00:00:31,680 --> 00:00:33,320 აქვთ მკაფიო კატალოგი ნომრები. 12 00:00:33,320 --> 00:00:34,240 თუმცა არ არის დიდი გარიგება. 13 00:00:34,240 --> 00:00:36,620 უბრალოდ ამუშავება მე ან ძარცვა ან ლორენ ნებისმიერ წერტილში. 14 00:00:36,620 --> 00:00:39,550 ან მოგვწეროთ თუ არ აქვს სახის დოკუმენტებზე მუშაობის გჭირდებათ დღეს, და ჩვენ 15 00:00:39,550 --> 00:00:43,410 იქნება დარწმუნებული დაგეხმაროთ მიიღოს ზრუნვა, რომ ორშაბათს. 16 00:00:43,410 --> 00:00:45,780 >> ყველა უფლება, დღეს - 17 00:00:45,780 --> 00:00:47,630 ფაქტობრივად, არ არსებობს ცოტა ეხმიანება. 18 00:00:47,630 --> 00:00:51,070 შეგვიძლია ტონი me ქვემოთ ცოტა? 19 00:00:51,070 --> 00:00:51,730 OK. 20 00:00:51,730 --> 00:00:54,850 ასე რომ, დღეს, ჩვენ დანერგვა თემას ცნობილია, როგორც მითითებას. 21 00:00:54,850 --> 00:00:57,770 და მე ვაღიარებ, რომ ეს არის ერთ ერთი უფრო რთული საკითხები, რომლებიც ჩვენ ტენდენცია 22 00:00:57,770 --> 00:01:00,960 დაფარავს ამ კლასის, ან მართლაც ნებისმიერ შესავალი კურსი, რომელიც იყენებს C. 23 00:01:00,960 --> 00:01:05,510 >> მაგრამ ჩემს სიტყვას, რომ განსაკუთრებით თუ თქვენი გონება გრძნობს ცოტა მოხრილი 24 00:01:05,510 --> 00:01:07,100 დღეს და კვირის მოვა. 25 00:01:07,100 --> 00:01:10,340 ეს არ არის წარმომადგენლის თქვენ მისაღებად ნებისმიერი უარესი, ამ უბრალოდ იმას ნიშნავს, რომ 26 00:01:10,340 --> 00:01:13,360 ეს განსაკუთრებით დახვეწილი თემას რომ მე გპირდებით, რამდენიმე კვირაში 27 00:01:13,360 --> 00:01:17,610 აქედან გამომდინარე, როგორც ჩანს ძალიან საოცრად პირდაპირი ამ დროის. 28 00:01:17,610 --> 00:01:18,720 >> ისევ მახსოვს ამ დღეს. 29 00:01:18,720 --> 00:01:22,190 მე იჯდა Elliott სასადილო დარბაზი, სხდომაზე მომავალ ჩემს TF Nishat Mehta, 30 00:01:22,190 --> 00:01:24,070 ვინ იყო მკვიდრი Elliott სახლში. 31 00:01:24,070 --> 00:01:26,340 და რატომღაც ამ თემის უბრალოდ იმოქმედებს. 32 00:01:26,340 --> 00:01:29,430 რომელი ვთქვა, რომ მე ძალიან იბრძოდა მას გარკვეული დროის, მაგრამ მე 33 00:01:29,430 --> 00:01:33,610 ყველაფერს გავაკეთებ, რათა დაეხმაროს თავი აარიდონ ისეთ ბრძოლა თემა, საბოლოო ჯამში, 34 00:01:33,610 --> 00:01:34,580 საკმაოდ ძლიერი. 35 00:01:34,580 --> 00:01:37,350 >> ფაქტობრივად, ერთი თემა განვიხილავთ ამ კვირის განმავლობაში მოვა ის არის, რომ 36 00:01:37,350 --> 00:01:41,130 უსაფრთხოების, და როგორ შეიძლება რეალურად გამოყენებისათვის მანქანები გზები 37 00:01:41,130 --> 00:01:42,320 რომელიც არ იყო განკუთვნილი. 38 00:01:42,320 --> 00:01:45,850 და იმ exploitations არიან, როგორც წესი შედეგად შეცდომები, შეცდომები, რომ ჩვენ 39 00:01:45,850 --> 00:01:49,740 ადამიანი, რომელსაც ვერ გაიგო ზოგიერთმა საქართველოს ძირითადი განხორციელება 40 00:01:49,740 --> 00:01:52,250 დეტალების მეშვეობით, რომელიც პროგრამების განხორციელებას. 41 00:01:52,250 --> 00:01:55,410 >> ახლა, რომ ეს, როგორც ჩანს, მით უფრო შესახებ მეგობრული, მეგონა, მე მინდა ითამაშოს 10 42 00:01:55,410 --> 00:01:59,680 მეორე ესკიზი პატარა claymation ფიგურა დაასახელა Binky ვინც მიიყვანეს 43 00:01:59,680 --> 00:02:03,020 ცხოვრების მეგობარს ჩვენი სტენფორდის, პროფესორი ნიკ Parlante. 44 00:02:03,020 --> 00:02:06,753 ასე რომ, ნება მომეცით გადმოგცეთ ეს teaser of Binky აქ. 45 00:02:06,753 --> 00:02:09,520 >> [ვიდეო აღწარმოების] 46 00:02:09,520 --> 00:02:10,380 >> -Hey, Binky. 47 00:02:10,380 --> 00:02:11,050 გაიღვიძეთ. 48 00:02:11,050 --> 00:02:13,610 დროა მაჩვენებელი სახალისო. 49 00:02:13,610 --> 00:02:14,741 >> -რა არის რომ? 50 00:02:14,741 --> 00:02:16,440 შესწავლა მითითებას? 51 00:02:16,440 --> 00:02:17,928 Oh, goodie. 52 00:02:17,928 --> 00:02:18,920 >> [END ვიდეო აღწარმოების] 53 00:02:18,920 --> 00:02:20,670 >> დავით Malan: ეს არის სტენფორდის კომპიუტერული მეცნიერება. 54 00:02:20,670 --> 00:02:23,194 ასე რომ, უფრო, რომ მოვა. 55 00:02:23,194 --> 00:02:24,930 >> [ტაში] 56 00:02:24,930 --> 00:02:26,660 >> დავით Malan: უკაცრავად, ნიკ. 57 00:02:26,660 --> 00:02:30,680 >> ასე რომ გავიხსენოთ, რომ ბოლო დროს ჩვენ დასრულდა ეს მართლაც საინტერესო cliffhanger 58 00:02:30,680 --> 00:02:32,960 რომლის დროსაც ამ ფუნქციის უბრალოდ არ იმუშავებს. 59 00:02:32,960 --> 00:02:34,960 ყოველ შემთხვევაში ინტუიციურად, ეს იგრძნო როგორც ეს უნდა იმუშაოს. 60 00:02:34,960 --> 00:02:37,600 უბრალოდ შევცვალე ღირებულებები ორი რიცხვებით. 61 00:02:37,600 --> 00:02:40,915 მაგრამ გავიხსენოთ, რომ როდესაც ჩვენ იბეჭდება ორიგინალური ღირებულებების ძირითადი, ერთი და 62 00:02:40,915 --> 00:02:44,210 ორი, ისინი იყვნენ ჯერ კიდევ ერთი და ორი და არა ორი და ერთი. 63 00:02:44,210 --> 00:02:46,070 >> ნება მომეცით, ფაქტობრივად გადართვის მეტი მოწყობილობების. 64 00:02:46,070 --> 00:02:50,180 და დავწერე up ცოტა ჩონჩხის კოდი წინასწარ აქ, სადაც მე აცხადებენ, რომ x 65 00:02:50,180 --> 00:02:52,500 იქნება 1, y იქნება 2. 66 00:02:52,500 --> 00:02:54,810 მე მაშინ ამობეჭდოთ ორივე მათი ღირებულებები ბეჭვდითი ვ. 67 00:02:54,810 --> 00:02:57,540 >> მე პრეტენზია ქვემოთ აქ ჩვენ ვაპირებთ სვოპ მათ. 68 00:02:57,540 --> 00:03:00,800 დავტოვე ცარიელი ადგილზე აქ ჩვენთვის შევსება დღეს რაღაც მომენტში. 69 00:03:00,800 --> 00:03:03,380 ამის შემდეგ, მე ვაპირებ მტკიცება, რომ ორი ცვლადის უკვე swapped. 70 00:03:03,380 --> 00:03:04,770 ამის შემდეგ მე ვაპირებ ბეჭდვა მათ კიდევ ერთხელ. 71 00:03:04,770 --> 00:03:07,090 ასე რომ, იმედია, მე უნდა გამოჩნდეს 1, 2. 72 00:03:07,090 --> 00:03:07,380 2, 1. 73 00:03:07,380 --> 00:03:09,830 აი სუპერ მარტივი მიზანი ახლა. 74 00:03:09,830 --> 00:03:12,430 >> ასე რომ, როგორ უნდა წავიდეთ შესახებ შევცვალე ორი ცვლადის? 75 00:03:12,430 --> 00:03:17,220 თუ მე ვთავაზობ, რომ ეს თასები შეიძლება წარმოადგენს მეხსიერების კომპიუტერი. 76 00:03:17,220 --> 00:03:19,070 ეს არის რამდენიმე ნაკბენები, ამ არის კიდევ რამდენიმე ნაკბენები. 77 00:03:19,070 --> 00:03:23,260 ვერ გვაქვს მოხალისე მოდის მდე და აურიეთ us ზოგიერთი სასმელების, თუ იცნობს? 78 00:03:23,260 --> 00:03:23,920 კარგით up. 79 00:03:23,920 --> 00:03:24,815 რა არის შენი სახელი? 80 00:03:24,815 --> 00:03:25,260 >> Jess: Jess. 81 00:03:25,260 --> 00:03:25,690 >> დავით Malan: Jess? 82 00:03:25,690 --> 00:03:26,540 კარგით up, Jess. 83 00:03:26,540 --> 00:03:29,180 თუ არ გათვალისწინებით, ჩვენ უნდა დააყენოს Google მინის თქვენ ასე რომ ჩვენ შეგვიძლია 84 00:03:29,180 --> 00:03:30,430 immortalize ამ. 85 00:03:30,430 --> 00:03:32,800 86 00:03:32,800 --> 00:03:34,670 OK, მინა. 87 00:03:34,670 --> 00:03:37,250 ჩაწერა ვიდეო. 88 00:03:37,250 --> 00:03:43,103 და კი ბატონო, ჩვენ ვართ კარგი წასვლა Jess აქ. 89 00:03:43,103 --> 00:03:43,810 ყველა უფლება. 90 00:03:43,810 --> 00:03:45,120 კარგია თქვენთან შეხვედრა. 91 00:03:45,120 --> 00:03:47,720 >> ასე რომ, რა მინდა თქვენ აქ - თუ შეიძლება, საკმაოდ სწრაფად - 92 00:03:47,720 --> 00:03:51,040 მხოლოდ pours us ნახევარი ჭიქა ფორთოხლის წვენი და ნახევარი ჭიქა რძე, 93 00:03:51,040 --> 00:03:55,710 წარმოადგენს ეფექტურად ნომრები 1 ერთ თასი და 2 სხვა თასი. 94 00:03:55,710 --> 00:04:01,380 95 00:04:01,380 --> 00:04:02,630 >> ეს იქნება კარგი კადრები. 96 00:04:02,630 --> 00:04:04,910 97 00:04:04,910 --> 00:04:05,860 >> Jess: უკაცრავად. 98 00:04:05,860 --> 00:04:06,330 >> დავით Malan: არა, არა. 99 00:04:06,330 --> 00:04:08,703 ეს OK. 100 00:04:08,703 --> 00:04:10,120 ლამაზი. 101 00:04:10,120 --> 00:04:12,950 ყველა უფლება, ამიტომ ჩვენ ოთხი bytes ღირებულების ფორთოხლის წვენი. 102 00:04:12,950 --> 00:04:14,460 ჩვენ ყველაფერს უწოდა ღირებულება 1. 103 00:04:14,460 --> 00:04:16,579 ახლა კიდევ ოთხი bytes ღირებულების რძე. 104 00:04:16,579 --> 00:04:18,519 იქნება მას ვაფასებთ 2. 105 00:04:18,519 --> 00:04:20,440 ასე რომ x და y, შესაბამისად. 106 00:04:20,440 --> 00:04:23,450 >> ყველა უფლება, ასე რომ, ახლა, თუ დავალება მხრივ - თქვენ, Jess, წინ ყველა 107 00:04:23,450 --> 00:04:24,270 თქვენი თანაკლასელები - 108 00:04:24,270 --> 00:04:28,510 არის სვოპ ღირებულებები x და y ისეთი რომ ჩვენ გვინდა ფორთოხლის წვენი in 109 00:04:28,510 --> 00:04:32,070 სხვა თასი და რძის ამ თასი, თუ როგორ შეიძლება თქვენ - სანამ რეალურად გააკეთებს 110 00:04:32,070 --> 00:04:34,020 ეს - წავიდეთ შესახებ აკეთებენ? 111 00:04:34,020 --> 00:04:35,220 >> კარგი, ჭკვიანი გადაწყვეტილება. 112 00:04:35,220 --> 00:04:36,340 ასე რომ, თქვენ უნდა უფრო მეტი მეხსიერება. 113 00:04:36,340 --> 00:04:38,190 მოდით გამოყოფს დროებითი თასი, თუ გნებავთ. 114 00:04:38,190 --> 00:04:40,540 ახლა კი გაგრძელება სვოპ x და y. 115 00:04:40,540 --> 00:04:52,950 116 00:04:52,950 --> 00:04:53,530 >> შესანიშნავი. 117 00:04:53,530 --> 00:04:54,420 ასე რომ, ძალიან კარგად გაკეთდეს. 118 00:04:54,420 --> 00:04:55,670 ძალიან დიდი მადლობა, Jess. 119 00:04:55,670 --> 00:04:59,520 120 00:04:59,520 --> 00:05:00,020 აქ თქვენ ხართ. 121 00:05:00,020 --> 00:05:01,950 პატარა სუვენირების. 122 00:05:01,950 --> 00:05:04,350 >> OK, ასე თვალნათლივ, სუპერ მარტივი იდეით. 123 00:05:04,350 --> 00:05:07,500 სრულიად გასაგები, რომ ჩვენ გვჭირდება ცოტა უფრო შენახვის სივრცეში - ამ ფორმით, 124 00:05:07,500 --> 00:05:09,750 თასის - თუ ჩვენ რეალურად გვინდა სვოპ ამ ორ ცვლადს. 125 00:05:09,750 --> 00:05:11,110 მოდით გააკეთოს ზუსტად რომ. 126 00:05:11,110 --> 00:05:14,330 აქ შორის, სადაც მე პრეტენზია ვარ უნდა აკეთებს რაღაც შევცვალე, მე 127 00:05:14,330 --> 00:05:15,720 წავიდეთ წინ და აცხადებენ, temp. 128 00:05:15,720 --> 00:05:17,980 და მე მითითებული ეს ტოლია, ვთქვათ, x. 129 00:05:17,980 --> 00:05:21,110 >> ამის შემდეგ მე ვაპირებ შეცვლას ღირებულება x ისევე, როგორც Jess გააკეთა აქ 130 00:05:21,110 --> 00:05:23,200 რძე და ფორთოხლის წვენი როგორც თანაბარი წ. 131 00:05:23,200 --> 00:05:27,460 და მე შეიცვლება შ უტოლდება რათა არ x, რადგან ახლა ჩვენ უნდა 132 00:05:27,460 --> 00:05:29,530 მოხდა წრეში, არამედ დროებითი. 133 00:05:29,530 --> 00:05:33,170 სადაც მე დროებით - ან სადაც Jess დროებით დააყენა ფორთოხლის წვენი 134 00:05:33,170 --> 00:05:35,460 ადრე clobbering რომ თასის ერთად რძე. 135 00:05:35,460 --> 00:05:37,250 >> ნება მომეცით წავიდეთ წინ არის და ეს. 136 00:05:37,250 --> 00:05:39,210 ეს მოუწოდა noswap.c. 137 00:05:39,210 --> 00:05:41,190 ახლა კი ნება მომეცით აწარმოებს გარეშე სვოპ. 138 00:05:41,190 --> 00:05:43,910 მართლაც ვხედავ, თუ გაფართოებას ფანჯარა ცოტა, რომ 139 00:05:43,910 --> 00:05:45,160 x 1, y 2. 140 00:05:45,160 --> 00:05:47,230 და მაშინ x 2, y არის 1. 141 00:05:47,230 --> 00:05:51,910 >> მაგრამ გავიხსენოთ, რომ ორშაბათს გავაკეთეთ რამ ცოტა განსხვავებულად რომლის I 142 00:05:51,910 --> 00:05:56,760 ნაცვლად განხორციელებული დამხმარე ფუნქცია, თუ გნებავთ, რომ რეალურად ბათილად. 143 00:05:56,760 --> 00:05:58,010 მე მას მოკლე. 144 00:05:58,010 --> 00:06:01,600 მივეცი მას ორ პარამეტრების, და მე მოუწოდა მათ მე და მოუწოდა მათ ბ. 145 00:06:01,600 --> 00:06:04,380 >> გულწრფელად ვამბობ, მე ვერ მოვუწოდებთ მათ x და y. 146 00:06:04,380 --> 00:06:06,040 არაფერია შეჩერების ჩემს აკეთებს, რომ. 147 00:06:06,040 --> 00:06:08,140 მაგრამ მე ამტკიცებენ, რომ ეს მაშინ ცოტა ბუნდოვანია. 148 00:06:08,140 --> 00:06:11,910 იმის გამო, რომ გაწვევა for ორშაბათს, რომ ჩვენ ამტკიცებდა, რომ ამ პარამეტრების იყო 149 00:06:11,910 --> 00:06:13,650 ასლები ღირებულებების გავიდა სისტემაში 150 00:06:13,650 --> 00:06:15,640 ასე რომ, ეს უბრალოდ messes თქვენი გონება, მე ვფიქრობ, თუ თქვენ იყენებთ 151 00:06:15,640 --> 00:06:17,370 ზუსტად იგივე ცვლადი. 152 00:06:17,370 --> 00:06:20,150 >> ასე რომ მე ნაცვლად მოვუწოდებთ მათ და ბ, მხოლოდ სიცხადე. 153 00:06:20,150 --> 00:06:21,840 მაგრამ ჩვენ შეგვიძლია მოვუწოდებთ მათ საუკეთესო არაფერი გვინდა. 154 00:06:21,840 --> 00:06:26,280 და მე ვაპირებ დააკოპირეთ და ჩასვით ეფექტურად ამ კოდს იქ 155 00:06:26,280 --> 00:06:27,170 ქვემოთ შევიდა აქ. 156 00:06:27,170 --> 00:06:29,110 იმის გამო, რომ მე დავინახე, რომ ის მუშაობს. 157 00:06:29,110 --> 00:06:30,790 ასე რომ, ამ საკმაოდ კარგი ფორმის. 158 00:06:30,790 --> 00:06:37,390 და მე შეცვლა x to, ჩემი x to, ჩემი y to ბ და ჩემი Y to ბ. 159 00:06:37,390 --> 00:06:39,130 >> ასე რომ, სხვა სიტყვებით, ზუსტად იგივე ლოგიკა. 160 00:06:39,130 --> 00:06:40,850 ზუსტად იგივე, რაც Jess გააკეთა. 161 00:06:40,850 --> 00:06:44,350 და მაშინ ერთი რამ უნდა გავაკეთოთ up აქ, რა თქმა უნდა, არის დაეყრდნოს ამ 162 00:06:44,350 --> 00:06:45,990 ფუნქცია, ან დარეკეთ ამ ფუნქციას. 163 00:06:45,990 --> 00:06:50,430 ასე რომ, მე მოვუწოდებ ამ ფუნქციის ორ საშუალებებით, x და y და ჰიტ შენახვა. 164 00:06:50,430 --> 00:06:52,300 >> ყველა უფლება, პრინციპულად იგივე. 165 00:06:52,300 --> 00:06:55,570 რეალურად, მე ალბათ გააკეთა პროგრამა ზედმეტად კომპლექსი მიერ 166 00:06:55,570 --> 00:07:00,820 წერის ფუნქცია, უბრალოდ აღების ზოგიერთი ექვსი ხაზი კოდი, ხოლო I 167 00:07:00,820 --> 00:07:02,970 ადრე განხორციელდა ეს მხოლოდ სამი. 168 00:07:02,970 --> 00:07:06,230 >> ნება მომეცით წავიდეთ წინ არის და რიმეიკი ეს, არავითარი გაცვლა. 169 00:07:06,230 --> 00:07:07,920 ყველა უფლება, I ბრალია აქ. 170 00:07:07,920 --> 00:07:11,290 ეს უნდა იყოს შეცდომა, რომ თქვენ შეიძლება ვხედავთ სულ უფრო და უფრო ხშირად, როგორც თქვენი 171 00:07:11,290 --> 00:07:12,380 პროგრამების კიდევ უფრო რთული. 172 00:07:12,380 --> 00:07:13,470 მაგრამ ადვილი გადავწყვიტოთ. 173 00:07:13,470 --> 00:07:15,650 ნება მომეცით გადახვევა უკან აქ. 174 00:07:15,650 --> 00:07:18,190 >> და რაც პირველი შეცდომა მე ხედავს? 175 00:07:18,190 --> 00:07:19,520 იმპლიციტური დეკლარაცია. 176 00:07:19,520 --> 00:07:21,466 რას, როგორც წესი, მიუთითებს იმაზე? 177 00:07:21,466 --> 00:07:22,830 ოჰ, დამავიწყდა პროტოტიპი. 178 00:07:22,830 --> 00:07:26,900 დამავიწყდა ასწავლოს შემდგენელი რომ swap აპირებს არსებობს მიუხედავად იმისა რომ იგი 179 00:07:26,900 --> 00:07:28,920 არ არსებობს თავიდანვე პროგრამის. 180 00:07:28,920 --> 00:07:35,780 ასე რომ, მე მხოლოდ თქმას ბათილად, გაცვლა, int, int b, მძიმით. 181 00:07:35,780 --> 00:07:37,280 >> ასე რომ, მე არ ვაპირებ reimplement იგი. 182 00:07:37,280 --> 00:07:39,140 მაგრამ ახლა სიას რა ქვემოთ აქ. 183 00:07:39,140 --> 00:07:42,530 და შეამჩნია, არარსებობის მძიმით აქ, რაც არ არის აუცილებელი, როდესაც 184 00:07:42,530 --> 00:07:43,200 ახორციელებს. 185 00:07:43,200 --> 00:07:46,010 >> ნება მომეცით რიმეიკი ამ, არანაირი გაცვლა. 186 00:07:46,010 --> 00:07:46,910 ბევრად უკეთესი ფორმის. 187 00:07:46,910 --> 00:07:48,130 გაშვება არ swap. 188 00:07:48,130 --> 00:07:48,740 და რა იგი. 189 00:07:48,740 --> 00:07:51,650 ახლა ჩვენ უკან სად ვიყავით ორშაბათს, სადაც რამ არ სვოპ. 190 00:07:51,650 --> 00:07:55,410 >> და რაც ინტუიციური ახსნა თუ რატომ ეს იმ შემთხვევაში? 191 00:07:55,410 --> 00:07:56,380 ჰო? 192 00:07:56,380 --> 00:07:57,630 >> სტუდენტი: [inaudible]. 193 00:07:57,630 --> 00:08:04,140 194 00:08:04,140 --> 00:08:05,230 >> დავით Malan: ზუსტად. 195 00:08:05,230 --> 00:08:07,330 ასე და ბ არის ასლები x და y. 196 00:08:07,330 --> 00:08:10,680 და სინამდვილეში, ნებისმიერ დროს თქვენ უკვე მოუწოდებენ ფუნქცია დღემდე რომ 197 00:08:10,680 --> 00:08:12,540 გადის ცვლადები, როგორიცაა ints - 198 00:08:12,540 --> 00:08:14,470 ისევე როგორც swap ელოდება აქ - 199 00:08:14,470 --> 00:08:16,270 თქვენ ბიჭები უკვე გადადის ასლი. 200 00:08:16,270 --> 00:08:19,150 >> ახლა ეს ნიშნავს, რომ სჭირდება ცოტა დრო, გაყოფილი მეორე, იმ 201 00:08:19,150 --> 00:08:23,270 კომპიუტერული კოპირება bits ერთი ცვლადი შევიდა ბიტი ერთმანეთს. 202 00:08:23,270 --> 00:08:24,610 მაგრამ ეს არ არის ისეთი დიდი გარიგება. 203 00:08:24,610 --> 00:08:25,920 მაგრამ ისინი მაინც ასლი. 204 00:08:25,920 --> 00:08:30,020 >> ასე რომ, ახლა, კონტექსტში გაცვლა, მე ვარ ფაქტიურად წარმატებით 205 00:08:30,020 --> 00:08:31,180 იცვლება და ბ. 206 00:08:31,180 --> 00:08:33,000 ფაქტია, მოდით სწრაფად საღი აზრის შესამოწმებლად. 207 00:08:33,000 --> 00:08:36,830 ბეჭდვის ვ არის% i, ახალი ხაზი. 208 00:08:36,830 --> 00:08:38,770 და მოდით plug in. 209 00:08:38,770 --> 00:08:41,830 ახლა იგივეს რამ ბ. 210 00:08:41,830 --> 00:08:43,640 და მოდით გავაკეთოთ იგივე აქ. 211 00:08:43,640 --> 00:08:47,260 >> ახლა კი, ნება მომეცით კოპირება იმავე ხაზები ერთხელ ბოლოში ფუნქცია 212 00:08:47,260 --> 00:08:51,250 შემდეგ სამი ხაზი საინტერესო შეეძლო შესრულებული და 213 00:08:51,250 --> 00:08:53,270 ბეჭდვა და ბ კიდევ ერთხელ. 214 00:08:53,270 --> 00:08:56,030 ასე რომ, ახლა მოდით ეს, არავითარი გაცვლა. 215 00:08:56,030 --> 00:08:58,430 ნება მომეცით მიიღოს ტერმინალში ფანჯარა ცოტა taller, ისე, რომ ჩვენ ვხედავთ 216 00:08:58,430 --> 00:08:59,520 მეტი ერთბაშად. 217 00:08:59,520 --> 00:09:00,860 >> და აწარმოებს გარეშე სვოპ. 218 00:09:00,860 --> 00:09:04,000 x 1, y 2. 1, ბ, 2. 219 00:09:04,000 --> 00:09:06,070 და მაშინ, 2, B არის 1. 220 00:09:06,070 --> 00:09:09,390 ასე რომ, ეს მუშაობს, ისევე, როგორც Jess გააკეთა აქ შიგნით swap. 221 00:09:09,390 --> 00:09:13,090 მაგრამ, რა თქმა უნდა, ეს არ გააჩნია ეფექტი on ცვლადები მთავარ. 222 00:09:13,090 --> 00:09:15,360 >> ასე რომ, ჩვენ ვნახეთ შეასრულა, რომლის დროსაც ჩვენ შეიძლება დაფიქსირება ამ, არა? 223 00:09:15,360 --> 00:09:19,560 როდესაც თქვენ წინაშე აღმოჩნდა ამ სკოუპინგის საკითხთან დაკავშირებით, შეიძლება მხოლოდ punt და მიიღოს x 224 00:09:19,560 --> 00:09:22,400 და Y, თუ რა სახის ცვლადები ნაცვლად? 225 00:09:22,400 --> 00:09:23,390 >> თქვენ შესაძლოა მათ გლობალური. 226 00:09:23,390 --> 00:09:27,560 იქნება მათთვის ძალიან დასაწყისში ფაილი როგორც ჩვენ გავაკეთეთ, თუნდაც თამაში 15. 227 00:09:27,560 --> 00:09:28,890 ჩვენ ვიყენებთ გლობალური განსხვავებულია. 228 00:09:28,890 --> 00:09:32,420 მაგრამ კონტექსტში თამაში 15 მიზანშეწონილი აქვს გლობალური 229 00:09:32,420 --> 00:09:37,170 ცვლადი წარმოადგენს გამგეობის, რადგან მთლიანად of 15.c არის ყველა 230 00:09:37,170 --> 00:09:38,650 დაახლოებით ახორციელებს, რომ თამაში. 231 00:09:38,650 --> 00:09:41,470 სწორედ ფაილი არსებობს უნდა გააკეთოს. 232 00:09:41,470 --> 00:09:44,170 >> მაგრამ ამ შემთხვევაში აქ ვარ მოუწოდებენ ფუნქცია გაცვლა. 233 00:09:44,170 --> 00:09:45,380 მინდა მოკლე ორ ცვლადს. 234 00:09:45,380 --> 00:09:48,950 და დაიწყება თავს უბრალოდ დაუდევარი თუ გამოსავალი ყველა ჩვენი 235 00:09:48,950 --> 00:09:51,300 პრობლემები, როდესაც ჩვენ გადაეყარონ ფარგლებს საკითხი არის, რომ მას გლობალური. 236 00:09:51,300 --> 00:09:54,730 იმის გამო, რომ ძალიან სწრაფად ჩვენი პროგრამა აპირებს გახდეს საკმაოდ სასადილო. 237 00:09:54,730 --> 00:09:57,760 და ჩვენ გავაკეთეთ, რომ ძალიან sparingly შედეგად ამ 15.c. 238 00:09:57,760 --> 00:10:00,470 >> მაგრამ აღმოჩნდება, რომ არსებობს უკეთესი გზა საერთოდ. 239 00:10:00,470 --> 00:10:05,600 ნება მომეცით რეალურად დაბრუნდეს და წაშლა ბეჭდვა ვ ის, უბრალოდ უნდა გამარტივდეს ეს კოდი. 240 00:10:05,600 --> 00:10:09,160 და ნება მომეცით ინიციატივით კი, ეს, რა თქმა უნდა, არის ცუდი. 241 00:10:09,160 --> 00:10:15,990 მაგრამ, თუ ნაცვლად დაამატოთ ზოგიერთ asterisks და ვარსკვლავები, მე შემიძლია ნაცვლად, ვინც ეს 242 00:10:15,990 --> 00:10:18,670 ფუნქციის ერთ, რომ რეალურად ფუნქციონირებს. 243 00:10:18,670 --> 00:10:25,020 >> ნება მომეცით, დაბრუნდეს აქ და აღიარებს, ამბობდა asterisks ყოველთვის ძნელია, 244 00:10:25,020 --> 00:10:26,170 ასე რომ მე ვთქვა ვარსკვლავი. 245 00:10:26,170 --> 00:10:27,660 მე მხოლოდ Fess მდე გამო. 246 00:10:27,660 --> 00:10:28,190 ყველა უფლება. 247 00:10:28,190 --> 00:10:30,190 ახლა კი, რა ვარ მე აპირებს ამის გაკეთება ნაცვლად? 248 00:10:30,190 --> 00:10:34,130 >> ასე რომ, პირველ რიგში, მე ვაპირებ დააკონკრეტა რომ ნაცვლად გავლის int შევიდა 249 00:10:34,130 --> 00:10:37,980 swap ფუნქციის, მე ვარ ნაცვლად საქართველოს თქმას int ვარსკვლავი. 250 00:10:37,980 --> 00:10:39,170 ახლა, რა ვარსკვლავი მიუთითოს? 251 00:10:39,170 --> 00:10:41,970 ეს არის ის, რომ ცნება მაჩვენებელი, Binky, claymation ხასიათი, იყო 252 00:10:41,970 --> 00:10:43,465 გულისხმობდა მომენტში წინ. 253 00:10:43,465 --> 00:10:47,610 >> ასე რომ, თუ ვიტყვით, int ვარსკვლავი, მნიშვნელობა ეს ახლა ის არის, რომ არ აპირებს იყოს 254 00:10:47,610 --> 00:10:49,110 მიღებული თავისი მნიშვნელობა. 255 00:10:49,110 --> 00:10:50,350 ეს არ იქნება გადაწერილი სისტემაში 256 00:10:50,350 --> 00:10:54,700 უფრო მეტიც, მისამართი არის უნდა გავიდა სისტემაში 257 00:10:54,700 --> 00:10:57,840 >> ასე რომ გავიხსენოთ, რომ შიგნით თქვენი კომპიუტერი ეს არის მთელი bunch of მეხსიერება, წინააღმდეგ შემთხვევაში 258 00:10:57,840 --> 00:10:58,760 ცნობილია როგორც ოპერატიული. 259 00:10:58,760 --> 00:11:00,520 და რომ RAM მხოლოდ მთელი bunch of bytes. 260 00:11:00,520 --> 00:11:03,320 ასე რომ, თუ თქვენი Mac ან თქვენს კომპიუტერს ორი გიგაბაიტი, თქვენ გაქვთ 2 261 00:11:03,320 --> 00:11:05,760 მილიარდი bytes მეხსიერება. 262 00:11:05,760 --> 00:11:08,440 >> ახლა მხოლოდ ვარაუდობენ, რომ უბრალოდ უნდა შენარჩუნება რამ ლამაზი და მოწესრიგებული, ჩვენ 263 00:11:08,440 --> 00:11:09,450 დაავალოს მისამართი - 264 00:11:09,450 --> 00:11:10,170 ნომერი - 265 00:11:10,170 --> 00:11:12,270 ყველა byte ოპერატიული თქვენს კომპიუტერში. 266 00:11:12,270 --> 00:11:15,410 პირველივე byte იმ 2 მილიარდი არის რაოდენობის მიხედვით ნულის ტოლია. 267 00:11:15,410 --> 00:11:18,572 მომდევნო ერთი byte ნომერ, ნომერი ორი, ყველა გზა მდე, dot dot 268 00:11:18,572 --> 00:11:20,530 dot, დაახლოებით 2 მილიარდი. 269 00:11:20,530 --> 00:11:23,640 >> ასე რომ თქვენ რაოდენობის bytes მეხსიერების თქვენს კომპიუტერში. 270 00:11:23,640 --> 00:11:26,460 მოდით ვივარაუდოთ, რომ ის, რაც ვგულისხმობთ მისამართი. 271 00:11:26,460 --> 00:11:31,360 ასე რომ, როდესაც მე ვხედავ int ვარსკვლავი, თუ რა ხდება უნდა შევიდა swap ახლა არის 272 00:11:31,360 --> 00:11:32,830 მისამართი. 273 00:11:32,830 --> 00:11:37,150 არა მისი ღირებულება, მაგრამ რაც მის საფოსტო მისამართი, ასე ვთქვათ - 274 00:11:37,150 --> 00:11:38,810 თავისი მდებარეობით ოპერატიული. 275 00:11:38,810 --> 00:11:41,250 >> და ერთნაირად შეეხება ბ, მე ვაპირებ ვთქვა იგივე. 276 00:11:41,250 --> 00:11:42,720 Int, ვარსკვლავი, ბ. 277 00:11:42,720 --> 00:11:46,350 როგორც განზე, ტექნიკურად ვარსკვლავი შეიძლება წავიდეს სხვა ადგილებში. 278 00:11:46,350 --> 00:11:50,140 მაგრამ ჩვენ სტანდარტიზაციისთვის წლის ვარსკვლავი მიმდინარეობს უფლება შემდეგ მონაცემების ტიპის. 279 00:11:50,140 --> 00:11:54,080 >> ასე რომ სვოპ ხელმოწერის ახლა იმას ნიშნავს, მომეცი მისამართი int და მოწოდება 280 00:11:54,080 --> 00:11:55,400 აღნიშნულ მისამართზე. 281 00:11:55,400 --> 00:11:58,690 და მომეცი კიდევ ერთი მისამართი int და მოვუწოდებთ, რომ მისამართი ბ. 282 00:11:58,690 --> 00:12:01,120 >> მაგრამ ახლა ჩემს კოდი აქ უნდა შეცვალოს. 283 00:12:01,120 --> 00:12:03,470 იმიტომ, რომ თუ ვაცხადებ int temp - 284 00:12:03,470 --> 00:12:05,580 რომელიც ჯერ კიდევ ტიპის int - 285 00:12:05,580 --> 00:12:08,700 მაგრამ მე შესანახად მას, რა სახის მნიშვნელობა? 286 00:12:08,700 --> 00:12:12,870 იმისათვის რომ ნათელი, მე აყენებს ერთად კოდი სახით, ახლა? 287 00:12:12,870 --> 00:12:14,360 >> მე აყენებს ადგილმდებარეობა. 288 00:12:14,360 --> 00:12:16,500 მაგრამ მე არ აინტერესებს ადგილმდებარეობა ახლა, არა? 289 00:12:16,500 --> 00:12:21,940 Temp არსებობს მხოლოდ Jess "მესამე თასი არსებობდა, რა მიზნით? 290 00:12:21,940 --> 00:12:23,090 შესანახად ღირებულება. 291 00:12:23,090 --> 00:12:24,830 რძე ან ფორთოხლის წვენი. 292 00:12:24,830 --> 00:12:28,520 არ რეალურად შესანახად მისამართი ან იმ რამ, რაც გრძნობს 293 00:12:28,520 --> 00:12:31,200 ცოტა nonsensical ამ რეალური მსოფლიოს კონტექსტში მაინც. 294 00:12:31,200 --> 00:12:34,990 >> ასე რომ, რეალურად, რა მინდა დააყენა temp არ არის მისამართი, მაგრამ 295 00:12:34,990 --> 00:12:36,180 შინაარსი. 296 00:12:36,180 --> 00:12:41,930 ასე რომ, თუ არის მთელი რიგი მოსწონს 123, ეს 123rd byte მეხსიერების რომ მხოლოდ 297 00:12:41,930 --> 00:12:45,090 ხდება, რომ საოკუპაციო, რომ ღირებულება in ხდება, რომ საოკუპაციო. 298 00:12:45,090 --> 00:12:49,040 >> თუ მე მინდა რომ მისამართი, მე უნდა ვთქვა ვარსკვლავი. 299 00:12:49,040 --> 00:12:52,610 ანალოგიურად, მე რომ შეცვალოს რა შემდეგ მისამართზე, მე შეცვლის 300 00:12:52,610 --> 00:12:53,570 ამ დასაწყებად. 301 00:12:53,570 --> 00:12:58,185 თუკი მინდა მაღაზიის რა დროს ადგილმდებარეობა, თუ რა დროს ადგილმდებარეობა 302 00:12:58,185 --> 00:13:02,180 ერთი ბ, ვარსკვლავი ბ ვარსკვლავი. 303 00:13:02,180 --> 00:13:05,340 >> ასე რომ, მოკლე, მაშინაც კი, თუ ეს არ არის საკმაოდ იძირებოდა in ჯერ - და მე არ ველოდი 304 00:13:05,340 --> 00:13:06,560 რომ ეს ასე სწრაფად - 305 00:13:06,560 --> 00:13:11,100 გააცნობიეროს, რომ ყველა მე ვაკეთებ არის prefixing ამ ვარსკვლავს ჩემს ცვლადები, 306 00:13:11,100 --> 00:13:13,350 გამონათქვამი არ დაიბრუნოს ღირებულებებს. 307 00:13:13,350 --> 00:13:14,520 არ იცვლება ღირებულებები. 308 00:13:14,520 --> 00:13:17,600 არამედ, წავიდეთ იმ მისამართები და მიიღეთ მნიშვნელობა. 309 00:13:17,600 --> 00:13:21,430 გადასვლა რომ მისამართი და ცვლილება ღირებულება არსებობს. 310 00:13:21,430 --> 00:13:25,500 >> ასე რომ, ახლა ნება მომეცით გადახვევა უკან რა, უბრალოდ დაფიქსირება ამ ხაზის აქ, 311 00:13:25,500 --> 00:13:27,690 შეცვლის პროტოტიპი ემთხვევა. 312 00:13:27,690 --> 00:13:30,280 მაგრამ მე ახლა უნდა გავაკეთოთ ერთი რამ. 313 00:13:30,280 --> 00:13:35,500 ინტუიციურად, თუ მე შეიცვალა ტიპის არგუმენტი, რომ swap ელოდება, 314 00:13:35,500 --> 00:13:37,245 მერე, მეტი რა უნდა იცვლება ჩემი კოდი? 315 00:13:37,245 --> 00:13:39,750 316 00:13:39,750 --> 00:13:40,840 >> როდესაც მე მოვუწოდებ გაცვლა. 317 00:13:40,840 --> 00:13:43,340 იმის გამო, რომ სწორედ ახლა, რა ვარ მე გავლით სვოპ მაინც? 318 00:13:43,340 --> 00:13:47,450 ღირებულება x და ღირებულება Y ან რძე და ფორთოხლის წვენი. 319 00:13:47,450 --> 00:13:48,510 მაგრამ მე არ მინდა, რომ. 320 00:13:48,510 --> 00:13:51,060 I ნაცვლად მინდა გავლა, თუ რა? 321 00:13:51,060 --> 00:13:53,050 მდებარეობა x და მდებარეობა წ. 322 00:13:53,050 --> 00:13:55,300 რა არის მათი საფოსტო მისამართები, ასე ვთქვათ. 323 00:13:55,300 --> 00:13:57,600 >> ასე გავაკეთოთ, რომ არსებობს ampersand. 324 00:13:57,600 --> 00:13:59,260 Ampersand სახის ჟღერს მისამართი. 325 00:13:59,260 --> 00:14:03,240 ასე n, ampersand, მისამართი საქართველოს x, და მისამართი წ. 326 00:14:03,240 --> 00:14:06,790 ასე რომ, ეს განზრახ, რომ ჩვენ ვიყენებთ ampersands დარეკვის ფუნქცია, 327 00:14:06,790 --> 00:14:10,230 და ვარსკვლავები, როცა გამოცხადების და როდესაც ახორციელებს ფუნქცია. 328 00:14:10,230 --> 00:14:14,220 >> და მხოლოდ ვფიქრობ ampersand როგორც მისამართი ოპერატორი, და ვარსკვლავი, როგორც 329 00:14:14,220 --> 00:14:15,490 წავალთ ოპერატორი - 330 00:14:15,490 --> 00:14:18,640 ან, უფრო სწორად, dereference ოპერატორი. 331 00:14:18,640 --> 00:14:23,480 ასე რომ, მთელი ბევრი სიტყვები უბრალოდ უნდა ამბობენ, რომ ახლა, იმედია, გაცვლა აპირებს 332 00:14:23,480 --> 00:14:24,440 უფრო სწორად. 333 00:14:24,440 --> 00:14:26,550 >> ნება მომეცით წავიდეთ წინ და მიიღოს - 334 00:14:26,550 --> 00:14:30,940 მოდით რეალურად გადარქმევა ფაილი, ნუუკუე ეს პროგრამა ჯერ კიდევ ეწოდოს არ swap. 335 00:14:30,940 --> 00:14:33,240 I აცხადებენ, რომ ჩვენ მოვუწოდებთ მას swap.c არის. 336 00:14:33,240 --> 00:14:35,670 ასე რომ, მოკლე. 337 00:14:35,670 --> 00:14:37,520 Dot, ხაზი, მოკლე. 338 00:14:37,520 --> 00:14:40,210 >> ახლა კი მართლაც, x, 1 Y არის 2. 339 00:14:40,210 --> 00:14:44,040 და მაშინ, x 2, y არის ერთი. 340 00:14:44,040 --> 00:14:46,500 ისე ვნახოთ, შევძლებთ თუ არა ამის გაკეთება ცოტა განსხვავებულად, თუ რა არის 341 00:14:46,500 --> 00:14:47,180 ხდება აქ. 342 00:14:47,180 --> 00:14:51,250 პირველ რიგში, ნება მომეცით დიდი ზომით ჩვენი ხაზვა აქ. 343 00:14:51,250 --> 00:14:54,160 და ნება მომეცით შესთავაზოს ერთი წუთით - და მაშინ, როდესაც მე მიაპყროს აქ იქნება სარკისებული 344 00:14:54,160 --> 00:14:58,660 იქ ახლა - ნება მომეცით ინიციატივით კი, აქ მთელი bunch of მეხსიერება, ან 345 00:14:58,660 --> 00:15:00,540 RAM, შიგნით ჩემი კომპიუტერი. 346 00:15:00,540 --> 00:15:04,140 >> და ეს იქნება bite ნომერი, ვთქვათ, 1. 347 00:15:04,140 --> 00:15:05,720 ეს იქნება bytes ნომერი 2. 348 00:15:05,720 --> 00:15:08,220 და მე გავაკეთებ მთელი bunch მეტი, და შემდეგ bunch of dot dot წერტილი უნდა 349 00:15:08,220 --> 00:15:10,880 მიუთითებს იმაზე, რომ იქ 2 მილიარდ ამ საკითხზე. 350 00:15:10,880 --> 00:15:13,520 4, 5, და ა.შ.. 351 00:15:13,520 --> 00:15:17,055 >> ასე რომ პირველი ხუთი bytes , ჩემი კომპიუტერის მეხსიერებაში. 352 00:15:17,055 --> 00:15:17,560 ყველა უფლება? 353 00:15:17,560 --> 00:15:19,060 ძალიან ცოტა გარეთ 2 მილიარდი. 354 00:15:19,060 --> 00:15:21,120 მაგრამ ახლა მე ვაპირებ შესთავაზოს შემდეგ. 355 00:15:21,120 --> 00:15:27,490 მე ვაპირებ ინიციატივით კი, x აპირებს შესანახად ნომერი 1 და y აპირებს 356 00:15:27,490 --> 00:15:29,690 შესანახად ნომერი 2. 357 00:15:29,690 --> 00:15:35,000 და ნება მომეცით წავიდეთ წინ არის და წარმოადგენს ეს ფასეულობები ასეთია. 358 00:15:35,000 --> 00:15:41,510 >> მოდით ეს შემდეგნაირად. 359 00:15:41,510 --> 00:15:42,870 მომეცი მხოლოდ ერთი მეორე. 360 00:15:42,870 --> 00:15:44,150 ერთი მეორე. 361 00:15:44,150 --> 00:15:45,680 OK. 362 00:15:45,680 --> 00:15:47,560 მინდა, რომ ეს პატარა - 363 00:15:47,560 --> 00:15:50,440 მოდით ეს კიდევ ერთხელ გავაკეთოთ. 364 00:15:50,440 --> 00:15:53,250 წინააღმდეგ შემთხვევაში მე ვაპირებ და გამოყენების იგივე ნომრები, უნებლიეთ, 365 00:15:53,250 --> 00:15:54,230 რამდენჯერმე. 366 00:15:54,230 --> 00:15:57,320 >> ასე რომ, მხოლოდ ასე გვაქვს სხვადასხვა ნომრები ვისაუბროთ, მოდით მოვუწოდებთ ამ byte 367 00:15:57,320 --> 00:16:03,391 ნომერი 123, 124, 125, 126, და dot dot dot. 368 00:16:03,391 --> 00:16:08,400 და ნება მომეცით აცხადებენ, რომ მე ვაპირებ დააყენა ღირებულება 1 აქ და ღირებულება 2 369 00:16:08,400 --> 00:16:11,990 აქ, წინააღმდეგ შემთხვევაში, ცნობილია, როგორც x და y. 370 00:16:11,990 --> 00:16:15,300 ასე რომ, ეს მხოლოდ ასე ხდება, რომ ეს არის x, ეს წ. 371 00:16:15,300 --> 00:16:18,180 >> და მხოლოდ რამდენიმე შემთხვევითი შანსი, კომპიუტერი, ოპერაციული სისტემა, 372 00:16:18,180 --> 00:16:21,890 მოხდა დააყენოს x at მდებარეობა ნომერი 123. 373 00:16:21,890 --> 00:16:25,590 და Y დასრულდა at ადგილმდებარეობა 124 - 374 00:16:25,590 --> 00:16:26,330 რა იგი. 375 00:16:26,330 --> 00:16:28,700 მე უნდა დაფიქსირდეს ეს. 376 00:16:28,700 --> 00:16:34,040 Oh ადამიანი, შემიძლია ნამდვილად გსურთ ამის გაკეთება? 377 00:16:34,040 --> 00:16:37,340 დიახ, მე მინდა დაფიქსირება ამ და ბ სათანადო შესახებ დღეს. 378 00:16:37,340 --> 00:16:39,950 უკაცრავად, ახალი, ამ. 379 00:16:39,950 --> 00:16:45,020 >> 127, 131, და მე არ მინდა, რომ ამ რთული, მაგრამ რატომ შევცვალო 380 00:16:45,020 --> 00:16:46,340 ნომერი? 381 00:16:46,340 --> 00:16:48,360 იმის გამო, რომ მინდა ints to სინამდვილეში ოთხი bytes. 382 00:16:48,360 --> 00:16:49,810 მოდით ეს სუპერ anal შესახებ. 383 00:16:49,810 --> 00:16:53,800 ასე რომ, თუ 1 მოხდება უნდა მიმართა 123, 2 აპირებს იყოს მისამართი 384 00:16:53,800 --> 00:16:55,730 127 იმიტომ რომ მხოლოდ 4 byes მოშორებით. 385 00:16:55,730 --> 00:16:56,210 ეს იყო. 386 00:16:56,210 --> 00:16:58,640 და ჩვენ დაივიწყოს ყველა სხვა მისამართები მსოფლიოში. 387 00:16:58,640 --> 00:17:03,320 >> ასე რომ x არის ადგილმდებარეობა 123, შ არის ადგილმდებარეობა 127. 388 00:17:03,320 --> 00:17:05,770 ახლა კი, რა რეალურად გსურთ? 389 00:17:05,770 --> 00:17:10,099 როდესაც მე მოვუწოდებ swap ახლა, რა რეალურად ხდება? 390 00:17:10,099 --> 00:17:14,920 როცა მოვუწოდებ swap, მე გადადის მისამართი x და მისამართი წ. 391 00:17:14,920 --> 00:17:18,540 ასე მაგალითად, თუ ეს ორი ცალი ქაღალდის ახლა წარმოადგენს ორი 392 00:17:18,540 --> 00:17:23,510 არგუმენტები და ბ სვოპ, რა ვარ მე აპირებს დააწერონ პირველი ეს, 393 00:17:23,510 --> 00:17:27,720 რომელიც მე ვაპირებ მოვუწოდო ეხება, როგორც? 394 00:17:27,720 --> 00:17:30,610 >> სწორედ 123. 395 00:17:30,610 --> 00:17:31,905 ასე რომ, ეს მე პრეტენზია. 396 00:17:31,905 --> 00:17:32,955 ეს არის პარამეტრი. 397 00:17:32,955 --> 00:17:35,856 მე აყენებს მისამართი x იქ. 398 00:17:35,856 --> 00:17:38,152 >> რა არის ეს? 399 00:17:38,152 --> 00:17:40,890 >> რა არის ეს? 400 00:17:40,890 --> 00:17:41,190 >> არა, არა. 401 00:17:41,190 --> 00:17:41,720 ეს არის ის, OK. 402 00:17:41,720 --> 00:17:42,570 მაინც კარგია, მაინც კარგია. 403 00:17:42,570 --> 00:17:43,530 ასე რომ, ეს. 404 00:17:43,530 --> 00:17:46,240 ახლა კი მეორე ცალი ქაღალდის, ეს იქნება ბ და რა ვარ მე 405 00:17:46,240 --> 00:17:49,010 უნდა წერილობით ამ ცალი ქაღალდის? 406 00:17:49,010 --> 00:17:50,080 127. 407 00:17:50,080 --> 00:17:53,720 >> ასე რომ, ერთადერთი, რაც შეიცვალა ჩვენი წინა თხრობა ამ ამბავი, 408 00:17:53,720 --> 00:17:58,590 ვიდრე ფაქტიურად 1 და 2, მე ვარ აპირებს გადის 123 და 127. 409 00:17:58,590 --> 00:18:02,130 და მე ახლა, რომ ეს შიგნით ამ ყუთში, ყველა უფლება? 410 00:18:02,130 --> 00:18:04,640 ასე რომ შავი ყუთი ახლა წარმოადგენს გაცვლა ფუნქცია. 411 00:18:04,640 --> 00:18:07,230 >> იმავდროულად, მოდით ახლა ვინმე განახორციელოს swap ფუნქცია. 412 00:18:07,230 --> 00:18:09,090 სად აქ მინდა მოხალისე? 413 00:18:09,090 --> 00:18:09,560 კარგით up. 414 00:18:09,560 --> 00:18:11,080 რა არის შენი სახელი? 415 00:18:11,080 --> 00:18:11,460 ჩარლი. 416 00:18:11,460 --> 00:18:12,080 ყველა უფლება, ჩარლი. 417 00:18:12,080 --> 00:18:14,810 კარგით up. 418 00:18:14,810 --> 00:18:17,310 >> ასე რომ, ჩარლი აპირებს ითამაშოს როლი ჩვენი შავი ყუთი. 419 00:18:17,310 --> 00:18:21,460 ჩარლი, რა მინდა თქვენ ამის გაკეთება ახლა განხორციელება swap ისე 420 00:18:21,460 --> 00:18:25,320 რომ, ამ ორი მისამართები, თქვენ რეალურად აპირებს 421 00:18:25,320 --> 00:18:26,330 შეცვალოს ღირებულებებს. 422 00:18:26,330 --> 00:18:28,290 და მე ჩუმად თქვენს ყურში როგორ უნდა აწარმოებს სატელევიზიო აქ. 423 00:18:28,290 --> 00:18:29,930 >> ასე რომ წავიდეთ წინ, და თქვენ შავ ყუთში. 424 00:18:29,930 --> 00:18:30,920 მიღწევა იქ. 425 00:18:30,920 --> 00:18:34,054 რა ღირებულებების ხედავთ, და რა ღირებულებების ხედავთ ბ? 426 00:18:34,054 --> 00:18:36,740 >> CHARLIE: არის 123 და ბ არის 127. 427 00:18:36,740 --> 00:18:37,530 >> დავით Malan: კარგი, ზუსტად. 428 00:18:37,530 --> 00:18:38,940 ახლა პაუზის იქ მხოლოდ ერთი წუთით. 429 00:18:38,940 --> 00:18:41,680 პირველი, რაც თქვენ უნდა გავაკეთოთ ახლა, კოდექსის მიხედვით - რომელიც 430 00:18:41,680 --> 00:18:43,220 მე ახლა დახევის up ეკრანზე - 431 00:18:43,220 --> 00:18:46,750 იქნება გამოყოს პატარა ცოტა მეხსიერება მოუწოდა temp. 432 00:18:46,750 --> 00:18:48,850 ამიტომ, მე ვაპირებ წავიდეთ წინ და გაძლევთ, რომ მეხსიერებაში. 433 00:18:48,850 --> 00:18:52,210 >> ასე რომ, ეს იქნება მესამე ცვლადის რომ თქვენ გაქვთ ხელმისაწვდომი 434 00:18:52,210 --> 00:18:54,080 თქვენ მოუწოდა temp. 435 00:18:54,080 --> 00:18:57,120 და რას აპირებთ დაწერა on დროებითი ცალი ქაღალდის? 436 00:18:57,120 --> 00:19:02,524 437 00:19:02,524 --> 00:19:03,470 >> CHARLIE: პოინტერები, არა? 438 00:19:03,470 --> 00:19:04,790 >> დავით Malan: კარგი, კარგად არ აუცილებლად მითითებას. 439 00:19:04,790 --> 00:19:07,230 ასე რომ ხაზი კოდი, რომ მე ხაზი გაუსვა, როდესაც მარჯვენა მხარეს, 440 00:19:07,230 --> 00:19:07,900 დავიწყოთ არსებობს. 441 00:19:07,900 --> 00:19:08,890 განცხადებაში ნათქვამია, ვარსკვლავი. 442 00:19:08,890 --> 00:19:11,670 ასე რომ, ამჟამად შენახვის ნომერი 123. 443 00:19:11,670 --> 00:19:16,660 და მხოლოდ ინტუიციურად, თუ რა საერთოდ ვარსკვლავი 123 ნიშნავს? 444 00:19:16,660 --> 00:19:21,630 >> მაგრამ კონკრეტულად, თუ არის 123, ვარსკვლავი იმას ნიშნავს, რა? 445 00:19:21,630 --> 00:19:22,560 ღირებულება. 446 00:19:22,560 --> 00:19:24,580 ან მეტი casually, წასასვლელად. 447 00:19:24,580 --> 00:19:28,620 ნება მომეცით ინიციატივით კი,, ჩატარების შემდეგ თქვენი მხრივ, წავიდეთ წინ და მკურნალობა, რომ 448 00:19:28,620 --> 00:19:29,430 თითქოს ეს რუკა. 449 00:19:29,430 --> 00:19:32,940 და ფეხით თავს მეტი კომპიუტერის მეხსიერება და ჩვენი რა არის 450 00:19:32,940 --> 00:19:36,520 ზე ადგილმდებარეობა 123. 451 00:19:36,520 --> 00:19:37,720 ზუსტად. 452 00:19:37,720 --> 00:19:41,100 >> ასე რომ, ჩვენ ვხედავთ დროს ადგილმდებარეობა 123 არის ის, რაც, ბუნებრივია? 453 00:19:41,100 --> 00:19:44,240 OK, ასე რომ მნიშვნელობა ახლა ხარ აპირებს ამოქმედებული temp? 454 00:19:44,240 --> 00:19:44,750 ზუსტად. 455 00:19:44,750 --> 00:19:45,600 ასე რომ წავიდეთ წინ და გაგვაჩნია. 456 00:19:45,600 --> 00:19:51,280 და წერა ნომერი 1 ცალი ქაღალდი, რომელიც გაკეთებული სახელწოდებით temp. 457 00:19:51,280 --> 00:19:53,540 >> ახლა კი მორიგი ნაბიჯი, რომელიც თქვენ აპირებს განახორციელოს 458 00:19:53,540 --> 00:19:54,310 იქნება რა. 459 00:19:54,310 --> 00:19:57,820 ისე, მარჯვენა მხარეს მომდევნო ხაზი კოდი არის ვარსკვლავი ბ. ბ of 460 00:19:57,820 --> 00:19:59,260 რა თქმა უნდა, ინახავს მისამართი. 461 00:19:59,260 --> 00:20:02,270 ეს ეხება 127. 462 00:20:02,270 --> 00:20:06,620 Star ბ ნიშნავს თუ რა, casually საუბარი? 463 00:20:06,620 --> 00:20:08,700 >> გადასვლა იყო. 464 00:20:08,700 --> 00:20:14,988 ასე რომ წავიდეთ წინ და ჩვენი რა ზე ადგილმდებარეობა 127. 465 00:20:14,988 --> 00:20:15,480 OK. 466 00:20:15,480 --> 00:20:19,170 რა თქმა უნდა, საიდან 127, ჯერ კიდევ ღირებულება 2. 467 00:20:19,170 --> 00:20:24,060 ასე რომ, რას აპირებს ახლა შეინახეთ რაც არ არის იმ მდებარეობა? 468 00:20:24,060 --> 00:20:26,860 ასე რომ ვარსკვლავი საშუალებით წასვლა ადგილმდებარეობა. 469 00:20:26,860 --> 00:20:29,770 რა არის საიდან? 470 00:20:29,770 --> 00:20:30,430 >> ზუსტად. 471 00:20:30,430 --> 00:20:34,190 ასე რომ, ახლა, თუ გსურთ, რომ შეიცვალოს რა იმ ადგილას - 472 00:20:34,190 --> 00:20:36,470 მე წავიდეთ წინ და აწარმოებს eraser არის აქ. 473 00:20:36,470 --> 00:20:37,760 ახლა კი დააყენა მას უკან brush. 474 00:20:37,760 --> 00:20:42,190 რა რაოდენობის აპირებთ დაწერა ამ ცარიელი ყუთი ახლა? 475 00:20:42,190 --> 00:20:42,850 >> ზუსტად. 476 00:20:42,850 --> 00:20:46,470 ასე რომ, ეს ხაზი კოდი, უნდა იყოს ნათელი - ნება მე პაუზის რა ჩარლი აკეთებს და 477 00:20:46,470 --> 00:20:51,730 აღვნიშნო აქ, რა, რომ ის უბრალოდ გაკეთდეს არის წერენ შევიდა, რომ ყუთში ადგილმდებარეობა 123 478 00:20:51,730 --> 00:20:55,150 ღირებულება, რომელიც ადრე ერთი ბ. 479 00:20:55,150 --> 00:20:59,140 ასე რომ, ჩვენ ახლა განხორციელებული მართლაც ეს მეორე ხაზი კოდი. 480 00:20:59,140 --> 00:21:01,920 >> ახლა, სამწუხაროდ, არ არსებობს ჯერ კიდევ ერთი ხაზი დარჩენილი. 481 00:21:01,920 --> 00:21:04,900 ახლა რა არის დროებითი, ფაქტიურად? 482 00:21:04,900 --> 00:21:06,200 ეს აშკარად ნომერ პირველი. 483 00:21:06,200 --> 00:21:07,020 ეს არ არის მისამართი. 484 00:21:07,020 --> 00:21:09,380 უბრალოდ ნომერი, ერთგვარი ცვლადი ეხლა კვირაში ერთი. 485 00:21:09,380 --> 00:21:13,520 >> ახლა კი როცა ამბობენ, რომ ვარსკვლავი ბ, რაც იმას ნიშნავს, წასვლა მისამართი ბ, რომელიც 486 00:21:13,520 --> 00:21:15,090 რა თქმა უნდა აქ. 487 00:21:15,090 --> 00:21:16,020 ასე რომ, როგორც კი იქ - 488 00:21:16,020 --> 00:21:18,320 მე წავიდეთ წინ და წაშლას რა ფაქტიურად იქ - და რა ხარ 489 00:21:18,320 --> 00:21:20,820 აპირებს დაწეროს ახლა ადგილმდებარეობა 127? 490 00:21:20,820 --> 00:21:22,010 >> CHARLIE: Temp, რომელიც ერთი. 491 00:21:22,010 --> 00:21:23,430 >> დავით Malan: Temp, რომელიც ერთი. 492 00:21:23,430 --> 00:21:25,670 და რა მოხდება, დროებითი საბოლოოდ? 493 00:21:25,670 --> 00:21:26,600 ასევე, ჩვენ არ ვიცი. 494 00:21:26,600 --> 00:21:27,420 ჩვენ ნამდვილად არ აღელვებს. 495 00:21:27,420 --> 00:21:31,090 ნებისმიერ დროს ჩვენ განხორციელებული ფუნქცია ჯერჯერობით, არც ერთი ადგილობრივი ცვლადები თქვენ გაქვთ 496 00:21:31,090 --> 00:21:31,890 მართლაც ადგილობრივი. 497 00:21:31,890 --> 00:21:33,060 და მათ მხოლოდ გაქრება. 498 00:21:33,060 --> 00:21:35,040 ისინი Reclaimed ოპერაციული სისტემაში საბოლოოდ. 499 00:21:35,040 --> 00:21:39,800 >> ასე რომ, ის ფაქტი, რომ დროებითი კიდევ აქვს ღირებულება 1 სახის ფუნდამენტურად 500 00:21:39,800 --> 00:21:41,150 უინტერესო ჩვენთვის. 501 00:21:41,150 --> 00:21:43,100 ყველა უფლება, ასე რაუნდი ტაში თუ შეგვეძლო for ჩარლი. 502 00:21:43,100 --> 00:21:46,400 ძალიან კარგად გაკეთდეს. 503 00:21:46,400 --> 00:21:51,520 >> ყველა უფლება, ასე რომ უფრო აკეთებს ნიშნავს ეს შეგვიძლია გავაკეთოთ? 504 00:21:51,520 --> 00:21:54,400 გამოდის, რომ ჩვენ ვეუბნებოდი რამდენიმე თეთრი ტყუილების 505 00:21:54,400 --> 00:21:55,540 საკმაოდ გარკვეული დრო. 506 00:21:55,540 --> 00:21:59,990 მართლაც, აღმოჩნდება, რომ ტექსტი, ყველა ამ დროს, არ არის ნამდვილად 507 00:21:59,990 --> 00:22:02,190 თანმიმდევრობა ციფრები, თავისთავად. 508 00:22:02,190 --> 00:22:03,980 ეს ერთგვარი ის არის, რომ ინტუიციურად. 509 00:22:03,980 --> 00:22:08,270 >> თუმცა ტექნიკურად რომ ვთქვათ, სიმებიანი არის მონაცემთა ტიპის, რომ ჩვენ განვაცხადეთ, შიგნით 510 00:22:08,270 --> 00:22:12,170 CS50 ბიბლიოთეკა გამარტივება მსოფლიოში პირველად რამდენიმე კვირის კლასის. 511 00:22:12,170 --> 00:22:20,130 რა სიმებიანი მართლაც არის მისამართი საქართველოს ხასიათი სადღაც ოპერატიული. 512 00:22:20,130 --> 00:22:25,530 სიმებიანი მართლაც რაოდენობის, ისევე როგორც 123 ან 127, რომელიც ხდება demarcate 513 00:22:25,530 --> 00:22:28,420 სადაც სიმებიანი იწყება თქვენი კომპიუტერის მეხსიერებაში. 514 00:22:28,420 --> 00:22:31,870 >> მაგრამ ეს არ წარმოადგენს ტექსტი, თავისთავად, თავად. 515 00:22:31,870 --> 00:22:33,460 და ვხედავთ ამ ასეთია. 516 00:22:33,460 --> 00:22:35,980 ნება მომეცით წავიდეთ წინ და ქმნის რამდენიმე კოდი, რომელიც არის შორის 517 00:22:35,980 --> 00:22:38,340 დღევანდელ წყაროს კოდი მაგალითები. 518 00:22:38,340 --> 00:22:42,225 და მე ვაპირებ წავიდეთ წინ და გახსნა up, ასე ვთქვათ, შედარება-0.c. 519 00:22:42,225 --> 00:22:44,830 520 00:22:44,830 --> 00:22:48,790 ეს არის buggy პროგრამა, რომელიც აპირებს განსახორციელებელი ასეთია. 521 00:22:48,790 --> 00:22:49,040 >> პირველი. 522 00:22:49,040 --> 00:22:50,420 მე ვაპირებ ვთქვა რაღაც. 523 00:22:50,420 --> 00:22:52,660 ამის შემდეგ მე ვაპირებ წავიდეთ წინ და მიიღეთ ნახატზე შესახებ 524 00:22:52,660 --> 00:22:53,750 ამ მეორე ხაზზე. 525 00:22:53,750 --> 00:22:55,370 ამის შემდეგ მე ვაპირებ ვთქვა, კიდევ ერთხელ. 526 00:22:55,370 --> 00:22:57,540 ამის შემდეგ მე ვაპირებ მიიღეთ საჩუქრად ნახატზე შესახებ. 527 00:22:57,540 --> 00:23:00,390 >> და შეამჩნია, მე აჩვენებს ერთ სიმებისათვის ცვლადში s, და 528 00:23:00,390 --> 00:23:03,040 კიდევ ერთი ამ strings ამ ცვლადში ტ. 529 00:23:03,040 --> 00:23:07,480 ახლა კი მე ვაპირებ აცხადებენ, ძალიან გონივრულად, რომ თუ ტოლია ტოლია t, 530 00:23:07,480 --> 00:23:08,940 strings იგივეა. 531 00:23:08,940 --> 00:23:09,970 ამას იგივე. 532 00:23:09,970 --> 00:23:11,830 სხვაგან, strings არის არ იგივე. 533 00:23:11,830 --> 00:23:15,440 >> ყოველივე ამის შემდეგ, თუ ჩვენ შეტანის ორი ints, ორი სიმბოლო, ორი მოძრავი, ორი ორადგილიანი, რომელიმე 534 00:23:15,440 --> 00:23:18,400 მონაცემთა ტიპები ჩვენ ვისაუბრეთ ჯერჯერობით შედარების მათ - 535 00:23:18,400 --> 00:23:22,070 გავიხსენოთ, რომ ჩვენ ნათლად ხნის წინ რომ თქვენ არ გააკეთებს, რადგან 536 00:23:22,070 --> 00:23:25,840 ერთ თანაბარი ნიშანი, რა თქმა უნდა დავალება ოპერატორი. 537 00:23:25,840 --> 00:23:26,820 ასე, რომ ეს იქნება შეცდომა. 538 00:23:26,820 --> 00:23:29,260 >> ჩვენ ვიყენებთ თანაბარი თანაბარი ნიშანი, რომელიც მართლაც ადარებს 539 00:23:29,260 --> 00:23:31,050 რამ ჭეშმარიტი თანასწორობა. 540 00:23:31,050 --> 00:23:32,275 მაგრამ მე აცხადებენ, რომ ეს არის buggy. 541 00:23:32,275 --> 00:23:37,400 თუ მე წავიდეთ წინ და მიიღოს შედარების ნულის და მერე dot ხაზი შედარების ნულოვანი. 542 00:23:37,400 --> 00:23:39,700 და მე აკრიფოთ, ასე ვთქვათ, hello. 543 00:23:39,700 --> 00:23:41,590 და მაშინ მოდით მიესალმები ერთხელ. 544 00:23:41,590 --> 00:23:46,040 ფაქტიურად იგივე, კომპიუტერი მოთხოვნებს, მე აკრეფილი სხვადასხვა რამ არის. 545 00:23:46,040 --> 00:23:47,640 >> ახლა, შესაძლოა, უბრალოდ არასწორად აკრეფილი რაღაც. 546 00:23:47,640 --> 00:23:49,910 მე აკრიფოთ ჩემი სახელი ამ დროს. 547 00:23:49,910 --> 00:23:52,580 ვგულისხმობ, hello. 548 00:23:52,580 --> 00:23:54,770 Hello. 549 00:23:54,770 --> 00:23:57,360 ეს განსხვავებული თითოეული დრო. 550 00:23:57,360 --> 00:23:58,430 >> ისე, თუ რატომ არის, რომ? 551 00:23:58,430 --> 00:24:00,140 რა სინამდვილეში ქვეშ hood? 552 00:24:00,140 --> 00:24:03,270 ისე, რა სინამდვილეში ქვეშ hood არის სიმებიანი შემდეგ 553 00:24:03,270 --> 00:24:07,410 მე აკრეფილი, რომ პირველად მაგალითად არის სიტყვა hello, რა თქმა უნდა. 554 00:24:07,410 --> 00:24:11,660 მაგრამ თუ ჩვენ წარმოვადგენთ ამ ქვეშ Hood, გავიხსენოთ, რომ 555 00:24:11,660 --> 00:24:13,470 სიმებიანი არის მასივი. 556 00:24:13,470 --> 00:24:15,040 და ჩვენ განაცხადა იმდენი წარსულში. 557 00:24:15,040 --> 00:24:20,200 >> ასე რომ, თუ მე მიაპყროს, რომ მასივი ასე, მე ვარ აპირებს წარმოადგენს რაღაც 558 00:24:20,200 --> 00:24:23,030 მსგავსია იმისა, რაც ჩვენ გავაკეთეთ მომენტში წინ. 559 00:24:23,030 --> 00:24:25,390 და იქ, ფაქტობრივად, რაღაც სპეციალური აქაც. 560 00:24:25,390 --> 00:24:28,090 რა მივიღეთ განსაზღვროს იყო ყოველი სიმებიანი? 561 00:24:28,090 --> 00:24:30,760 ჰო, ეს წარმატებული ნულოვანი, რომელიც უბრალოდ გზა წარმოადგენს, 562 00:24:30,760 --> 00:24:33,610 ფაქტიურად, 00000000. 563 00:24:33,610 --> 00:24:35,680 რვა 0 ბიტი ზედიზედ. 564 00:24:35,680 --> 00:24:37,610 >> მე არ ვიცი, გულწრფელად ვამბობ, რა არის ამის შემდეგ. 565 00:24:37,610 --> 00:24:40,090 ეს მხოლოდ bunch მეტი RAM შიგნით ჩემი კომპიუტერი. 566 00:24:40,090 --> 00:24:40,970 მაგრამ ეს მასივი. 567 00:24:40,970 --> 00:24:42,260 ჩვენ ვისაუბრეთ მასივების ადრე. 568 00:24:42,260 --> 00:24:45,010 და ჩვენ, როგორც წესი, საუბრობენ მასივების როგორც საიდან ნულის 569 00:24:45,010 --> 00:24:46,580 მაშინ ერთი, შემდეგ ორი. 570 00:24:46,580 --> 00:24:47,950 მაგრამ ეს მხოლოდ მოხერხებულობისთვის. 571 00:24:47,950 --> 00:24:49,380 და ეს სრულიად ნათესავი. 572 00:24:49,380 --> 00:24:53,010 >> როდესაც თქვენ რეალურად მიღების მეხსიერების დან კომპიუტერი, ეს, რა თქმა უნდა, ნებისმიერი 573 00:24:53,010 --> 00:24:55,450 2 მილიარდ რაღაც უცნაური ბაიტი, პოტენციურად. 574 00:24:55,450 --> 00:24:59,100 ასე რომ, ნამდვილად ქვეშ Hood, მთელი ამ ხნის, დიახ. 575 00:24:59,100 --> 00:25:01,670 ეს შეიძლება ძალიან კარგად იქნება bracket ნულოვანი. 576 00:25:01,670 --> 00:25:04,780 მაგრამ თუ გათხრა კიდევ უფრო ღრმა ქვეშ Hood, რომ მართლაც 577 00:25:04,780 --> 00:25:07,000 სიტყვით ნომერი 123. 578 00:25:07,000 --> 00:25:09,150 ეს არის მისამართი 124. 579 00:25:09,150 --> 00:25:11,040 ეს არის მისამართი 125. 580 00:25:11,040 --> 00:25:12,540 >> და მე არ ხრახნიანი up ამ დროს. 581 00:25:12,540 --> 00:25:15,840 ეს არის ახლა ერთი ბაიტი გარდა რატომ? 582 00:25:15,840 --> 00:25:17,930 რამდენად დიდია char? 583 00:25:17,930 --> 00:25:19,170 Char მხოლოდ ერთი ბაიტი. 584 00:25:19,170 --> 00:25:20,570 Int, როგორც წესი, ოთხ ბაიტს. 585 00:25:20,570 --> 00:25:24,850 ასე რომ, თუ რატომ გააკეთა ეს 123, 127, 131 და სხვ. 586 00:25:24,850 --> 00:25:27,560 ახლა კი შეგიძლიათ მათემატიკის მარტივი და მხოლოდ ამის პლუს 1. 587 00:25:27,560 --> 00:25:30,510 და ეს არის ის, რაც სინამდვილეში აპირებს on ქვეშ hood. 588 00:25:30,510 --> 00:25:37,760 >> ასე რომ, როდესაც თქვენ გამოაცხადოს მსგავსი რამ, სიმებიანი s, ეს არის რეალურად - 589 00:25:37,760 --> 00:25:39,170 აღმოჩნდება, - 590 00:25:39,170 --> 00:25:41,190 char ვარსკვლავი. 591 00:25:41,190 --> 00:25:44,640 ვარსკვლავი, რა თქმა უნდა, იმას ნიშნავს, მისამართი, aka მაჩვენებელი. 592 00:25:44,640 --> 00:25:46,200 ასე რომ, ეს მისამართი რაღაც. 593 00:25:46,200 --> 00:25:47,510 რა არის მისამართი? 594 00:25:47,510 --> 00:25:47,760 >> ასევე - 595 00:25:47,760 --> 00:25:51,680 მე ვარ ერთადერთი, ვინც ხედავთ ძალიან მთავარია მე მიღების, ან ვფიქრობ 596 00:25:51,680 --> 00:25:52,560 მე მიღების. 597 00:25:52,560 --> 00:25:55,270 ასე რომ, სიმებიანი - 598 00:25:55,270 --> 00:25:57,180 სამწუხარო ის არის, მე მაქვს მონიტორის სწორედ იქ, სადაც მე 599 00:25:57,180 --> 00:25:58,100 შეეძლო ჩანს, რომ. 600 00:25:58,100 --> 00:26:00,990 >> ყველა უფლება, სიმებიანი s არის ის, რაც მე განაცხადა ადრე. 601 00:26:00,990 --> 00:26:04,600 მაგრამ აღმოჩნდება, წყალობით პატარა ჯადოსნური in CS50 ბიბლიოთეკაში, ეს ყველაფერი 602 00:26:04,600 --> 00:26:08,780 დრო სიმებიანი აქვს ფაქტიურად ყოფილა char ვარსკვლავი. 603 00:26:08,780 --> 00:26:11,310 ვარსკვლავი კვლავ ნიშნავს მაჩვენებელი ან მისამართი. 604 00:26:11,310 --> 00:26:14,180 ფაქტია, რომ ის flanking სიტყვა char ნიშნავს ეს 605 00:26:14,180 --> 00:26:15,970 მისამართი ხასიათი. 606 00:26:15,970 --> 00:26:23,100 >> ასე რომ, თუ მიიღოს სიმებიანი ეწოდება, და მე აკრიფოთ in H-E-L-L-O, შესთავაზოს ახლა რა აქვს მიიღოს 607 00:26:23,100 --> 00:26:27,330 სიმებიანი ფაქტიურად უკვე დაბრუნების ყველა ამ დროს, მიუხედავად იმისა, რომ ჩვენ საკმაოდ 608 00:26:27,330 --> 00:26:29,980 oversimplified მსოფლიოში? 609 00:26:29,980 --> 00:26:33,310 რას მიიღოს სიმებიანი რეალურად დაბრუნდება, როგორც მისი დაბრუნების მნიშვნელობა? 610 00:26:33,310 --> 00:26:35,830 611 00:26:35,830 --> 00:26:38,720 >> 123 ამ შემთხვევაში, მაგალითად. 612 00:26:38,720 --> 00:26:42,630 ჩვენ ადრე განაცხადა, რომ მიიღოს სიმებიანი უბრალოდ ბრუნდება სიმებიანი, რიგითობა 613 00:26:42,630 --> 00:26:43,300 სიმბოლო. 614 00:26:43,300 --> 00:26:44,790 მაგრამ ეს ცოტა თეთრი ტყუილი. 615 00:26:44,790 --> 00:26:48,010 გზა მიიღოს სიმებიანი ნამდვილად მუშაობს ქვეშ hood არის ის იღებს 616 00:26:48,010 --> 00:26:48,930 ნახატზე შესახებ. 617 00:26:48,930 --> 00:26:51,530 ეს Plops ნიშნებს, იგი ტიპის მეხსიერებაში. 618 00:26:51,530 --> 00:26:54,680 იგი აყენებს წარმატებული ნულოვანი დასასრულს იმ რიგითობა სიმბოლოს. 619 00:26:54,680 --> 00:26:57,310 >> მაგრამ რას მიიღოს სიმებიანი ფაქტიურად დაბრუნებას? 620 00:26:57,310 --> 00:27:02,710 ეს სიტყვა დააბრუნებს მისამართი პირველივე bytes in RAM, რომ 621 00:27:02,710 --> 00:27:04,130 ის, რომ ძალა. 622 00:27:04,130 --> 00:27:07,500 და აღმოჩნდება, რომ მხოლოდ დაბრუნების ერთ მისამართი 623 00:27:07,500 --> 00:27:12,120 პირველი პერსონაჟი სიმებიანი, რომ არის საკმარისი მოძიების მთლიანად of 624 00:27:12,120 --> 00:27:12,630 სიმებიანი. 625 00:27:12,630 --> 00:27:16,930 >> სხვა სიტყვებით, მიიღოს სიმებიანი არ გააჩნია დაბრუნებას 123 და 124 და 125. 626 00:27:16,930 --> 00:27:19,950 იგი არ უნდა მომეცი ხანგრძლივი სიაში ყველა bytes რომ 627 00:27:19,950 --> 00:27:20,740 ჩემი სიმებიანი იყენებს. 628 00:27:20,740 --> 00:27:22,670 იმის გამო, რომ ერთი, ისინი ყველა დაბრუნდა უკან. 629 00:27:22,670 --> 00:27:28,160 და ორი, დაფუძნებული პირველი მისამართი, I შეგიძლიათ გაერკვნენ, სადაც სიმებიანი მთავრდება. 630 00:27:28,160 --> 00:27:29,910 როგორ? 631 00:27:29,910 --> 00:27:33,490 >> სპეციალური null ხასიათი, წარმატებული ნულოვანი ბოლოს. 632 00:27:33,490 --> 00:27:35,430 ასე რომ, სხვა სიტყვებით, თუ თქვენ გაივლის გარშემო - 633 00:27:35,430 --> 00:27:36,530 შიგნით ცვლადის - 634 00:27:36,530 --> 00:27:41,300 მისამართი char და ვივარაუდოთ, რომ ბოლოს ნებისმიერი ტექსტი, ნებისმიერი 635 00:27:41,300 --> 00:27:45,040 თანმიმდევრობა ციფრები, რომლებიც, როგორც ჩვენ ადამიანები ვფიქრობ, სტრინგი, თუ ვივარაუდოთ, რომ 636 00:27:45,040 --> 00:27:48,600 დასასრულს ასეთი სიმებიანი არსებობს წარმატებული ნულოვანი, თქვენ ოქროს. 637 00:27:48,600 --> 00:27:52,430 იმის გამო, რომ თქვენ ყოველთვის იპოვის ბოლოს სიმებიანი. 638 00:27:52,430 --> 00:27:54,870 >> ახლა რა სინამდვილეში შემდეგ აპირებს მე ამ პროგრამაში? 639 00:27:54,870 --> 00:27:59,990 რატომ არის ეს პროგრამა, შედარების-0.c, buggy? 640 00:27:59,990 --> 00:28:01,690 რა ხდება რეალურად მიმდინარეობს შედარებით? 641 00:28:01,690 --> 00:28:02,420 ჰო? 642 00:28:02,420 --> 00:28:05,000 >> სტუდენტი: [inaudible]. 643 00:28:05,000 --> 00:28:05,730 >> დავით Malan: ზუსტად. 644 00:28:05,730 --> 00:28:08,350 ეს შედარებით ადგილას საქართველოს strings. 645 00:28:08,350 --> 00:28:12,420 ასე რომ, თუ მომხმარებელს ჯერ აკრეფილი მიესალმები ერთხელ როგორც მე, მეხსიერება შეიძლება დასრულდეს up 646 00:28:12,420 --> 00:28:13,430 ეძებს მოსწონს ეს. 647 00:28:13,430 --> 00:28:18,210 თუ შესახებ შემდეგ ტიპების კომენტარი პირველმა კიდევ ერთხელ, მაგრამ დარეკვით მიიღოს სიმებიანი ერთხელ, გ არის 648 00:28:18,210 --> 00:28:21,800 განსაკუთრებით ჭკვიანი თუ არ ასწავლიან რომ ეს ჭკვიანი წერილობით კოდი. 649 00:28:21,800 --> 00:28:22,430 >> C - 650 00:28:22,430 --> 00:28:23,860 და კომპიუტერები ზოგადად - 651 00:28:23,860 --> 00:28:27,370 თუ აკრიფოთ სიტყვა მიესალმები ერთხელ, თქვენ იცით, თუ რას აპირებს. 652 00:28:27,370 --> 00:28:31,480 თქვენ მხოლოდ აპირებს მეორე მასივში მეხსიერების, რომ, დიახ, ხდება იყოს 653 00:28:31,480 --> 00:28:35,510 შენახვის H-E-L-L-O და სხვ. 654 00:28:35,510 --> 00:28:38,240 >> იგი აპირებს გამოიყურებოდეს იგივე ჩვენს ადამიანებში, მაგრამ ამ მისამართზე 655 00:28:38,240 --> 00:28:39,460 არ უნდა იყოს 123. 656 00:28:39,460 --> 00:28:42,470 ეს შეიძლება მხოლოდ ასე მოხდეს, რომ ოპერაციული სისტემა აქვს ხელმისაწვდომი 657 00:28:42,470 --> 00:28:45,430 ფართი ინსტანციის დროს ადგილმდებარეობა - 658 00:28:45,430 --> 00:28:49,820 ვთქვათ რაღაც თვითნებური, ისევე, როგორც ეს არის ადგილმდებარეობა 200. 659 00:28:49,820 --> 00:28:51,620 და ეს საიდან 201. 660 00:28:51,620 --> 00:28:53,060 და ეს საიდან 202. 661 00:28:53,060 --> 00:28:55,730 ჩვენ არ აქვთ, სად, რომ იქნება მეხსიერებაში. 662 00:28:55,730 --> 00:28:59,110 >> მაგრამ რა ეს იმას ნიშნავს, ის არის, რომ ის, რაც უნდა ინახება საბოლოო ჯამში მდე? 663 00:28:59,110 --> 00:29:00,750 ნომერი 123. 664 00:29:00,750 --> 00:29:04,860 რა იქნება შენახული t, ამ უკანონო მაგალითად? 665 00:29:04,860 --> 00:29:06,300 ნომერი 200. 666 00:29:06,300 --> 00:29:11,410 და ყველა ეს ნიშნავს, რომ მაშინ აშკარად, 123 არ თანაბარ 200. 667 00:29:11,410 --> 00:29:14,940 ასე რომ, თუ მდგომარეობა არასოდეს აფასებს ჭეშმარიტი. 668 00:29:14,940 --> 00:29:18,430 იმის გამო, რომ Get სიმებიანი იყენებს სხვადასხვა მოცულობით მეხსიერება ყოველ ჯერზე. 669 00:29:18,430 --> 00:29:20,360 >> ახლა ჩვენ ვხედავთ ეს კიდევ ერთხელ კიდევ ერთი მაგალითი. 670 00:29:20,360 --> 00:29:23,764 ნება მომეცით წავიდეთ წინ და ქმნის ასლი-0.c. 671 00:29:23,764 --> 00:29:28,770 მე ამტკიცებენ, რომ ეს მაგალითი აპირებს ვცდილობთ - მაგრამ ვერ - ნამუშევრის კოპირება ორი strings 672 00:29:28,770 --> 00:29:29,910 ასეთია. 673 00:29:29,910 --> 00:29:31,730 >> მე ვაპირებ რომ რაღაც მომხმარებელს. 674 00:29:31,730 --> 00:29:34,490 მე მაშინ აპირებდა სიმებიანი და ეძახით s. 675 00:29:34,490 --> 00:29:36,400 ახლა კი, მე ვაკეთებ ამ გამშვებ აქ. 676 00:29:36,400 --> 00:29:37,990 ჩვენ აღნიშნული ამ ხოლო უკან. 677 00:29:37,990 --> 00:29:42,490 მაგრამ როდესაც შესაძლოა სიმებიანი დაბრუნების null, კიდევ ერთი განსაკუთრებული ხასიათი, ან სპეციალური 678 00:29:42,490 --> 00:29:45,050 სიმბოლო ვთქვათ. 679 00:29:45,050 --> 00:29:45,900 თუ ეს მეხსიერება ღალატობს. 680 00:29:45,900 --> 00:29:48,970 >> მაგალითად, თუ მომხმარებელს ნამდვილად როგორც რთული და ტიპის ბარბაროსულ 681 00:29:48,970 --> 00:29:51,220 რიგი პერსონაჟების კლავიატურის და hits Enter. 682 00:29:51,220 --> 00:29:54,580 თუ, რომ ნომერი პერსონაჟების უბრალოდ ვერ შეესაბამება RAM სხვადსხვა გიჟები 683 00:29:54,580 --> 00:29:57,820 მიზეზი, ასევე მიიღოს სიმებიანი შეიძლება ძალიან კარგად დაბრუნების null. 684 00:29:57,820 --> 00:30:01,080 >> ან თუ თქვენი პროგრამა თავად აკეთებს ბევრი სხვა რამ და იქ მხოლოდ 685 00:30:01,080 --> 00:30:03,790 არ არის საკმარისი მეხსიერების Get სიმებიანი წარმატების, ეს შეიძლება დასრულდეს 686 00:30:03,790 --> 00:30:05,240 up დაბრუნების null. 687 00:30:05,240 --> 00:30:07,160 მაგრამ მოდით, უფრო ზუსტად თუ რა ეს. 688 00:30:07,160 --> 00:30:10,280 რა არის s მონაცემებით ტიპის ნამდვილად? 689 00:30:10,280 --> 00:30:11,610 Char ვარსკვლავი. 690 00:30:11,610 --> 00:30:14,560 >> გამოდის, ახლა ჩვენ შეგვიძლია კანი უკან ფენის null. 691 00:30:14,560 --> 00:30:17,500 გამოდის, null არის - კი, რა თქმა უნდა სპეციალური სიმბოლო. 692 00:30:17,500 --> 00:30:19,190 მაგრამ რა არის ეს ნამდვილად? 693 00:30:19,190 --> 00:30:25,220 მართლაც, null მხოლოდ სიმბოლო იმისა, რომ ჩვენ ადამიანები გამოიყენოთ წარმოადგენს ნულოვანი ასევე. 694 00:30:25,220 --> 00:30:29,010 >> ასე რომ, ავტორები C და კომპიუტერები უფრო ზოგადად, გადაწყვიტა წლის წინ 695 00:30:29,010 --> 00:30:30,010 რომ, იცით, რა. 696 00:30:30,010 --> 00:30:34,850 რატომ არ გვაქვს უზრუნველყონ, რომ არც შესახებ მონაცემთა ოდესმე, ოდესმე, ოდესმე 697 00:30:34,850 --> 00:30:36,730 ინახება bye ნულოვანი? 698 00:30:36,730 --> 00:30:39,610 სინამდვილეში კი ჩემი თვითნებური მაგალითად ადრე, მე არ დაიწყოს ნუმერაციის 699 00:30:39,610 --> 00:30:40,390 bytes ზე ნულოვანი. 700 00:30:40,390 --> 00:30:41,540 დავიწყე ერთ. 701 00:30:41,540 --> 00:30:44,950 იმის გამო, რომ ვიცოდი, რომ ხალხი მსოფლიოში გადავწყვიტეთ ვიტოვებთ ნულოვანი 702 00:30:44,950 --> 00:30:47,970 byte არავის RAM, როგორც რაღაც განსაკუთრებული. 703 00:30:47,970 --> 00:30:52,020 >> მიზეზი იმისა, ნებისმიერ დროს გსურთ სიგნალი, რომ რაღაც წავიდა არასწორი 704 00:30:52,020 --> 00:30:55,960 ამასთან დაკავშირებით მისამართები, თქვენ დაბრუნდა null - სხვაგვარად ცნობილია როგორც ნულოვანი - 705 00:30:55,960 --> 00:30:59,410 და რადგან თქვენ იცით, რომ იქ არ არის GE დაბრუნება მონაცემებს მისამართი ნულოვანი, ნათლად 706 00:30:59,410 --> 00:31:00,400 ეს ნიშნავს, რომ შეცდომა. 707 00:31:00,400 --> 00:31:04,080 სწორედ ამ მიზეზით, ჩვენ მიერ კონვენციის, შემოწმება for null და დაბრუნების რაღაც 708 00:31:04,080 --> 00:31:06,260 როგორც ერთი იმ შემთხვევაში. 709 00:31:06,260 --> 00:31:09,300 >> ასე რომ, თუ ჩვენ გადაფურცლეთ ქვემოთ, ახლა, ეს მხოლოდ შემდეგ რამდენიმე შეცდომა შემოწმება, მხოლოდ იმ შემთხვევაში 710 00:31:09,300 --> 00:31:10,610 რაღაც წავიდა არასწორი [? გირაო?] 711 00:31:10,610 --> 00:31:13,470 საერთოდ და გასვლა პროგრამა დაბრუნების გამო. 712 00:31:13,470 --> 00:31:19,030 ეს ხაზი ახლა შეიძლება გადაწერილი რადგან ეს, რაც იმას ნიშნავს, თუ რა? 713 00:31:19,030 --> 00:31:23,155 On მარცხენა მხარეს, მომეცი კიდევ ერთი მომცეთ ხასიათი, და უწოდებენ ტ. 714 00:31:23,155 --> 00:31:26,935 რა ვარ მე შენახვის შიგნით t, საფუძველზე ამ ერთი ხაზი კოდი? 715 00:31:26,935 --> 00:31:30,950 716 00:31:30,950 --> 00:31:32,170 >> მე შენახვის ადგილას. 717 00:31:32,170 --> 00:31:34,742 კერძოდ საიდან რომ იყო s. 718 00:31:34,742 --> 00:31:39,000 ასე რომ, თუ მომხმარებელს ჯერ აკრეფილი hello, და რომ პირველი კომენტარი პირველმა ხდება დასრულდება 719 00:31:39,000 --> 00:31:42,567 აქ, მაშინ ნომერი 123 არის აპირებს დაბრუნებას ეხლა მისაღებად 720 00:31:42,567 --> 00:31:43,810 სიმებიანი და ინახება - 721 00:31:43,810 --> 00:31:44,780 როგორც ვთქვით ადრე - 722 00:31:44,780 --> 00:31:45,440 მდე. 723 00:31:45,440 --> 00:31:50,560 >> როდესაც მე ახლა აცხადებენ, კიდევ ერთი მომცეთ char და მას t, რა რაოდენობის არის 724 00:31:50,560 --> 00:31:53,940 ფაქტიურად აპირებს დასრულდება მდე t მიხედვით ამბავი? 725 00:31:53,940 --> 00:31:55,420 ასე რომ, 123. 726 00:31:55,420 --> 00:32:00,310 >> ასე რომ ტექნიკურად ახლა ორივე და ტ მიუთითებს ზუსტი 727 00:32:00,310 --> 00:32:02,410 იგივე მოცულობით მეხსიერება. 728 00:32:02,410 --> 00:32:06,140 ასე რომ შეამჩნია, რაც მე აპირებს ახლა ადასტურებენ, რომ ეს პროგრამა არის buggy. 729 00:32:06,140 --> 00:32:08,820 >> პირველი მე ვაპირებ აცხადებენ, ერთად ბეჭდვითი ვ, capitalizing 730 00:32:08,820 --> 00:32:10,080 ასლის მისაღებად. 731 00:32:10,080 --> 00:32:11,660 ამის შემდეგ მე ვაპირებ, პატარა შეცდომა შემოწმება. 732 00:32:11,660 --> 00:32:12,160 მე ვაპირებ რომ დავრწმუნდეთ. 733 00:32:12,160 --> 00:32:16,710 მოდით დავრწმუნდეთ, რომ სიმებიანი t არის სულ ცოტა მეტია ნულოვანი სიგრძის, 734 00:32:16,710 --> 00:32:19,190 ასე რომ ზოგიერთი ხასიათი არსებობს რეალურად ესარგებლა. 735 00:32:19,190 --> 00:32:22,840 >> და მაშინ თქვენ ალბათ გახსოვთ ამ წინა მაგალითები. 736 00:32:22,840 --> 00:32:25,630 2 ზედა - რომელიც ctype.h ფაილი. 737 00:32:25,630 --> 00:32:30,800 T bracket ნულოვანი მაძლევს ნულოვანი ხასიათი სიმებიანი ტ. 738 00:32:30,800 --> 00:32:34,360 და 2 ზედა იგივე ღირებულება, რომელიც რა თქმა უნდა, გარდაქმნის მას ზედა. 739 00:32:34,360 --> 00:32:38,230 >> ასე რომ, ინტუიციურად, ამ ხაზი გაუსვა ხაზი საქართველოს კოდექსი capitalizing პირველი 740 00:32:38,230 --> 00:32:40,250 წერილი ტ. 741 00:32:40,250 --> 00:32:44,485 მაგრამ ეს არ არის capitalizing, ინტუიციურად, პირველი ასო s. 742 00:32:44,485 --> 00:32:48,130 მაგრამ თუ თქვენ ფიქრი წინ, რა ვარ მე შესახებ, რომ ნახოთ, როცა აწარმოებს ამ პროგრამის 743 00:32:48,130 --> 00:32:54,220 და ამობეჭდოთ ორივე ორიგინალური, s, და ე.წ. ასლი, უ? 744 00:32:54,220 --> 00:32:55,350 >> ისინი რეალურად იქნება იგივე. 745 00:32:55,350 --> 00:32:56,600 და რატომ არიან იქნება იგივე? 746 00:32:56,600 --> 00:32:58,970 747 00:32:58,970 --> 00:33:01,020 ისინი ორივე მიუთითებს ზუსტად იგივე. 748 00:33:01,020 --> 00:33:01,610 ასე რომ, მოდით ეს. 749 00:33:01,610 --> 00:33:03,160 >> მიიღოს ასლი ნულოვანი. 750 00:33:03,160 --> 00:33:04,070 იგი ადგენს OK. 751 00:33:04,070 --> 00:33:06,500 ნება მომეცით აწარმოებს ასლი ნულოვანი. 752 00:33:06,500 --> 00:33:10,110 ნება მომეცით აკრიფოთ რაღაც მიესალმები in ყველა ამას შემდეგ დააჭიროთ. 753 00:33:10,110 --> 00:33:16,520 და ეს ამტკიცებს, რომ ორივე ორიგინალური s და ასლი მართლაც იდენტურია. 754 00:33:16,520 --> 00:33:17,920 >> ასე რომ, რა მოხდა აქ? 755 00:33:17,920 --> 00:33:20,100 ნება მომეცით მეთოდით გადასინჯვის ამ სურათს მხოლოდ ვუთხრა ამბავი 756 00:33:20,100 --> 00:33:21,340 ოდნავ სხვაგვარად. 757 00:33:21,340 --> 00:33:26,060 რა სინამდვილეში ქვეშ hood როცა ვაცხადებ, რომ მსგავსი რამ 758 00:33:26,060 --> 00:33:30,410 char დაწყების წინ, ან სიმებიანი s, მე მიღების მაჩვენებელი - 759 00:33:30,410 --> 00:33:33,090 რაც ხდება, რომ ოთხი bytes ამ CS50 მოწყობილობების 760 00:33:33,090 --> 00:33:34,410 და ბევრი კომპიუტერები. 761 00:33:34,410 --> 00:33:36,008 და მე ვაპირებ მოვუწოდო ამ s. 762 00:33:36,008 --> 00:33:39,810 ეს გაკეთებული აქვს გაურკვეველი ღირებულება. 763 00:33:39,810 --> 00:33:43,900 >> როდესაც თქვენ გამოაცხადოს ცვლადი, თუ თქვენ არ თავს დააყენა ღირებულება არსებობს, რომელიც 764 00:33:43,900 --> 00:33:44,570 იცის, რა არის იქ. 765 00:33:44,570 --> 00:33:48,110 ეს შეიძლება იყოს გარკვეული შემთხვევითი რიგითობა ბიტი, წინა აღსრულება. 766 00:33:48,110 --> 00:33:52,490 ასე რომ, როდესაც მე, ჩემი ხაზი კოდი გავაკეთოთ მისაღებად სიმებიანი და შემდეგ შესანახად დაბრუნების 767 00:33:52,490 --> 00:33:54,800 ღირებულების s მიიღოს სიმებიანი რატომღაც - 768 00:33:54,800 --> 00:33:58,520 ჩვენ გამოგიგზავნით საბოლოოდ კანი უკან რამდენად მისაღებად სიმებიანი სამუშაოები, რატომღაც გამოყოფს 769 00:33:58,520 --> 00:34:00,480 მასივი, ალბათ გამოიყურება ცოტა მოსწონს ეს. 770 00:34:00,480 --> 00:34:05,390 H-E-L-L-O, წარმატებული ნულოვანი. 771 00:34:05,390 --> 00:34:09,510 >> დავუშვათ, რომ ეს არის მისამართი 123 მხოლოდ პირველი თანმიმდევრულობა. 772 00:34:09,510 --> 00:34:13,000 ასე რომ სიმებიანი ბრუნდება, ამ ხაზი გაუსვა ხაზი არსებობს, ის დააბრუნებს 773 00:34:13,000 --> 00:34:15,000 ნომერი ვთქვით, 123. 774 00:34:15,000 --> 00:34:17,420 ასე რომ, რა მიდის შიგნით s აქ? 775 00:34:17,420 --> 00:34:26,590 >> ისე, რა მიდის შიგნით s არის 123. 776 00:34:26,590 --> 00:34:29,250 თუმცა გულწრფელად ვამბობ, მე მისაღებად პატარა დაბნეული ყველა ამ მისამართები, 777 00:34:29,250 --> 00:34:30,320 ყველა ამ უკანონო ნომრები. 778 00:34:30,320 --> 00:34:32,290 123, 124, 127. 779 00:34:32,290 --> 00:34:34,570 მოდით რეალურად გაამარტივებს მსოფლიოს ცოტა. 780 00:34:34,570 --> 00:34:38,800 >> როდესაც ვსაუბრობთ მითითებას, გულწრფელად ვამბობ, რომ ჩვენს ადამიანი, რომელმაც heck ზრუნავს, სადაც 781 00:34:38,800 --> 00:34:39,870 რამ მეხსიერებაში? 782 00:34:39,870 --> 00:34:41,080 ეს არის ის, სრულიად უკანონო. 783 00:34:41,080 --> 00:34:43,370 იგი აპირებს დამოკიდებული, როგორ გაცილებით RAM მომხმარებელს აქვს. 784 00:34:43,370 --> 00:34:46,590 იგი აპირებს დამოკიდებული, როცა დღეს თქვენ აწარმოებს პროგრამა, ალბათ, და 785 00:34:46,590 --> 00:34:48,250 რა შეტანის შესახებ გაძლევთ. 786 00:34:48,250 --> 00:34:50,060 ჩვენ აპირებს უმნიშვნელო დეტალებზე. 787 00:34:50,060 --> 00:34:54,230 >> მოდით აბსტრაქტული მოშორებით და აცხადებენ, რომ, როდესაც თქვენ აწარმოებს ხაზი კოდი ასე, 788 00:34:54,230 --> 00:34:57,320 char ვარსკვლავი s იღებს დაბრუნების ღირებულება Get სიმებიანი. 789 00:34:57,320 --> 00:35:02,720 რატომ არ გვაქვს ნაცვლად უბრალოდ მიაპყროს, რაც ჩვენ შენარჩუნება მოუწოდებენ მაჩვენებელი, თითქოს ეს 790 00:35:02,720 --> 00:35:04,140 მიუთითებს რაღაც? 791 00:35:04,140 --> 00:35:07,000 ასე, რომ აცხადებენ, რომ s up არსებობს მაჩვენებელი - 792 00:35:07,000 --> 00:35:08,480 ქვეშ hood ეს მისამართი. 793 00:35:08,480 --> 00:35:11,330 მაგრამ ეს მხოლოდ მიუთითებს პირველი ბაიტი in 794 00:35:11,330 --> 00:35:12,780 სიმებიანი, რომ უკვე დაბრუნდა. 795 00:35:12,780 --> 00:35:16,710 >> თუ მე ახლა დაბრუნდნენ კოდი აქ, რა ხდება ამ ხაზის? 796 00:35:16,710 --> 00:35:20,020 ასევე, ამ ხაზი გაუსვა ხაზი ახლა, მე გამოცხადების როგორც ჩანს, კიდევ ერთი 797 00:35:20,020 --> 00:35:21,070 ცვლადში ტ. 798 00:35:21,070 --> 00:35:25,700 მაგრამ ასევე მაჩვენებელი, ამიტომ მე ვაპირებ მიაპყროს მას, როგორც, თეორიულად, ზუსტი 799 00:35:25,700 --> 00:35:26,710 იგივე ზომის ყუთი. 800 00:35:26,710 --> 00:35:28,160 და მე ვაპირებ მოვუწოდო, რომ ეს ტ. 801 00:35:28,160 --> 00:35:33,500 >> ახლა კი, თუ ჩვენ დაბრუნდეს კოდი კიდევ ერთხელ, როდესაც მე შესანახად s შიგნით t, 802 00:35:33,500 --> 00:35:36,920 რა ვარ მე ტექნიკურად აყენებს შიგნით უ? 803 00:35:36,920 --> 00:35:39,350 ისე ტექნიკურად, ეს იყო რიცხვი 123. 804 00:35:39,350 --> 00:35:42,270 ასე რომ, მართლაც მე უნდა წერა ნომერი 123 იყო. 805 00:35:42,270 --> 00:35:43,900 მაგრამ მოდით მას უფრო მაღალ დონეზე. 806 00:35:43,900 --> 00:35:48,090 t, თუ ეს უბრალოდ მაჩვენებელი, ინტუიციურად, მხოლოდ, რომ. 807 00:35:48,090 --> 00:35:49,800 ეს იყო, რომ ერთ ინახება იქ. 808 00:35:49,800 --> 00:35:54,970 >> ასე რომ, ახლა, ბოლო საინტერესო ხაზები კოდის, როცა რეალურად წავიდეთ შესახებ 809 00:35:54,970 --> 00:36:00,680 capitalizing ნულოვანი ხასიათი in t, რა ხდება? 810 00:36:00,680 --> 00:36:06,310 ისე, ტ bracket ნულოვანი არის მიუთითებს თუ რა ხასიათის, სავარაუდოდ? 811 00:36:06,310 --> 00:36:07,460 >> ეს მიუთითებს თ. 812 00:36:07,460 --> 00:36:08,870 იმის გამო, რომ t bracket ნულოვანი - 813 00:36:08,870 --> 00:36:12,490 გავიხსენოთ, რომ ეს არის ძველი სინტაქსი. t bracket ნულოვანი მხოლოდ იმას ნიშნავს, თუ t არის ტექსტი, ტ 814 00:36:12,490 --> 00:36:15,590 bracket ნულოვანი ნიშნავს მიღების ნულოვანი პერსონაჟი, რომ ძალა. 815 00:36:15,590 --> 00:36:18,650 მერე რა, რომ ნამდვილად ნიშნავს არის წასვლა ეს მასივი - 816 00:36:18,650 --> 00:36:21,520 და დიახ, ეს შეიძლება იყოს 123, ეს შეიძლება იყოს 124. 817 00:36:21,520 --> 00:36:22,790 მაგრამ ყველა ნათესავი, მახსოვს. 818 00:36:22,790 --> 00:36:25,640 იმ შემთხვევაში, როდესაც ვსაუბრობთ მასივი, ჩვენ გვაქვს უპირატესობა ვსაუბრობთ 819 00:36:25,640 --> 00:36:27,000 ნათესავი მაჩვენებლები. 820 00:36:27,000 --> 00:36:31,120 >> ასე რომ, ახლა ჩვენ შეგვიძლია მხოლოდ ვივარაუდოთ რომ უ bracket ნულოვანი არის თ. 821 00:36:31,120 --> 00:36:35,090 ასე რომ, თუ მოვუწოდებ 2 ზედა იგი, რა არის ნამდვილი ჩანაფიქრია capitalizing 822 00:36:35,090 --> 00:36:38,290 ამას თ to ზედა H. მაგრამ, რა თქმა, რა არის s? 823 00:36:38,290 --> 00:36:41,010 ეს მიუთითებს იმავე darn სიმებიანი. 824 00:36:41,010 --> 00:36:44,200 >> ასე რომ, ეს ყველაფერი რომ ხდებოდა ამ კოდექსში ჯერჯერობით. 825 00:36:44,200 --> 00:36:45,960 რა არის მაშინ გავლენა? 826 00:36:45,960 --> 00:36:48,300 როგორ უნდა დააფიქსიროს ეს ორი პრობლემა? 827 00:36:48,300 --> 00:36:50,870 როგორ უნდა შედარებით ფაქტობრივი strings? 828 00:36:50,870 --> 00:36:53,720 >> ისე ინტუიციურად, როგორ თქვენ წავიდეთ შესახებ შედარებით ორი 829 00:36:53,720 --> 00:36:55,090 strings ჭეშმარიტი თანასწორობა? 830 00:36:55,090 --> 00:36:58,920 831 00:36:58,920 --> 00:37:00,750 >> რას ნიშნავს თუ ორი strings თანაბარია? 832 00:37:00,750 --> 00:37:04,330 ცხადია არა, რომ მათი მისამართები გაუტოლდება მეხსიერებაში, რადგან ეს არის ის დაბალი 833 00:37:04,330 --> 00:37:06,590 დონეზე განხორციელების დეტალურად. 834 00:37:06,590 --> 00:37:08,360 ყველა პერსონაჟი არის იგივე. 835 00:37:08,360 --> 00:37:12,810 ნება მომეცით, შესთავაზოს, და ნება მომეცით წარმოგიდგინოთ in მობილური ერთერთი compare.c 836 00:37:12,810 --> 00:37:14,970 აქ, ასე რომ შედარების-1.c. 837 00:37:14,970 --> 00:37:19,590 >> ნება მომეცით შესთავაზოს, რომ ჩვენ მაინც მაჩვენებელი მოუწოდა s, და მაღაზიის მასში 838 00:37:19,590 --> 00:37:20,610 დაბრუნების ღირებულება Get სიმებიანი. 839 00:37:20,610 --> 00:37:21,750 მოდით იგივე ქ. 840 00:37:21,750 --> 00:37:23,230 ასე რომ, არც ერთი კოდი განსხვავებულია. 841 00:37:23,230 --> 00:37:25,420 მე ვაპირებ დავამატოთ ცოტა მეტი შეცდომა შემოწმების ახლა. 842 00:37:25,420 --> 00:37:29,390 ასე რომ, ახლა რომ ჩვენ ერთგვარი peeling უკან ამ ფენების CS50, თუ რა სიმებიანი 843 00:37:29,390 --> 00:37:33,520 ფაქტობრივად, ჩვენ უნდა იყოს უფრო anal დაახლოებით მიღების დარწმუნებული ვარ, რომ ჩვენ არ ბოროტად 844 00:37:33,520 --> 00:37:35,330 ბათილად ღირებულებებს, როგორიცაა null. 845 00:37:35,330 --> 00:37:36,440 >> ასე რომ, მე მხოლოდ აპირებს შეამოწმოს. 846 00:37:36,440 --> 00:37:41,490 თუ არ თანაბარი ბათილად და უ არ თანაბარი null, ეს ნიშნავს, რომ ჩვენ ვართ OK. 847 00:37:41,490 --> 00:37:44,460 მიიღეთ სიმებიანი არ ხრახნიანი up მიღების ან იმ strings. 848 00:37:44,460 --> 00:37:51,270 და შეგიძლიათ, ალბათ ვხვდები ახლა, რა ამჯამად STR CMP სავარაუდოდ გაკეთება? 849 00:37:51,270 --> 00:37:52,000 სიმებიანი შედარება. 850 00:37:52,000 --> 00:37:55,470 >> ასე რომ, თუ თქვენ პროგრამა java ადრე, ეს მოსწონს შეადგენს მეთოდი 851 00:37:55,470 --> 00:37:56,490 სიმებიანი კლასის. 852 00:37:56,490 --> 00:37:57,890 მაგრამ იმ თქვენ, რომლებიც არ დაპროგრამებულია ადრე, 853 00:37:57,890 --> 00:37:59,320 ეს მხოლოდ გ ფუნქცია. 854 00:37:59,320 --> 00:38:02,180 ეს ხდება მოსვლა ფაილი სახელად string.h. 855 00:38:02,180 --> 00:38:03,830 ეს არის ის, სადაც ეს განაცხადა. 856 00:38:03,830 --> 00:38:05,110 >> და სიმებიანი შედარება - 857 00:38:05,110 --> 00:38:07,530 მე რეალურად დაგვავიწყდეს მისი გამოყენება, მაგრამ გახსოვდეთ, რომ. 858 00:38:07,530 --> 00:38:10,470 შეგახსენებთ, რომ ჩვენ შეგვიძლია გავაკეთოთ ადამიანი, აურიეთ შედარება. 859 00:38:10,470 --> 00:38:12,590 და ეს ხდება აღზრდას Linux პროგრამისტების სახელმძღვანელო. 860 00:38:12,590 --> 00:38:14,060 და ეს, გულწრფელად ვამბობ, ცოტა cryptic. 861 00:38:14,060 --> 00:38:15,270 მაგრამ მე ვხედავ, რომ, Yep. 862 00:38:15,270 --> 00:38:17,570 მე უნდა შეიცავდეს string.h. 863 00:38:17,570 --> 00:38:20,590 >> და ეს ამბობს აქ სამუშაოდ აღწერა, " სიმებიანი შეადარეთ ფუნქცია ადარებს 864 00:38:20,590 --> 00:38:24,560 ორი strings S1 და S2. "და S1 და S2 აშკარად ორი 865 00:38:24,560 --> 00:38:26,120 არგუმენტები გავიდა სისტემაში 866 00:38:26,120 --> 00:38:28,650 მე ნამდვილად არ მახსოვს რა const არის, მაგრამ ახლა შეამჩნია - 867 00:38:28,650 --> 00:38:31,480 და შეიძლება მინახავს ეს უკვე როდესაც თქვენ გამოიყენოთ ადამიანი გვერდებზე თუ 868 00:38:31,480 --> 00:38:32,390 ეს ყველაფერი - 869 00:38:32,390 --> 00:38:36,220 რომ char ვარსკვლავი მხოლოდ სინონიმი ერთად სიმებიანი. 870 00:38:36,220 --> 00:38:40,440 >> ასე რომ, ეს ადარებს ორი სიმები, S1 და S2, და ის დააბრუნებს რიცხვი ნაკლებია 871 00:38:40,440 --> 00:38:44,930 მეტი ან ტოლია ან აღემატება ნულოვანი თუ S1 გვხვდება, შესაბამისად, უნდა იყოს 872 00:38:44,930 --> 00:38:47,450 ნაკლები, ან ემთხვევა, ან იყოს მეტი S2. 873 00:38:47,450 --> 00:38:51,220 ეს უბრალოდ ძალიან რთული გზა ამბობდა რომ სიმებიანი შედარების ბრუნდება 874 00:38:51,220 --> 00:38:55,760 ნულოვანი თუ ორი strings არის ინტუიციურად იდენტურია, ხასიათი 875 00:38:55,760 --> 00:38:57,120 ხასიათი ხასიათი. 876 00:38:57,120 --> 00:38:59,970 >> ის დააბრუნებს უარყოფითი რიცხვი, თუ s, ალფავიტის მიხედვით, ვარაუდობენ 877 00:38:59,970 --> 00:39:01,010 მოვა ადრე ტ. 878 00:39:01,010 --> 00:39:05,300 ან დააბრუნებს დადებითი რიცხვი, თუ s უნდა მოვიდეს შემდეგ უ 879 00:39:05,300 --> 00:39:06,170 ანბანური. 880 00:39:06,170 --> 00:39:08,360 ამრიგად, ამ მარტივი ფუნქცია, შესაძლებელი იქნებოდა თქვენ, მაგალითად, დასალაგებლად 881 00:39:08,360 --> 00:39:09,770 მთელი bunch of სიტყვები? 882 00:39:09,770 --> 00:39:13,984 >> ასე რომ, ამ ახალი ვერსიის, მე ვაპირებ to წავიდეთ წინ და მიიღოს compare1. 883 00:39:13,984 --> 00:39:15,750 Dot ხაზი შევადარებთ ერთი. 884 00:39:15,750 --> 00:39:18,030 მე აკრიფოთ კომენტარი პირველმა ყველა ქვედა შემთხვევაში. 885 00:39:18,030 --> 00:39:20,300 მე ვაპირებ აკრიფოთ კომენტარი პირველმა ყველა ამას კიდევ ერთხელ. 886 00:39:20,300 --> 00:39:23,340 და საბედნიეროდ ახლა ეს ხვდება მე აკრეფილი იგივე. 887 00:39:23,340 --> 00:39:27,520 >> ამასობაში, თუ აკრიფოთ მიესალმები ქვედა საქმე და HELLO ზემო შემთხვევაში და 888 00:39:27,520 --> 00:39:29,710 შედარება, მე აკრეფილი სხვადასხვა რამ არის. 889 00:39:29,710 --> 00:39:32,530 იმის გამო, რომ არა მხოლოდ მისამართები განსხვავებული, მაგრამ ჩვენ შედარებით 890 00:39:32,530 --> 00:39:35,350 სხვადასხვა სიმბოლოების ისევ და ისევ. 891 00:39:35,350 --> 00:39:37,320 >> ისე მოდით წავიდეთ და დააფიქსიროს ერთი მეორე პრობლემა არის. 892 00:39:37,320 --> 00:39:41,590 ნება მომეცით ქმნის მობილური ერთი ასლი, რომელიც ახლა მიმართავს 893 00:39:41,590 --> 00:39:42,900 ეს საკითხი შემდეგნაირად. 894 00:39:42,900 --> 00:39:45,650 ეს ერთი აპირებს გამოიყურებოდეს ცოტა უფრო რთული. 895 00:39:45,650 --> 00:39:49,320 მაგრამ თუ ფიქრობთ, რა პრობლემა უნდა გადაწყვიტოს, იმედია ეს იქნება 896 00:39:49,320 --> 00:39:51,870 გარკვევა რაღაც მომენტში არის. 897 00:39:51,870 --> 00:39:57,280 >> ასე რომ, ეს პირველი რიგის, char დაწყების t, in layman პირობები შეიძლება ვინმეს შესთავაზოს 898 00:39:57,280 --> 00:39:59,450 რა ეს ხაზი აქ ნიშნავს? 899 00:39:59,450 --> 00:40:01,050 Char ვარსკვლავი უ, რა არის, რომ აკეთებს? 900 00:40:01,050 --> 00:40:06,660 901 00:40:06,660 --> 00:40:07,210 >> კარგი. 902 00:40:07,210 --> 00:40:09,500 შექმნა მაჩვენებელი ზოგიერთი ადგილზე მეხსიერებაში. 903 00:40:09,500 --> 00:40:10,930 და ნება მომეცით დახვეწა ეს ცოტა. 904 00:40:10,930 --> 00:40:17,180 აცხადებენ ცვლადი, რომელიც შესანახად მისამართი ზოგიერთი char მეხსიერებაში, უბრალოდ 905 00:40:17,180 --> 00:40:18,480 უნდა იყოს უფრო სწორი. 906 00:40:18,480 --> 00:40:21,210 >> OK, ასე რომ, ახლა, როდესაც მარჯვენა მხარეს, მე მინახავს ერთი ასეთი ფუნქციები 907 00:40:21,210 --> 00:40:22,660 ადრე, malloc. 908 00:40:22,660 --> 00:40:26,980 მაგრამ რა შეიძლება ნიშნავს ეს? 909 00:40:26,980 --> 00:40:28,050 განაწილება მეხსიერება. 910 00:40:28,050 --> 00:40:29,410 მეხსიერება განაწილებაზე. 911 00:40:29,410 --> 00:40:33,050 >> ასე რომ, თურმე დღემდე ჩვენ არ ნამდვილად ჰქონდა ძლიერი გზა 912 00:40:33,050 --> 00:40:36,210 ითხოვს ოპერაციული სისტემა, მომეცით მეხსიერება. 913 00:40:36,210 --> 00:40:39,980 პირიქით, ჩვენ ახლა ფუნქცია მოუწოდა malloc რომ ჯერ ზუსტად რომ. 914 00:40:39,980 --> 00:40:42,960 მიუხედავად იმისა, რომ ეს ცოტა განადგურების ახლა შეამჩნია, რომ 915 00:40:42,960 --> 00:40:46,200 ორ ფრჩხილებში არის უბრალოდ იქნება ნომერი. 916 00:40:46,200 --> 00:40:48,510 სად მე აკრეფილი კითხვა ნიშნები შეიძლება იყოს ნომერი. 917 00:40:48,510 --> 00:40:51,020 >> და ეს რიცხვი ნიშნავს, მომეცი 10 ბაიტს. 918 00:40:51,020 --> 00:40:52,320 მომეცი 20 ბაიტს. 919 00:40:52,320 --> 00:40:53,820 მომეცი 100 bytes. 920 00:40:53,820 --> 00:40:56,500 და malloc ყველაფერს გააკეთებს იმისათვის, რათა ვთხოვთ ოპერაციული სისტემა - 921 00:40:56,500 --> 00:40:57,630 Linux, ამ შემთხვევაში - 922 00:40:57,630 --> 00:40:59,630 hey, მათი 100 bytes ოპერატიული ხელმისაწვდომი? 923 00:40:59,630 --> 00:41:04,320 თუ ასეა, დაბრუნდნენ იმ bytes ჩემს მიერ დაბრუნების მისამართი, რომელი 924 00:41:04,320 --> 00:41:06,610 იმ ბაიტი, ალბათ? 925 00:41:06,610 --> 00:41:07,610 პირველი ერთი. 926 00:41:07,610 --> 00:41:10,460 >> ასე რომ, აქ ძალიან - და ეს არის უპირატესი in C, ნებისმიერ დროს თქვენ 927 00:41:10,460 --> 00:41:11,680 საქმე მისამართები? 928 00:41:11,680 --> 00:41:15,830 თქვენ თითქმის ყოველთვის საქმე პირველი ასეთი მისამართი, რაც არ უნდა დიდი 929 00:41:15,830 --> 00:41:19,490 ბლოკი მეხსიერება თქვენ მიმდინარეობს გადასცა უკან, ასე ვთქვათ. 930 00:41:19,490 --> 00:41:20,880 >> მოდით ჩაყვინთვის აქ. 931 00:41:20,880 --> 00:41:23,940 ვცდილობ გამოყოფას თუ როგორ ბევრი ბაიტი, ზუსტად? 932 00:41:23,940 --> 00:41:24,080 ასევე. 933 00:41:24,080 --> 00:41:26,090 სიმებიანი ხანგრძლივობა s - მოდით ამის გაკეთება კონკრეტული მაგალითი. 934 00:41:26,090 --> 00:41:30,700 თუ არის hello, H-E-L-L-O, რა სიმებიანი ხანგრძლივობა s, აშკარად? 935 00:41:30,700 --> 00:41:32,010 ასე რომ, ხუთი. 936 00:41:32,010 --> 00:41:34,590 მაგრამ მე ვაკეთებ პლუს 1, რომ, რატომ? 937 00:41:34,590 --> 00:41:37,700 რატომ მინდა ექვსი bytes ნაცვლად ხუთ? 938 00:41:37,700 --> 00:41:38,790 Null ხასიათი. 939 00:41:38,790 --> 00:41:41,210 >> მე არ მინდა დატოვება off ამ სპეციალური null ხასიათი. 940 00:41:41,210 --> 00:41:45,160 იმიტომ, რომ თუ მე ასლი განყოფილებაში და მხოლოდ ამის გაკეთება H-E-L-L-O, მაგრამ მე არ დააყენა 941 00:41:45,160 --> 00:41:50,160 განსაკუთრებული ხასიათი, კომპიუტერი შეიძლება არ აქვს, შანსი, წარმატებული 942 00:41:50,160 --> 00:41:51,730 ნულოვანი არსებობს ჩემთვის. 943 00:41:51,730 --> 00:41:55,570 ასე რომ, თუ მე ცდილობენ გაერკვნენ ხანგრძლივობა ასლი, მე ალბათ ფიქრობთ, რომ 944 00:41:55,570 --> 00:41:59,360 ეს 20 სიმბოლო გრძელი ან მილიონი სიმბოლო თუ უბრალოდ არ ხდება 945 00:41:59,360 --> 00:42:01,050 მოხვდა წარმატებული ნულოვანი. 946 00:42:01,050 --> 00:42:05,780 >> ასე რომ, ჩვენ გვჭირდება ექვსი bytes შესანახად H-E-L-L-O, წარმატებული ნულოვანი. 947 00:42:05,780 --> 00:42:07,870 და მაშინ ეს მხოლოდ უნდა იყოს სუპერ anal. 948 00:42:07,870 --> 00:42:10,700 დავუშვათ, რომ მე უნდა დაგვავიწყდეს, თუ რა ზომის char არის. 949 00:42:10,700 --> 00:42:12,020 ჩვენ გვაქვს რომ ერთი ბაიტი. 950 00:42:12,020 --> 00:42:12,860 და ეს, როგორც წესი, არის. 951 00:42:12,860 --> 00:42:15,425 თეორიულად, ეს შეიძლება იყოს რაღაც სხვადასხვა, სხვადასხვა Mac ან 952 00:42:15,425 --> 00:42:16,250 სხვადასხვა კომპიუტერი. 953 00:42:16,250 --> 00:42:19,650 >> გამოდის, რომ არსებობს ამ ოპერატორი მოუწოდა sizeof, რომ თუ თქვენ გაიაროს ეს 954 00:42:19,650 --> 00:42:22,680 სახელი მონაცემთა ტიპის - მსგავსი char, ან int, ან float - 955 00:42:22,680 --> 00:42:26,930 იგი გეტყვით, დინამიურად, რამდენი bytes char იღებს ამ 956 00:42:26,930 --> 00:42:28,090 კერძოდ კომპიუტერი. 957 00:42:28,090 --> 00:42:31,360 >> ასე რომ, ეს ეფექტურად მხოლოდ ისევე როგორც ამბობდნენ ჯერ 1 ან 958 00:42:31,360 --> 00:42:32,440 ჯერ არაფერი. 959 00:42:32,440 --> 00:42:36,340 მაგრამ მე ვაკეთებ უბრალოდ უნდა იყოს სუპერ ანალური რომ მხოლოდ იმ შემთხვევაში, char განსხვავდება 960 00:42:36,340 --> 00:42:40,610 თქვენს კომპიუტერში წინააღმდეგ აფეთქდა, ამ გზით მათემატიკის ყოველთვის აპირებს შეამოწმოს. 961 00:42:40,610 --> 00:42:43,720 >> და ბოლოს, ქვემოთ აქ შემოწმება null, რომელიც ყოველთვის კარგი პრაქტიკა - ერთხელ, 962 00:42:43,720 --> 00:42:44,920 ნებისმიერ დროს ჩვენ საქმე გვაქვს მითითებას. 963 00:42:44,920 --> 00:42:47,520 თუ malloc ვერ შეძლო, რათა მე ექვსი byes - რაც 964 00:42:47,520 --> 00:42:49,210 ნაკლებად სავარაუდოა, მაგრამ მხოლოდ იმ შემთხვევაში - 965 00:42:49,210 --> 00:42:50,730 დაბრუნების ერთ დაუყოვნებლივ. 966 00:42:50,730 --> 00:42:53,290 ახლა კი, წავიდეთ წინ და კოპირება სიმებიანი ასეთია. 967 00:42:53,290 --> 00:42:57,240 და ეს ნაცნობი სინტაქსის, თუმცა სხვადასხვა როლი. 968 00:42:57,240 --> 00:43:01,210 >> მე ვაპირებ წავიდეთ წინ და მიიღოს სიმებიანი ხანგრძლივობა და ჩაწერს მას ო. 969 00:43:01,210 --> 00:43:06,620 მე მაშინ აპირებს iterate from i შეადგენს ნულოვანი მდე და მათ შორის ნ 970 00:43:06,620 --> 00:43:08,410 მეტია ან ტოლი. 971 00:43:08,410 --> 00:43:13,540 ასე რომ, თითოეულ iteration, მე დააყენა შ ხასიათის s in შ 972 00:43:13,540 --> 00:43:15,380 ხასიათი ტ. 973 00:43:15,380 --> 00:43:18,190 >> ასე რომ, თუ რა სინამდვილეში ქვეშ hood აქ? 974 00:43:18,190 --> 00:43:22,140 ისე, თუ ეს, მაგალითად, s - 975 00:43:22,140 --> 00:43:26,400 და მე აკრეფილი სიტყვა H-E-L-L-O და არ არსებობს წარმატებული ნულოვანი. 976 00:43:26,400 --> 00:43:29,020 ისევ და ისევ, ეს s მიუთითებს აქ. 977 00:43:29,020 --> 00:43:30,830 აქ ახლა არის ტ. 978 00:43:30,830 --> 00:43:34,860 >> ეს კი მიუთითებს ახლა ასლი მეხსიერება, არა? 979 00:43:34,860 --> 00:43:37,340 Malloc მომცა მთელი ბლოკი მეხსიერება. 980 00:43:37,340 --> 00:43:41,440 არ ვიცი, თავიდან რა ნებისმიერ ამ ადგილებში. 981 00:43:41,440 --> 00:43:44,340 ამიტომ, მე ვაპირებ, რომ ვფიქრობ, ეს როგორც მთელი bunch of კითხვის ნიშნები. 982 00:43:44,340 --> 00:43:50,190 >> მაგრამ როგორც კი დავიწყებ looping ნულიდან მდე საშუალებით ხანგრძლივობა s, ტ 983 00:43:50,190 --> 00:43:52,790 bracket ნულოვანი და უ bracket 1 - 984 00:43:52,790 --> 00:43:55,080 და მე დააყენა ეს ახლა on ოვერჰედის - 985 00:43:55,080 --> 00:44:04,190 t bracket ნულოვანი და s bracket ნულოვანი ნიშნავს რომ მე უნდა გადაწერა 986 00:44:04,190 --> 00:44:09,875 iteratively სთ აქ, E-L-L-O. გარდა ამისა, იმის გამო, რომ მე პლუს 987 00:44:09,875 --> 00:44:12,370 1, წარმატებული ნულოვანი. 988 00:44:12,370 --> 00:44:19,060 >> ასე რომ, ახლა იმ შემთხვევაში, შედარების-1.c, საბოლოო ჯამში, თუ ამობეჭდოთ 989 00:44:19,060 --> 00:44:24,760 კაპიტალიზაცია t, ჩვენ უნდა ვხედავთ, რომ არის უცვლელი. 990 00:44:24,760 --> 00:44:26,090 ნება მომეცით წავიდეთ წინ არის და ამის გაკეთება. 991 00:44:26,090 --> 00:44:28,630 ასე რომ copy1. 992 00:44:28,630 --> 00:44:30,860 Dot ხაზი copy1. 993 00:44:30,860 --> 00:44:33,670 მე ვაპირებ აკრიფოთ hello, შეიტანეთ. 994 00:44:33,670 --> 00:44:37,430 ახლა კი შეამჩნია, მხოლოდ ასლი უკვე კაპიტალიზაცია. 995 00:44:37,430 --> 00:44:40,890 იმის გამო, რომ მე ნამდვილად გვაქვს ორი მოცულობით მეხსიერება. 996 00:44:40,890 --> 00:44:44,390 >> სამწუხაროდ, მაშინ ზოგიერთი საკმაოდ ცუდი და საკმაოდ საშიში რამ აქ. 997 00:44:44,390 --> 00:44:49,290 ნება მომეცით გაიყვანოს up მაგალითად აქ არის, რომ გვაძლევს მაგალითს, რამდენიმე 998 00:44:49,290 --> 00:44:51,540 სხვადასხვა ხაზები. 999 00:44:51,540 --> 00:44:56,040 ასე რომ მხოლოდ ინტუიციურად აქ, პირველი ხაზი კოდის, int ვარსკვლავი x, არის გამოცხადების 1000 00:44:56,040 --> 00:44:57,340 ცვლადში x. 1001 00:44:57,340 --> 00:44:58,810 და რაც მონაცემთა ტიპის იმ ცვლადი? 1002 00:44:58,810 --> 00:45:01,820 1003 00:45:01,820 --> 00:45:04,290 რა არის მონაცემთა ტიპის, რომ ცვლადის? 1004 00:45:04,290 --> 00:45:06,980 ეს არ იყო cliffhanger. 1005 00:45:06,980 --> 00:45:08,350 >> მონაცემთა ტიპის int ვარსკვლავი. 1006 00:45:08,350 --> 00:45:12,600 ასე რომ, რას ნიშნავს ეს? x იქნება შესანახად მისამართი int. 1007 00:45:12,600 --> 00:45:13,520 მარტივია, რომ. 1008 00:45:13,520 --> 00:45:16,220 Y აპირებს შესანახად მისამართი int. 1009 00:45:16,220 --> 00:45:18,390 რა არის მესამე ხაზი კოდის აკეთებს იქ? 1010 00:45:18,390 --> 00:45:21,850 ეს გამოყოფის რამდენი ბაიტი, სავარაუდოდ? 1011 00:45:21,850 --> 00:45:22,350 ოთხი. 1012 00:45:22,350 --> 00:45:25,460 ამის გამო ზომის int არის ზოგადად ოთხი, malloc ოთხი აძლევს 1013 00:45:25,460 --> 00:45:29,950 ჩემს უკან მისამართი ბლოკი მეხსიერება, პირველ რომლის bytes არის 1014 00:45:29,950 --> 00:45:32,110 ინახება ახლა x. 1015 00:45:32,110 --> 00:45:34,410 >> ახლა ჩვენ გადავდივართ ცოტა სწრაფად. 1016 00:45:34,410 --> 00:45:35,760 ვარსკვლავი x ნიშნავს რა? 1017 00:45:35,760 --> 00:45:38,480 1018 00:45:38,480 --> 00:45:42,590 ეს იმას ნიშნავს, წასვლა რომ მისამართი და ამით რა რაოდენობის იქ? 1019 00:45:42,590 --> 00:45:43,870 განათავსეთ ნომერი 42 არსებობს. 1020 00:45:43,870 --> 00:45:47,590 ვარსკვლავი Y ნიშნავს წასვლა რა დროს შ და ამით ნომერი 13 არსებობს. 1021 00:45:47,590 --> 00:45:48,600 >> მაგრამ დაველოდოთ წუთში. 1022 00:45:48,600 --> 00:45:51,640 რა არის Y მომენტში? 1023 00:45:51,640 --> 00:45:54,950 რა მისამართია შ შენახვის? 1024 00:45:54,950 --> 00:45:55,770 ჩვენ არ ვიცით, არა? 1025 00:45:55,770 --> 00:45:59,230 ჩვენ არასდროს ერთხელ გამოიყენოთ დავალება ოპერატორი ჩართვის წ. 1026 00:45:59,230 --> 00:46:03,370 ასე რომ შ როგორც განაცხადეს მეორე ხაზი კოდი არის რამოდენიმე ნაგვის ღირებულება, დიდი 1027 00:46:03,370 --> 00:46:04,760 კითხვის ნიშნის ასე ვთქვათ. 1028 00:46:04,760 --> 00:46:07,230 შეიძლება მიუთითებს შემთხვევით არაფერი მეხსიერება, რომელიც 1029 00:46:07,230 --> 00:46:08,340 ზოგადად ცუდია. 1030 00:46:08,340 --> 00:46:13,540 >> ასე რომ, როგორც კი მოხვდა, რომ ხაზი იქ, ვარსკვლავი y ტოლია 13, რაღაც ცუდი, 1031 00:46:13,540 --> 00:46:17,220 რაღაც ძალიან ცუდი დაახლოებით უნდა მოხდეს, რათა Binky. 1032 00:46:17,220 --> 00:46:25,810 ასე რომ, ვნახოთ რა ხდება დასრულდება ხდება Binky აქ ამ წუთში 1033 00:46:25,810 --> 00:46:26,200 ან ასე გამოიყურება. 1034 00:46:26,200 --> 00:46:26,490 >> [ვიდეო აღწარმოების] 1035 00:46:26,490 --> 00:46:26,745 >> -Hey, Binky. 1036 00:46:26,745 --> 00:46:27,000 გაიღვიძეთ. 1037 00:46:27,000 --> 00:46:29,296 დროა მაჩვენებელი სახალისო. 1038 00:46:29,296 --> 00:46:30,680 >> -რა არის რომ? 1039 00:46:30,680 --> 00:46:31,980 შესწავლა მითითებას? 1040 00:46:31,980 --> 00:46:34,010 Oh, goodie. 1041 00:46:34,010 --> 00:46:37,220 >> -Well, უნდა დაიწყო, ვფიქრობ, ჩვენ აპირებთ უნდა რამდენიმე მითითებას. 1042 00:46:37,220 --> 00:46:37,930 >> -OK. 1043 00:46:37,930 --> 00:46:41,650 ეს კოდი გამოყოფს ორ მითითებას რომელიც შეიძლება აღვნიშნო, რომ რიცხვებით. 1044 00:46:41,650 --> 00:46:43,760 >> -OK, ასევე, მე ვხედავ ორ მითითებას. 1045 00:46:43,760 --> 00:46:45,850 მაგრამ ისინი არ ჩანს მიუთითებს არაფერი. 1046 00:46:45,850 --> 00:46:46,490 >> -ეს უფლება. 1047 00:46:46,490 --> 00:46:48,630 თავდაპირველად, მითითებას არ აღვნიშნავთ, რომ არაფერი. 1048 00:46:48,630 --> 00:46:51,700 რამ ისინი მიუთითებენ უწოდებენ pointees და დახურეს არის 1049 00:46:51,700 --> 00:46:52,850 ცალკე ნაბიჯი. 1050 00:46:52,850 --> 00:46:53,740 >> -Oh, უფლება, უფლება. 1051 00:46:53,740 --> 00:46:54,500 ვიცოდი, რომ. 1052 00:46:54,500 --> 00:46:56,270 Pointees ცალკე. 1053 00:46:56,270 --> 00:46:58,553 ასე რომ, როგორ შეიძლება ამის გამოყოფს pointee? 1054 00:46:58,553 --> 00:46:59,480 >> -OK. 1055 00:46:59,480 --> 00:47:03,707 ასევე, ამ კოდი გამოყოფს ახალი რიცხვებით pointee, და ეს ნაწილი განსაზღვრავს x 1056 00:47:03,707 --> 00:47:05,520 აღვნიშნო მას. 1057 00:47:05,520 --> 00:47:06,760 >> -Hey, რომ უკეთესია. 1058 00:47:06,760 --> 00:47:08,520 ასე რომ, ის გახდეს. 1059 00:47:08,520 --> 00:47:09,530 >> -OK. 1060 00:47:09,530 --> 00:47:14,110 მე dereference მაჩვენებელი x შესანახად ნომერი 42 მის pointee. 1061 00:47:14,110 --> 00:47:17,660 ამისათვის შეასრულა, მე უნდა ჩემი ჯადოსნური კვერთხი of dereferencing. 1062 00:47:17,660 --> 00:47:20,695 >> -შენი ჯადოსნური ჯოხი of dereferencing? 1063 00:47:20,695 --> 00:47:22,632 Uh, რომ დიდი. 1064 00:47:22,632 --> 00:47:24,620 >> -ეს არის ის, რაც კოდი გამოიყურება. 1065 00:47:24,620 --> 00:47:27,526 მე მხოლოდ წყობის ნომერი, და - 1066 00:47:27,526 --> 00:47:28,250 >> -Hey, გამოიყურება. 1067 00:47:28,250 --> 00:47:29,680 არსებობს მიდის. 1068 00:47:29,680 --> 00:47:34,520 ამით dereference on x შემდეგნაირად arrow წვდომის მისი pointee. 1069 00:47:34,520 --> 00:47:36,690 ამ შემთხვევაში, შესანახად 42 იქ. 1070 00:47:36,690 --> 00:47:40,890 Hey, ცდილობენ გამოყენება შესანახად ნომერი 13 გზით სხვა მაჩვენებელი, წ. 1071 00:47:40,890 --> 00:47:42,125 >> -OK. 1072 00:47:42,125 --> 00:47:46,810 მე უბრალოდ მეტი აქ Y-სა და მიიღეთ ნომერი 13 შეიქმნება. 1073 00:47:46,810 --> 00:47:50,890 და მერე ჯოხი of dereferencing და მხოლოდ - 1074 00:47:50,890 --> 00:47:52,430 Whoa, 1075 00:47:52,430 --> 00:47:53,030 >> -Oh, hey. 1076 00:47:53,030 --> 00:47:54,610 ეს არ იმუშავებს. 1077 00:47:54,610 --> 00:47:58,200 ამბობენ, Binky, არა მგონია, dereferencing Y არის კარგი იდეა, 1078 00:47:58,200 --> 00:48:01,370 რადგან შექმნის pointee ცალკე ნაბიჯი. 1079 00:48:01,370 --> 00:48:03,460 მე არ ვფიქრობ, რომ ჩვენ ოდესმე გააკეთა ეს. 1080 00:48:03,460 --> 00:48:03,810 >> -Hmm. 1081 00:48:03,810 --> 00:48:05,160 კარგი წერტილი. 1082 00:48:05,160 --> 00:48:07,410 >> -ჰო, ჩვენ გამოყოფილი მაჩვენებელი წ. 1083 00:48:07,410 --> 00:48:10,045 მაგრამ ჩვენ არასდროს ვაყენებთ მას მიუთითებენ pointee. 1084 00:48:10,045 --> 00:48:10,490 >> -Hmm. 1085 00:48:10,490 --> 00:48:12,170 ძალიან დაკვირვებულობა. 1086 00:48:12,170 --> 00:48:13,790 >> -ეი, თქვენ ვეძებთ კარგი იქ, Binky. 1087 00:48:13,790 --> 00:48:16,920 შეგიძლიათ დაფიქსირება ისე, რომ Y რაოდენობა ამავე pointee როგორც x? 1088 00:48:16,920 --> 00:48:17,810 >> -დარწმუნებული. 1089 00:48:17,810 --> 00:48:20,300 მე, ჩემი ჯადოსნური ჯოხი of მაჩვენებელი საბუთი. 1090 00:48:20,300 --> 00:48:22,240 >> -ის არის, რომ იქნება პრობლემა, როგორიც ადრე? 1091 00:48:22,240 --> 00:48:22,665 >> -No. 1092 00:48:22,665 --> 00:48:24,300 ეს არ შეხებია pointees. 1093 00:48:24,300 --> 00:48:27,880 ეს მხოლოდ ცვლის ერთ მაჩვენებელი აღვნიშნო to იგივე როგორც სხვა. 1094 00:48:27,880 --> 00:48:28,970 >> -Oh, მე ვერ ვხედავ. 1095 00:48:28,970 --> 00:48:31,730 ახლა შ რაოდენობა იმავე ადგილზე, როგორც x. 1096 00:48:31,730 --> 00:48:32,450 ასე რომ, დაველოდოთ. 1097 00:48:32,450 --> 00:48:33,490 ახლა შ დაფიქსირდა. 1098 00:48:33,490 --> 00:48:34,630 მას აქვს pointee. 1099 00:48:34,630 --> 00:48:36,520 ასე რომ, შეგიძლიათ ცდილობენ კვერთხი საქართველოს dereferencing ერთხელ 1100 00:48:36,520 --> 00:48:39,200 გაგზავნის 13 დასრულდა. 1101 00:48:39,200 --> 00:48:39,840 >> -OK. 1102 00:48:39,840 --> 00:48:41,570 აქ გადის. 1103 00:48:41,570 --> 00:48:42,870 >> -Hey, შეხედეთ, რომ. 1104 00:48:42,870 --> 00:48:44,320 ახლა dereferencing სამუშაოები წ. 1105 00:48:44,320 --> 00:48:47,020 და რადგან მითითებას ან სხვა რომ ერთ pointee, მათ 1106 00:48:47,020 --> 00:48:48,585 როგორც ვხედავთ, 13. 1107 00:48:48,585 --> 00:48:49,040 >> -ჰო. 1108 00:48:49,040 --> 00:48:49,670 გაზიარება. 1109 00:48:49,670 --> 00:48:50,380 როგორიც არ უნდა იყოს. 1110 00:48:50,380 --> 00:48:52,290 ასე რომ მივდივართ გადართვის ადგილებში ახლა? 1111 00:48:52,290 --> 00:48:52,970 >> -Oh, შეხედეთ. 1112 00:48:52,970 --> 00:48:54,150 ჩვენ მისთვის განკუთვნილ დროში. 1113 00:48:54,150 --> 00:48:55,200 >> მაგრამ - 1114 00:48:55,200 --> 00:48:57,060 >> -უბრალოდ გვახსოვდეს, სამი მაჩვენებელი წესები. 1115 00:48:57,060 --> 00:49:00,100 პირველი ნომერი, ძირითადი სტრუქტურა არის, რომ თქვენ გაქვთ მაჩვენებელი. 1116 00:49:00,100 --> 00:49:02,170 და ეს მიუთითებს გადასცა pointee. 1117 00:49:02,170 --> 00:49:04,160 მაგრამ მაჩვენებელი და pointee ცალკე. 1118 00:49:04,160 --> 00:49:06,460 ხოლო საერთო შეცდომა არის შეიქმნა მაჩვენებელი, არამედ 1119 00:49:06,460 --> 00:49:08,540 დაგვავიწყდეს, რომ მოცემულ pointee. 1120 00:49:08,540 --> 00:49:12,460 >> ხმების ორი, მაჩვენებელი dereferencing იწყება ერთი მაჩვენებელი და შეასრულებს 1121 00:49:12,460 --> 00:49:14,570 arrow მეტი წვდომის მისი pointee. 1122 00:49:14,570 --> 00:49:18,640 როგორც ვიცით, ეს მუშაობს მხოლოდ იმ შემთხვევაში, თუ არსებობს არის pointee, რომელიც იღებს უკან 1123 00:49:18,640 --> 00:49:19,790 გამორიცხავს ნომერ პირველი. 1124 00:49:19,790 --> 00:49:23,670 >> პუნქტების სამი, მაჩვენებელი დავალება იღებს ერთი მაჩვენებელი და ცვლილებები ის აღვნიშნო, რომ 1125 00:49:23,670 --> 00:49:25,850 იგივე pointee კიდევ ერთი მაჩვენებელი. 1126 00:49:25,850 --> 00:49:27,840 ასე რომ დავალების ორი მითითებას იქნება 1127 00:49:27,840 --> 00:49:29,430 აღვნიშნავთ, რომ იგივე pointee. 1128 00:49:29,430 --> 00:49:31,600 ზოგჯერ, რომ ე.წ. გაზიარება. 1129 00:49:31,600 --> 00:49:33,430 და ეს ყველაფერი არ არის იგი, ნამდვილად. 1130 00:49:33,430 --> 00:49:33,840 Bye bye არის. 1131 00:49:33,840 --> 00:49:34,300 >> [END ვიდეო აღწარმოების] 1132 00:49:34,300 --> 00:49:36,940 >> დავით Malan: ასე უფრო მითითებას, უფრო Binky მომავალ კვირას. 1133 00:49:36,940 --> 00:49:38,190 ჩვენ დავინახავთ, თქვენ ორშაბათს. 1134 00:49:38,190 --> 00:49:42,187