1 00:00:00,000 --> 00:00:06,180 2 00:00:06,180 --> 00:00:07,820 >> JASON HIRSCHHORN: Welcome to A5, ყველას. 3 00:00:07,820 --> 00:00:11,270 ჩვენ საინტერესო კვირით ადრე ჩვენთვის, ძირითადად იმიტომ, რომ არსებობს ამდენი new 4 00:00:11,270 --> 00:00:12,350 დგას ამ ოთახში. 5 00:00:12,350 --> 00:00:12,920 ეს მშვენიერი. 6 00:00:12,920 --> 00:00:15,740 ბევრი თქვენ აქ შემთხვევით, რაც უფრო უკეთესი. 7 00:00:15,740 --> 00:00:18,220 ასე რომ იმედია თქვენ შენარჩუნება მობრძანებისათვის. 8 00:00:18,220 --> 00:00:20,220 >> ამ კვირაში ჩვენ ვაპირებთ გაატაროთ ნაყარი განყოფილებაში 9 00:00:20,220 --> 00:00:21,870 ემზადება ვიქტორინა. 10 00:00:21,870 --> 00:00:26,580 ასე რომ, ერთ ჩვენს დღის წესრიგში, ჩვენ ვაპირებთ გაიგო ცოტა რესურსი კლასის, 11 00:00:26,580 --> 00:00:30,350 არამედ ინტელექტუალური და შემდეგ, კიდევ ერთხელ, დახარჯოს ნაყარი კლასის საუბარი 12 00:00:30,350 --> 00:00:31,390 შესახებ შეკითხვებს. 13 00:00:31,390 --> 00:00:33,900 მას შემდეგ, რაც ჩვენ გავაკეთეთ პასუხობდა თქვენი შეკითხვები, თუ თქვენს შეკითხვებს 14 00:00:33,900 --> 00:00:39,010 ბუნებრივად მიგვიყვანს რამდენიმე კოდირება, I აქვს ნიმუში პრობლემები შუალედური 15 00:00:39,010 --> 00:00:43,180 წარსულში, რომ ჩვენ კოდექსის ცოცხალი განყოფილებაში ერთად, რომელიც ასევე ზრდიან ზოგიერთი სხვა 16 00:00:43,180 --> 00:00:45,420 კარგი თემა დასაფარავად. 17 00:00:45,420 --> 00:00:48,280 >> ასე რომ, პირველი, როგორც ჩვენ გავიარეთ, რომ ბოლო რამდენიმე კვირის განმავლობაში შეგახსენოთ 18 00:00:48,280 --> 00:00:51,700 ბიჭები, არსებობს ტონა რესურსების ხელმისაწვდომია ამ კურსს. 19 00:00:51,700 --> 00:00:55,020 ბევრი მათგანი იქნება წარმოუდგენლად სასარგებლო თქვენ, როგორც თქვენ გააგრძელებს 20 00:00:55,020 --> 00:00:57,280 შესწავლა ინტელექტუალური 0, იმიტომ, ის სამშაბათი დღის მეორე ნახევარში. 21 00:00:57,280 --> 00:00:59,630 ასე რომ ყველა თქვენ უკვე შესწავლის ცოტა. 22 00:00:59,630 --> 00:01:02,640 >> არსებობს ლექცია შენიშვნები და წყარო კოდი, რომ თქვენ უნდა 23 00:01:02,640 --> 00:01:04,050 აუცილებლად შეამოწმეთ. 24 00:01:04,050 --> 00:01:05,019 უყუროთ შორტები. 25 00:01:05,019 --> 00:01:07,470 შეამოწმეთ study.cs50.net. 26 00:01:07,470 --> 00:01:11,770 და შემდეგ, ქვემოთ ჩამოთვლილი, მთელი რიგი სხვა რესურსები. 27 00:01:11,770 --> 00:01:14,020 >> ერთხელ, ინტელექტუალური 0 არის ხვალ 1 საათზე. 28 00:01:14,020 --> 00:01:18,230 თუ არ გავაკეთეთ უკვე, გადაამოწმოთ out შესახებ Quiz 0 დოკუმენტი 29 00:01:18,230 --> 00:01:21,370 რა თქმა უნდა ვებგვერდი გაერკვნენ სადაც თქვენ აღების ვიქტორინა. 30 00:01:21,370 --> 00:01:25,770 ვიქტორინა იწყება 1:10 და დამთავრდა 70 წუთის შემდეგ. 31 00:01:25,770 --> 00:01:29,610 ასე რომ, თუ გამოჩნდება შემდეგ 1:10, თქვენ აპირებს მიიღოს, რომ ბევრი ნაკლები ე 32 00:01:29,610 --> 00:01:30,940 70 მატჩში ვიქტორინა. 33 00:01:30,940 --> 00:01:33,570 ამიტომ დარწმუნდით, თქვენ იქ დრო. 34 00:01:33,570 --> 00:01:38,690 თუ თქვენ გაგრძელების სტუდენტი ან ჰქონდეს ზოგიერთი სხვა ტესტირების გათვალისწინებით, რომ 35 00:01:38,690 --> 00:01:40,400 არ უნდა იყოს 1 საათზე ხვალ. 36 00:01:40,400 --> 00:01:43,540 მაგრამ ერთხელ, შესამოწმებლად მომხმარებლის Quiz 0 დოკუმენტურად უნდა დავრწმუნდეთ, თქვენ იცით, როდესაც 37 00:01:43,540 --> 00:01:44,760 თქვენ აღების ვიქტორინა. 38 00:01:44,760 --> 00:01:46,440 მე დავწერე 75 წუთზე აქ. 39 00:01:46,440 --> 00:01:48,580 მე ვფიქრობ, რომ უფლება, არა 70. 40 00:01:48,580 --> 00:01:53,420 >> იგი მოიცავს ყველა მასალა კვირაში 0 გასულ კვირას ლექცია ოთხშაბათს. 41 00:01:53,420 --> 00:01:59,350 ისევ და ისევ, ეს ვიქტორინა, პოსტი, რომ დოკუმენტი, თქვენ ერთი ორმხრივი და 8 42 00:01:59,350 --> 00:02:03,770 1/2 11 ფურცელზე, რომ თქვენ გამოიყენოთ როგორც აღნიშნავს დროს ვიქტორინა. 43 00:02:03,770 --> 00:02:08,570 ბევრი ადამიანი, თუ არა საუკეთესო ხალხი, აქვს აღმოჩნდა, რომ ერთი ყველაზე გამოსადეგი გზა 44 00:02:08,570 --> 00:02:11,970 სასწავლებლად ვიქტორინა არის მიიღოს სასწავლო ფურცელი, 45 00:02:11,970 --> 00:02:13,730 ერთი sider, საკუთარი. 46 00:02:13,730 --> 00:02:17,710 ასე რომ შევხედოთ წარსულში პირობა, თუ ვნახე გასული მიიჩნიეს. 47 00:02:17,710 --> 00:02:19,960 მივაწვდინოთ მეგობარი დაინახოს, თუ რა ისინი აყენებს მათი. 48 00:02:19,960 --> 00:02:23,610 >> მაგრამ ხელები ქვემოთ, საუკეთესო გზა, თქვენ შეგიძლიათ სასწავლო გავლა ყველაფერი და 49 00:02:23,610 --> 00:02:26,530 whittle ის ქვემოთ რა უნდა ან უნდა არ ეკუთვნის, რომ ფურცელზე 50 00:02:26,530 --> 00:02:30,570 ქაღალდი, იმიტომ, რომ უბრალოდ მართლა გამოსადეგი გზა თქვენ დარწმუნდით 51 00:02:30,570 --> 00:02:33,620 თქვენ გადის ყველაფერი და გარკვეული მნიშვნელოვანია ეს. 52 00:02:33,620 --> 00:02:36,690 ყველაზე ხალხი, ჩვენ, მიუხედავად იმისა, არ ფურცელზე სხდომაზე უფლება 53 00:02:36,690 --> 00:02:39,840 შემდეგ მათ ვიქტორინა, არ ჩართოთ , რადგან, კიდევ ერთხელ, რომ ძალიან 54 00:02:39,840 --> 00:02:43,290 პროცესს გადის ინფორმაცია დაეხმარა მათ ვისწავლოთ იგი. 55 00:02:43,290 --> 00:02:45,370 >> ვინმეს გაქვთ რაიმე შეკითხვები შესახებ ინტელექტუალური 0? 56 00:02:45,370 --> 00:02:50,120 57 00:02:50,120 --> 00:02:51,450 აქვს ყველას - 58 00:02:51,450 --> 00:02:53,230 მე არ ვაპირებ ამის გაკეთება შოუ ხელში. 59 00:02:53,230 --> 00:02:53,550 არასოდეს გათვალისწინებით. 60 00:02:53,550 --> 00:02:54,790 მე ვაპირებ ვკითხო, რომლებიც დაიწყო სწავლა. 61 00:02:54,790 --> 00:02:58,360 მაგრამ მე არ მინდა, რომ თქვენ ყველა არ დააყენოს თქვენი ხელები. 62 00:02:58,360 --> 00:03:01,290 ასე რომ, როგორც ვთქვი - დიახ, Avi, წავიდეთ წინ. 63 00:03:01,290 --> 00:03:04,205 >> AVI: რა იქნება სასარგებლო რამ დააყენოს ერთი ძალაშია? 64 00:03:04,205 --> 00:03:05,875 >> სტუდენტი: ეს თქვენზეა. 65 00:03:05,875 --> 00:03:08,210 >> JASON HIRSCHHORN: თქვენ გამოიყენოთ თქვენი გადაწყვეტილება. 66 00:03:08,210 --> 00:03:13,220 სასარგებლო რამ მოათავსოთ ერთ გვერდიანი მასალა, თუ თქვენ დაბნეული შესახებ დიდი O 67 00:03:13,220 --> 00:03:17,510 runtime სხვადასხვა სახის ძებნა და სახის, დააყენა, რომ იქ 68 00:03:17,510 --> 00:03:18,760 მოსახერხებელი Dandy ჩარტში. 69 00:03:18,760 --> 00:03:22,250 ამგვარად, თუ თქვენ სთხოვა, რომ ვიქტორინა, თქვენ არ უნდა ვეცადოთ და ფიგურა 70 00:03:22,250 --> 00:03:23,560 ის ან მიზეზი მეშვეობით Runtime. 71 00:03:23,560 --> 00:03:24,730 თქვენ შეგიძლიათ მხოლოდ კოპირება ქვემოთ. 72 00:03:24,730 --> 00:03:28,320 თუ გადავხედავთ ტესტები წარსულში, ბევრი ჯერ, იქ გაშვებული დრო შეკითხვებს. 73 00:03:28,320 --> 00:03:34,150 ასე რომ იყოს მაგალითი კარგი რამ დააყენა თქვენი ერთი ძალაშია. 74 00:03:34,150 --> 00:03:37,450 >> სხვა კარგი რამ დააყენა, თუ თქვენ დაბნეული შესახებ, თუ როგორ უნდა განაცხადოს 75 00:03:37,450 --> 00:03:40,570 ფუნქცია ან რა სხვადასხვა ფუნქცია დეკლარაციაში, წერენ 76 00:03:40,570 --> 00:03:43,400 რომ არის, generic ვერსია და მაშინ იქნებ მაგალითი. 77 00:03:43,400 --> 00:03:47,290 თუ თქვენ დაბნეული შესახებ მითითებას, სქემა, თუ როგორ პოინტერები მუშაობა 78 00:03:47,290 --> 00:03:48,660 ალბათ ნამდვილად გამოსადეგი. 79 00:03:48,660 --> 00:03:52,440 თუ თქვენ დაბნეული შესახებ უკან, ნიმუში რეკურსიული ფუნქცია იქ 80 00:03:52,440 --> 00:03:54,980 შეიძლება ასევე ადასტურებს, რომ იყოს მართლაც გამოსადეგი. 81 00:03:54,980 --> 00:03:57,290 ნიშნავს ეს მოგცემთ ზოგიერთი იდეები? 82 00:03:57,290 --> 00:04:01,820 >> AVI თქვენ უნდა გვესმოდეს მთელი შედგენა პროცესი, ისევე როგორც 83 00:04:01,820 --> 00:04:03,220 როგორ, რომ სამუშაოები? 84 00:04:03,220 --> 00:04:06,620 >> JASON HIRSCHHORN: Everything რომ უკვე დაფარული იქნებოდა 85 00:04:06,620 --> 00:04:08,060 გამოჩნდება ვიქტორინა. 86 00:04:08,060 --> 00:04:08,930 კითხვები - 87 00:04:08,930 --> 00:04:11,300 მაგრამ ერთხელ, ზოგი რამ იქნება შეწონილი მძიმედ, ვიდრე სხვები. 88 00:04:11,300 --> 00:04:14,330 ზოგიერთი რამ არ ამუშავება ერთხელ და ისევ კლასის, 89 00:04:14,330 --> 00:04:15,590 ლექცია და განყოფილება. 90 00:04:15,590 --> 00:04:17,220 სხვა რამ არ აქვს ამუშავება, რომ ხშირად. 91 00:04:17,220 --> 00:04:22,900 >> ჩვენ ვისაუბრეთ ბევრი რამ # მოიცავს და -L რაღაც და რა ნიშნავს 92 00:04:22,900 --> 00:04:24,390 compilation პროცესში. 93 00:04:24,390 --> 00:04:29,120 ჩვენ ვისაუბრეთ ბევრი რამ GDB, cling, იმ სხვადასხვა flags რომ ჩვენ ვიყენებთ, როდესაც 94 00:04:29,120 --> 00:04:33,100 ჩვენ კომპილაციის რაღაც, და რა make15, მაგალითად, ნამდვილად 95 00:04:33,100 --> 00:04:34,510 ნიშნავს და მართლაც. 96 00:04:34,510 --> 00:04:38,110 ჩვენ არ გაიგო იმდენი შესახებ ყოველი ნაბიჯი 97 00:04:38,110 --> 00:04:39,240 compilation პროცესში. 98 00:04:39,240 --> 00:04:40,410 ჩვენ კვლავ ისაუბრა. 99 00:04:40,410 --> 00:04:42,550 ასე რომ, ეს არის კიდევ რაღაც, რომ თქვენ უნდა იცნობს. 100 00:04:42,550 --> 00:04:44,610 მაგრამ ერთხელ, ჩვენ არ ვაპირებთ, რომ იყოს - 101 00:04:44,610 --> 00:04:49,140 რამ ამუშავება უფრო ხშირად კლასში უფრო სავარაუდოა, რომ ამუშავება მეტი 102 00:04:49,140 --> 00:04:52,495 ხშირად და უფრო მძიმედ შეწონილი on ვიქტორინა. 103 00:04:52,495 --> 00:04:53,280 >> ზემოთ. 104 00:04:53,280 --> 00:04:54,580 ნებისმიერი სხვა კითხვებს ვიქტორინა 0? 105 00:04:54,580 --> 00:04:57,660 106 00:04:57,660 --> 00:05:00,050 >> OK, ამიტომ დააყენა სიაში თემები ფორუმში. 107 00:05:00,050 --> 00:05:01,550 მე გაიარა სილაბუსში. 108 00:05:01,550 --> 00:05:07,340 მე გაიარა განხილვის მონაკვეთზე ღამით და იმ სლაიდები ამუშავება 109 00:05:07,340 --> 00:05:13,710 ერთად არასამთავრობო ამომწურავ ჩამონათვალს თემები რომ ჩვენ დაფარული ამ დრომდე CS50 110 00:05:13,710 --> 00:05:16,800 და რაც შეიძლება გამოჩნდება ვიქტორინა. 111 00:05:16,800 --> 00:05:19,900 ასე რომ, მე არ ვაპირებ გავლა თითოეული მათგანი. 112 00:05:19,900 --> 00:05:22,370 რომ დასჭირდება ბევრად უფრო დრო, ვიდრე გვაქვს. 113 00:05:22,370 --> 00:05:26,880 მაგრამ მე დააყენა ამ მდე აქ იმედია Jog თქვენი მეხსიერება, რათა რაც შეიძლება 114 00:05:26,880 --> 00:05:28,420 ან შეიძლება არ იყოს ნაცნობი თქვენ. 115 00:05:28,420 --> 00:05:32,850 >> და მე მიყვარს დახარჯვა ნაყარი განყოფილების თქვენს კითხვებს პასუხობს შესახებ 116 00:05:32,850 --> 00:05:35,130 ამ თემებზე, თემები, არ დაფარული აქ. 117 00:05:35,130 --> 00:05:36,130 ჩვენ შეგვიძლია დავწეროთ ფსევდო კოდი. 118 00:05:36,130 --> 00:05:40,010 ჩვენ შეგვიძლია დავწეროთ რეალური კოდი უზრუნველყოს, რომ თქვენ - 119 00:05:40,010 --> 00:05:44,280 შემიძლია უპასუხოს შეკითხვას და დავეხმაროთ ყველას ფუნდამენტურად ესმის 120 00:05:44,280 --> 00:05:48,330 ბევრი ეს თემა ასე რომ თქვენ გრძნობენ მომზადებული და კომფორტული შესვლის 121 00:05:48,330 --> 00:05:50,150 ვიქტორინა ხვალ. 122 00:05:50,150 --> 00:05:52,300 ასე რომ წაიკითხოთ მეტი სიაში. 123 00:05:52,300 --> 00:05:54,780 თქვენ იმედია არ მოვა განყოფილებაში ზოგიერთ კითხვებზე, ასევე. 124 00:05:54,780 --> 00:05:58,480 როდესაც თქვენ მზად, გაზარდოთ თქვენი მხრივ, და ჩვენ უნდა დავიწყოთ. 125 00:05:58,480 --> 00:06:01,590 126 00:06:01,590 --> 00:06:05,200 >> გაითვალისწინეთ, კითხვები გაქვთ, არ არსებობს სულელური შეკითხვა. 127 00:06:05,200 --> 00:06:06,250 ჩვენ მოვისმინეთ, რომ ბევრი. 128 00:06:06,250 --> 00:06:09,490 და კითხვები გაქვთ, მზად ვარ დადებს, რომ ბევრი სხვა ხალხი, როგორც 129 00:06:09,490 --> 00:06:11,740 იჯდა აქ და თვალს ონლაინ აქვს ასევე. 130 00:06:11,740 --> 00:06:13,770 ასე რომ თქვენ შეგიძლიათ მხოლოდ დაეხმარება ხალხს მიერ სვამს კითხვებს. 131 00:06:13,770 --> 00:06:15,070 Marcus. 132 00:06:15,070 --> 00:06:18,040 >> MARCUS: შორის დასტის და ბევრი, არსებობს წინასწარ გამოყოფილი 133 00:06:18,040 --> 00:06:22,880 პროცენტული მეხსიერება, რომელიც განისაზღვრება, როგორც ეს არის დასტის, ან ბევრი? 134 00:06:22,880 --> 00:06:25,010 ან როგორ აკეთებს, რომ მუშაობა, ზუსტად? 135 00:06:25,010 --> 00:06:26,230 >> JASON HIRSCHHORN: Great კითხვა. 136 00:06:26,230 --> 00:06:28,640 მე ვაპირებ უკან კვალი ცოტა. 137 00:06:28,640 --> 00:06:30,910 არა ყველას - 138 00:06:30,910 --> 00:06:31,660 გთხოვთ, იყოს პატიოსანი აქ. 139 00:06:31,660 --> 00:06:34,130 მე ვიცი, მე გეკითხებით თქვენ დააყენოს თქვენი მხრივ თვალწინ თქვენს თანატოლებს. 140 00:06:34,130 --> 00:06:38,510 მაგრამ არსებობს ადამიანები, რომლებიც გრძნობენ არასასიამოვნო დასტის და ბევრი 141 00:06:38,510 --> 00:06:42,980 და მინდა წასვლა, რომ და რა არის ეს ნიშნავს? 142 00:06:42,980 --> 00:06:43,880 გაზარდოთ თქვენი მხრივ, თუ - 143 00:06:43,880 --> 00:06:44,420 OK. 144 00:06:44,420 --> 00:06:45,120 დიდი მადლობა. 145 00:06:45,120 --> 00:06:48,420 ამიტომ, ჩვენ ვაპირებთ წასვლა მეტი დასტის და ბევრი მართლაც სწრაფად და შემდეგ 146 00:06:48,420 --> 00:06:50,370 გადაინაცვლოს პასუხობდა თქვენს კითხვაზე. 147 00:06:50,370 --> 00:06:58,250 >> ასე რომ, თუ ჩვენ მიაპყროს out ყუთი წარმოადგენს მეხსიერების თქვენს კომპიუტერში, რა 148 00:06:58,250 --> 00:07:02,160 რამ, რომ წასვლა ამ ყუთში? 149 00:07:02,160 --> 00:07:03,630 მთავარი. 150 00:07:03,630 --> 00:07:04,020 ძირითადი ფუნქცია. 151 00:07:04,020 --> 00:07:05,890 სად მთავარი წავიდეთ? 152 00:07:05,890 --> 00:07:08,090 >> სტუდენტი: [INAUDIBLE]. 153 00:07:08,090 --> 00:07:09,390 >> JASON HIRSCHHORN: ასე ჩვენ მა მთავარ ქვემოთ აქ. 154 00:07:09,390 --> 00:07:12,180 155 00:07:12,180 --> 00:07:13,430 რა მიდის ამ ყუთში? 156 00:07:13,430 --> 00:07:16,000 157 00:07:16,000 --> 00:07:18,140 >> სტუდენტი: ფუნქციები რომ თქვენ მოვუწოდებთ. 158 00:07:18,140 --> 00:07:19,020 >> JASON HIRSCHHORN: ფუნქციები რომ ჩვენ მოვუწოდებთ. 159 00:07:19,020 --> 00:07:20,440 და სად მიდიან? 160 00:07:20,440 --> 00:07:21,300 >> სტუდენტი: In Stack. 161 00:07:21,300 --> 00:07:22,380 >> JASON HIRSCHHORN: ისინი წავიდეს Stack. 162 00:07:22,380 --> 00:07:27,350 ამიტომ, ჩვენ ვაპირებთ, რომ მოვუწოდო ამ რამ ქვემოთ აქ Stack. 163 00:07:27,350 --> 00:07:31,880 და ზევით, ჩვენ გვაქვს ბევრი. 164 00:07:31,880 --> 00:07:35,450 ასე რომ მეხსიერება არ არის ყუთი, ისევე, როგორც ეს. 165 00:07:35,450 --> 00:07:37,330 მაგრამ ეს არის რეალურად საკმაოდ ჰგავს. 166 00:07:37,330 --> 00:07:40,840 ეს იქნება ბევრი ყუთები მეტი და მეტი, დამოკიდებულია თუ რამდენად დიდი თქვენი 167 00:07:40,840 --> 00:07:43,730 კომპიუტერი და რამდენად დიდი თქვენი მეხსიერება არის. 168 00:07:43,730 --> 00:07:46,950 >> ამავე ციტირებით-unquote "bottom" არის Stack. 169 00:07:46,950 --> 00:07:50,880 და არსებობს მრავალი რამ რომ წავიდეთ Stack. 170 00:07:50,880 --> 00:07:53,840 და ის დამოკიდებული ფუნქციები თქვენ გაქვთ თქვენი კოდი. 171 00:07:53,840 --> 00:07:57,780 თქვენ ყოველთვის აქვს ერთი ფუნქცია თქვენი კოდი ეწოდება მთავარი, ასე რომ ყოველთვის 172 00:07:57,780 --> 00:08:00,480 განყოფილების ქვემოთ აქ დააწყობს მიეძღვნა მთავარი. 173 00:08:00,480 --> 00:08:03,980 >> ამ მონაკვეთების დასტის მოუწოდა დასტის ფარგლებში. 174 00:08:03,980 --> 00:08:09,580 როცა რეკავთ სხვა ფუნქცია, ვთქვათ მთავარი მოუწოდებს ბინარული ძებნის ფუნქცია, 175 00:08:09,580 --> 00:08:11,075 ჩვენ კიდევ ჩარჩო Stack. 176 00:08:11,075 --> 00:08:13,830 177 00:08:13,830 --> 00:08:17,320 უფრო კონკრეტულად, ჩვენ ვაპირებთ დავეხმაროთ ბლოკი მეხსიერება ჩვენს 178 00:08:17,320 --> 00:08:22,960 კომპიუტერული შესანახად ორობითი ძებნა ლოკალური ცვლადები და აწარმოებს ორობითი 179 00:08:22,960 --> 00:08:24,150 ძიების კოდი. 180 00:08:24,150 --> 00:08:26,810 >> ამიტომ ჩვენ მოვუწოდებთ ორობითი ძებნა. 181 00:08:26,810 --> 00:08:30,440 182 00:08:30,440 --> 00:08:33,340 ამ ბლოკი მეხსიერება, ჩვენ ვაპირებთ შესანახად მისი ადგილობრივი ცვლადები. 183 00:08:33,340 --> 00:08:35,270 ჩვენ ვაპირებთ შესანახად მისი printf ზარები. 184 00:08:35,270 --> 00:08:38,159 რაც არ უნდა მოხდეს, რომ ფუნქცია იქნება შენახული უფლება არსებობს. 185 00:08:38,159 --> 00:08:40,350 ორობითი ძებნა აპირებს შეასრულოს. 186 00:08:40,350 --> 00:08:42,210 იგი აპირებს დაასრულოს აღსრულება. 187 00:08:42,210 --> 00:08:47,450 რა არის სიტყვა C, რომელიც ნიშნავს რომ ფუნქცია უნდა 188 00:08:47,450 --> 00:08:49,306 დაასრულებს შესრულების? 189 00:08:49,306 --> 00:08:50,040 >> სტუდენტი: დაბრუნება. 190 00:08:50,040 --> 00:08:50,870 >> JASON HIRSCHHORN: დაბრუნება. 191 00:08:50,870 --> 00:08:53,230 ასე რომ როდესაც ხედავთ დაბრუნების განაცხადი, ფუნქცია მთავრდება 192 00:08:53,230 --> 00:08:54,350 როდესაც ის იგებს, რომ. 193 00:08:54,350 --> 00:08:56,740 ასე რომ ორობითი ძებნა მოხვდა მისი დაბრუნება. 194 00:08:56,740 --> 00:09:01,360 ამ ნაწილში ხსოვნას არსებითად გათავისუფლდებიან up. 195 00:09:01,360 --> 00:09:03,510 და ძირითადი კვლავ აღსრულება. 196 00:09:03,510 --> 00:09:07,240 ასე რომ, მთავარი იქნება პაუზის იქ, სადაც იყო, დარეკეთ ორობითი ძებნა, მიიღოთ გარკვეული დაბრუნების ღირებულება, 197 00:09:07,240 --> 00:09:08,700 და გააგრძელებს აღსრულება. 198 00:09:08,700 --> 00:09:10,840 ამ დასტის ჩარჩო მიდიან. 199 00:09:10,840 --> 00:09:14,810 >> იმ შემთხვევაში, თუ ჩვენ მოვუწოდებთ რეკურსიული ფუნქცია, რომელიც არის ფუნქცია, რომელიც მოუწოდებს თავად მეტი 200 00:09:14,810 --> 00:09:18,480 და მეტი, შესაძლებელია, - ამბობენ, რომ ჩვენ გააკეთა ბინარული ძებნის რეკურსიული. 201 00:09:18,480 --> 00:09:21,520 ჩვენ შესაძლოა ბინარული ძებნის მობილური ერთი, ორობითი ძებნა ორი, ორობითი ძებნა 202 00:09:21,520 --> 00:09:24,090 სამი, ბინარული ძებნის ოთხი, ორობითი ძებნა ხუთ. 203 00:09:24,090 --> 00:09:27,950 და მაშინ ეს საბოლოო ორობითი ძებნა ხუთ მოხვდა ბაზის შემთხვევაში, და დასტის 204 00:09:27,950 --> 00:09:31,010 ფარგლებში წავა უკან და შეინახოს დახურვა სანამ ჩვენ დავუბრუნდეთ მთავარ. 205 00:09:31,010 --> 00:09:32,530 ჩვენ შეგვიძლია წავიდეთ უკან ცოტა. 206 00:09:32,530 --> 00:09:35,530 მაგრამ ეს ყველაფერი არის იმის თქმა, თუ თქვენ მოუწოდებდა მრავალი ფუნქციები დროს, 207 00:09:35,530 --> 00:09:39,250 იქ ვიქნები მრავალი დასტის ფარგლებში Stack. 208 00:09:39,250 --> 00:09:42,900 >> ბევრი, მეორეს მხრივ, აქ, არ არის ფუნქციები, 209 00:09:42,900 --> 00:09:44,380 არა ადგილობრივი ცვლადები. 210 00:09:44,380 --> 00:09:48,920 ეს შეეხება დინამიურად გამოყოფილი ცვლადები. 211 00:09:48,920 --> 00:09:57,210 ასე რომ ეს არის ცვლადი, რომელიც შეიძლება იყოს ინიციალიზაცია ორივე მთავარ ან 212 00:09:57,210 --> 00:09:58,640 ფუნქცია, რომელიც მთავარ მოუწოდებს. 213 00:09:58,640 --> 00:10:00,790 სადმე თქვენს კოდი, ისინი შეიძლება ინიციალიზაცია. 214 00:10:00,790 --> 00:10:04,360 და ინიციალიზაცია დინამიურად გამოყოფილი ცვლადი. 215 00:10:04,360 --> 00:10:06,970 რა ფუნქცია C ვიყენებთ? 216 00:10:06,970 --> 00:10:07,600 >> სტუდენტი: Malloc. 217 00:10:07,600 --> 00:10:09,240 >> JASON HIRSCHHORN: Malloc. 218 00:10:09,240 --> 00:10:10,800 რეკავთ malloc. 219 00:10:10,800 --> 00:10:12,260 თქვენ სივრცეში მეხსიერებაში. 220 00:10:12,260 --> 00:10:15,020 და რომ სივრცე მეხსიერება არის ბევრი. 221 00:10:15,020 --> 00:10:18,840 და რომ სივრცე მეხსიერების რჩება იქ, სანამ რეკავთ უფასოდ. 222 00:10:18,840 --> 00:10:22,670 >> ასე დინამიურად გამოყოფილი ცვლადები ბევრი იქნება, რადგან თქვენ 223 00:10:22,670 --> 00:10:25,250 გვინდა, რომ არსებობს, და ისინი არ მიდიან, სანამ მკაფიოდ 224 00:10:25,250 --> 00:10:26,760 ვუთხრა, უნდა წავიდეს. 225 00:10:26,760 --> 00:10:29,670 თქვენ შეგიძლიათ შექმნათ მათ ერთი ფუნქცია. 226 00:10:29,670 --> 00:10:31,930 ეს ფუნქცია დასტის ჩარჩო მიდიან. 227 00:10:31,930 --> 00:10:35,490 მაგრამ ეს ცვლადი კვლავ არსებობს წელს ბევრი სანამ იგი გათავისუფლდა, 228 00:10:35,490 --> 00:10:39,650 პოტენციურად ფუნქცია მოუწოდა ორობითი ძებნა ან რასაც. 229 00:10:39,650 --> 00:10:42,580 >> ასე რომ იმ ბევრი ცვლადები იქ რადგან გსურთ 230 00:10:42,580 --> 00:10:43,490 მათ იქ დარჩენა. 231 00:10:43,490 --> 00:10:46,090 და ისინი დააყენა აქ. 232 00:10:46,090 --> 00:10:47,450 ხოლო შემდეგ მომდევნო ერთი იღებს დასვა იქ. 233 00:10:47,450 --> 00:10:50,210 ისინი არც შევსებული, და ისინი დარჩება იქ, სანამ რეკავთ უფასოდ. 234 00:10:50,210 --> 00:10:52,870 >> და არსებითად, ბევრი და დასტის, მიღების Marcus კითხვაზე, 235 00:10:52,870 --> 00:10:54,500 იზრდება ერთმანეთის მიმართ. 236 00:10:54,500 --> 00:10:57,730 და თუ ისინი გადაეყარონ ერთმანეთს, თქვენ გამოიყენება ყველა მეხსიერების თქვენს 237 00:10:57,730 --> 00:11:01,330 კომპიუტერი, და თქვენი პროგრამის დატოვა იმიტომ, რომ თქვენ არ გაქვთ მეტი მეხსიერების 238 00:11:01,330 --> 00:11:02,420 მარცხენა გამოიყენოს. 239 00:11:02,420 --> 00:11:07,290 წელს მათ შორის, არსებობს პოტენციურად სხვა რამ. 240 00:11:07,290 --> 00:11:10,980 მაგრამ წინამდებარე რა თქმა უნდა, არ უნდა ფიქრი, რომ. 241 00:11:10,980 --> 00:11:12,020 >> ასე რომ, იყო პასუხი თქვენს კითხვაზე. 242 00:11:12,020 --> 00:11:13,520 არ ინერვიულოთ შესახებ. 243 00:11:13,520 --> 00:11:15,550 მაგრამ ეს იყო გრძელი პასუხი. 244 00:11:15,550 --> 00:11:17,800 ყველა თქვენ უნდა იცოდეთ არის ბევრი და დასტის იქნება - 245 00:11:17,800 --> 00:11:18,900 იწყება ბოლოში. 246 00:11:18,900 --> 00:11:19,570 დასტის აკეთებს. 247 00:11:19,570 --> 00:11:20,790 ბევრი არის იქ. 248 00:11:20,790 --> 00:11:21,990 ისინი გაიზრდებიან უფრო ახლოს ერთმანეთს. 249 00:11:21,990 --> 00:11:23,110 >> და თუ ისინი შეეხოთ, რომ პრობლემა. 250 00:11:23,110 --> 00:11:24,500 თქვენ გაიქცა out of მეხსიერება. 251 00:11:24,500 --> 00:11:28,760 არამედ, გარდა ამისა, იცოდა, სადაც ისინი, რა ინახება ორივე 252 00:11:28,760 --> 00:11:30,512 დასტის და ბევრი. 253 00:11:30,512 --> 00:11:31,410 Curtis. 254 00:11:31,410 --> 00:11:33,570 >> CURTIS: როდესაც collide, ის არის, რომ დასტის overflow? 255 00:11:33,570 --> 00:11:35,670 >> JASON HIRSCHHORN: როდესაც collide, ეს არ არის დასტის overflow. 256 00:11:35,670 --> 00:11:38,340 დასტის overflow არის სხვადასხვა ტერიტორიაზე რომ ჩვენ შეგვიძლია წავიდეთ, თუ გნებავთ. 257 00:11:38,340 --> 00:11:40,020 OK, ჩვენ დავბრუნდებით, რომ ცოტა. 258 00:11:40,020 --> 00:11:42,730 >> სტუდენტი: რა არის სიტყვა მოუწოდა როდესაც ისინი ერთმანეთს, 259 00:11:42,730 --> 00:11:44,450 დასტის და ბევრი? 260 00:11:44,450 --> 00:11:46,640 >> JASON HIRSCHHORN: ახლა, არ ინერვიულოთ. 261 00:11:46,640 --> 00:11:47,750 უბრალოდ ვიცი, - 262 00:11:47,750 --> 00:11:50,530 მე ამ კითხვაზე პასუხის გაცემა მას შემდეგ, რაც კლასის. 263 00:11:50,530 --> 00:11:52,680 თუ ისინი გადაეყარონ ერთმანეთს, თქვენ გაიქცა აქედან მეხსიერება, იმიტომ, რომ იქ აღარ 264 00:11:52,680 --> 00:11:53,330 ფართი არსებობს. 265 00:11:53,330 --> 00:11:55,450 >> სტუდენტი: უკაცრავად, რა არის seg ბრალია? 266 00:11:55,450 --> 00:11:58,710 >> JASON HIRSCHHORN: A სეგმენტი ბრალი შეიძლება მოუწოდა - 267 00:11:58,710 --> 00:12:02,240 ეს დამოკიდებულია იმაზე, თუ რატომ seg ბრალია მოუწოდა. 268 00:12:02,240 --> 00:12:06,260 ზოგჯერ, თქვენი დასტის overflow, ეს თქვენ ამბობენ seg ბრალია, როგორც შეცდომა. 269 00:12:06,260 --> 00:12:08,180 >> სტუდენტი: რა dereferencing null ცვლადი? 270 00:12:08,180 --> 00:12:10,040 ის არის, რომ seg ბრალია? 271 00:12:10,040 --> 00:12:11,480 >> JASON HIRSCHHORN: dereferencing null მაჩვენებელი - 272 00:12:11,480 --> 00:12:17,850 OK, ასე რომ, თუ თქვენ გაქვთ მომცეთ, რომ თქვენ მითითებული ტოლი null, მითითებები, გაწვევას, 273 00:12:17,850 --> 00:12:20,270 მაღაზია მეხსიერების მისამართები როგორც მათი ღირებულებები. 274 00:12:20,270 --> 00:12:23,660 და null მაჩვენებელი არსებითად შენახვის 0, 0-th 275 00:12:23,660 --> 00:12:26,670 სიტყვით რომ ცვლადი. 276 00:12:26,670 --> 00:12:30,010 ასე 0x, 0, 0, 0, 0, et cetera. 277 00:12:30,010 --> 00:12:35,030 რომ 0-th მისამართზე მეხსიერებაში, რომ არ არის ჩვენს სურათს, რომ იქ 278 00:12:35,030 --> 00:12:38,800 სადღაც, რომ დაცულია კომპიუტერი. 279 00:12:38,800 --> 00:12:40,130 ჩვენ არ დაუშვეს შეეხოთ მას. 280 00:12:40,130 --> 00:12:44,680 >> ასე რომ, როდესაც თქვენი პროგრამის შესრულებაში, თუ რაღაც ცდილობს წასვლა მეხსიერება 281 00:12:44,680 --> 00:12:48,990 მისამართი 0, იგი დარწმუნებულია, რომ რომ არის ცარიელი ღირებულება. 282 00:12:48,990 --> 00:12:50,820 იგი დარწმუნებულია, არაფერი უნდა იყოს იქ. 283 00:12:50,820 --> 00:12:53,420 ასე რომ, თუ თქვენ ცდილობენ და გამოიყენოთ რაღაც არსებობს და მკურნალობა, რაღაც არსებობს, ან 284 00:12:53,420 --> 00:12:58,355 ცდილობს წავიდეს იმ, თქვენ აპირებს მიიღოს seg ბრალია ან შეცდომა. 285 00:12:58,355 --> 00:13:00,520 ამჯამად რომ უპასუხოს შეკითხვას? 286 00:13:00,520 --> 00:13:03,170 >> და ახლა ჩვენ დავბრუნდებით დასტის overflow. 287 00:13:03,170 --> 00:13:09,560 რამ დასტის, როგორც თქვენ ბიჭებს აქვთ მინახავს ადრე, - მოდით დავხატოთ ახლოს 288 00:13:09,560 --> 00:13:11,966 up დასტის ჩარჩო. 289 00:13:11,966 --> 00:13:15,050 შეიძლება ყველას ვხედავ, რომ? 290 00:13:15,050 --> 00:13:16,650 ასე რომ, ჩვენ გვაქვს ჩვენი დასტის ჩარჩო. 291 00:13:16,650 --> 00:13:23,260 ჩვენ გადარჩენის მასივი, როგორც ადგილობრივი ცვლადი ამ ფუნქციას. 292 00:13:23,260 --> 00:13:29,510 ასე რომ ვთქვათ, ჩვენი მასივი ხუთ წერტილში. 293 00:13:29,510 --> 00:13:33,230 ხუთივე იმ იქნება შენახული ამ დასტის ჩარჩო. 294 00:13:33,230 --> 00:13:37,540 >> თუ ჩვენ დავიწყებთ წერა მიღმა ფარგლებში ამ მასივი - 295 00:13:37,540 --> 00:13:43,990 ასე რომ, თუ ჩვენ დავიწყებთ წერის, მოდით ვთქვათ, რომ 0. 296 00:13:43,990 --> 00:13:46,800 იმ ხუთ ინდექსები ჩვენი მასივი. 297 00:13:46,800 --> 00:13:50,980 თუ ჩვენ დავიწყებთ წერის ინდექსი 5, რომელიც ჩვენ არ გვაქვს, როდესაც ჩვენ გვაქვს 298 00:13:50,980 --> 00:13:55,900 მასივი ზომა 5, ჩვენ ვიწყებთ წერის ინდექსი 6, 7, 8, 9, ჩვენ შეგვიძლია მივიღოთ Stack 299 00:13:55,900 --> 00:13:57,960 Overflow შეცდომა. 300 00:13:57,960 --> 00:14:00,510 >> ზოგადად, ეს არ არის - 301 00:14:00,510 --> 00:14:04,910 თქვენ ალბათ მოხვდნენ უბედურება თუ მთავრდება ერთი. 302 00:14:04,910 --> 00:14:08,640 მაგრამ ზოგადად, თქვენ შეღწევას ყველაზე უბედურება თუ მთავრდება ბევრი 303 00:14:08,640 --> 00:14:12,770 და თქვენ გადასვლა ჯერჯერობით მეტი რომ წერთ მეტი დაბრუნების მისამართი, რომ 304 00:14:12,770 --> 00:14:16,080 ფუნქცია, რომელიც მდებარეობს ბოლოში დასტის ჩარჩო. 305 00:14:16,080 --> 00:14:16,520 >> რადგან, არა? 306 00:14:16,520 --> 00:14:17,670 თქვენ - რომ - უკაცრავად. 307 00:14:17,670 --> 00:14:18,550 "არა იმიტომ, რომ უფლება." 308 00:14:18,550 --> 00:14:20,470 >> დასტის ჩარჩო, თქვენ უნდა თქვენი ადგილობრივი ცვლადები. 309 00:14:20,470 --> 00:14:27,090 ძალიან ბოლოში დასტის ჩარჩო დაბრუნების მისამართზე. 310 00:14:27,090 --> 00:14:28,790 სწორედ იქ, სადაც ფუნქცია მიდის, როდესაც ეს დასრულდა. 311 00:14:28,790 --> 00:14:33,750 და თუ გადავაწერო, რომ დაბრუნების მისამართი, მაშინ, როდესაც ამ დასტის ჩარჩო, 312 00:14:33,750 --> 00:14:36,680 როდესაც თქვენ გადის დასტის ვიზრუნოთ და შესრულებაში თითოეული ხაზი, თქვენ 313 00:14:36,680 --> 00:14:40,350 აპირებს მისვლას თქვენი დაბრუნების მისამართი რომ წერია ნაცვლად 314 00:14:40,350 --> 00:14:40,910 ფაქტობრივი ერთი. 315 00:14:40,910 --> 00:14:45,050 და ასე ჩვენ ვნახეთ ზოგიერთი უსაფრთხოების არღვევს 316 00:14:45,050 --> 00:14:46,780 შეიძლება მოხდეს კომპიუტერი. 317 00:14:46,780 --> 00:14:52,760 >> ასე დასტის overflow, მოკლედ, როდესაც თქვენ გადავაწერო მონაწილეობა დასტის 318 00:14:52,760 --> 00:14:55,440 თქვენ უნდა გამოიყენოთ, ადგილობრივი ცვლადი თქვენ უნდა გამოიყენოთ, და 319 00:14:55,440 --> 00:14:58,070 კერძოდ, როდესაც თქვენ დავიწყოთ overwriting მნიშვნელოვანი რამ, როგორიცაა 320 00:14:58,070 --> 00:14:59,100 დაბრუნებას მისამართზე. 321 00:14:59,100 --> 00:15:00,090 და რომ სადაც თქვენ მიიღებთ შეცდომა. 322 00:15:00,090 --> 00:15:03,980 ან შესაძლოა თქვენ შეიძლება დაიწყოს თუნდაც წერილობით შევიდა - 323 00:15:03,980 --> 00:15:05,370 ამბობენ, რომ ორობითი ძებნა იყო უფლება ზემოთ მთავარი. 324 00:15:05,370 --> 00:15:07,790 თუ თქვენ overwrote ბევრი, თქვენ შეეძლო დაეწერა თარგმნეს მთავარი. 325 00:15:07,790 --> 00:15:10,230 მაგრამ ზოგადად, თქვენ გაქვთ შეცდომა ადრე შემდეგ, იმის გამო, რომ კომპიუტერი იცის 326 00:15:10,230 --> 00:15:12,270 თქვენ აკეთებთ რაღაც არ უნდა აკეთებს. 327 00:15:12,270 --> 00:15:12,560 ჰო. 328 00:15:12,560 --> 00:15:13,910 >> სტუდენტი: რა არის განსხვავება შორის დასტის overflow 329 00:15:13,910 --> 00:15:16,940 და ბუფერული overflow? 330 00:15:16,940 --> 00:15:19,420 >> JASON HIRSCHHORN: ბუფერული overflow უფრო generic ტიპის 331 00:15:19,420 --> 00:15:20,395 რა მე უბრალოდ აღწერილი. 332 00:15:20,395 --> 00:15:22,610 >> სტუდენტი: ასე დასტის overflow არის მაგალითი ბუფერული overflow. 333 00:15:22,610 --> 00:15:23,420 >> JASON HIRSCHHORN: ზუსტად. 334 00:15:23,420 --> 00:15:28,700 ეს არის მასივი ჩვენ შეგვიძლია ვიფიქროთ, როგორც ბუფერული, ფართი რამ წასვლა შემოსული 335 00:15:28,700 --> 00:15:30,600 ეს არის დასტის ბუფერული overflow. 336 00:15:30,600 --> 00:15:33,210 ჩვენ შეგვეძლო ბევრი ბუფერული overflow. 337 00:15:33,210 --> 00:15:36,870 თუ იყო ბუფერული, რომელიც იქ ხშირად არის მასივი ბევრი, და ჩვენ 338 00:15:36,870 --> 00:15:40,600 overwrote იმ ფარგლებში, მაშინ ჩვენ აქვს ბევრი ბუფერული overflow. 339 00:15:40,600 --> 00:15:44,870 >> და სცილდება ეს კურსი, ისინი აღმოჩენილი ცოტა განსხვავებულად. 340 00:15:44,870 --> 00:15:48,040 შემდგენელი აქვს სპეციალური გზების გამოვლენის თითოეული. 341 00:15:48,040 --> 00:15:50,660 მაგრამ ბუფერული overflow უფრო generic ტიპის რაც მე აღწერილი, 342 00:15:50,660 --> 00:15:54,090 რომელიც დასტის ბუფერული overflow. 343 00:15:54,090 --> 00:15:56,240 იცოდით, რომ პასუხი გასცეს შეკითხვას? 344 00:15:56,240 --> 00:15:57,910 ტკბილი. 345 00:15:57,910 --> 00:16:01,850 >> იქ ნებისმიერი სხვა საკითხებს დასტის და ბევრი? 346 00:16:01,850 --> 00:16:04,920 347 00:16:04,920 --> 00:16:05,510 ჰო. 348 00:16:05,510 --> 00:16:08,220 >> სტუდენტი: მე ვიცი, თქვენ გაქვთ თავისუფალი strings იმიტომ, რომ ისინი ბევრი 349 00:16:08,220 --> 00:16:09,305 და არ გსურთ გაჟონვა მეხსიერება. 350 00:16:09,305 --> 00:16:12,240 მაგრამ გაქვთ თავისუფალი გლობალური ცვლადები და პერსონალის იგრძნობა? 351 00:16:12,240 --> 00:16:14,335 ან ისინი ავტომატურად გათავისუფლდებიან? 352 00:16:14,335 --> 00:16:15,700 >> JASON HIRSCHHORN: კარგი კითხვაა. 353 00:16:15,700 --> 00:16:22,340 ასე რომ cs50.h, ჩვენ შევქმნით ამ რამ თქვენ მოუწოდა სიმებიანი. 354 00:16:22,340 --> 00:16:23,800 String მართლაც რა? 355 00:16:23,800 --> 00:16:24,810 >> სტუდენტი: Char ვარსკვლავი. 356 00:16:24,810 --> 00:16:29,180 >> JASON HIRSCHHORN: A char ვარსკვლავი, მომცეთ to ხასიათი, მომცეთ 357 00:16:29,180 --> 00:16:30,650 მასივი სიმბოლო. 358 00:16:30,650 --> 00:16:32,210 სწორედ string არის. 359 00:16:32,210 --> 00:16:36,050 ამიტომ, ჩვენ უნდა გავათავისუფლოთ, რადგან GetString, რაც ჩვენ ბევრი - 360 00:16:36,050 --> 00:16:38,370 string სახელი შეადგენს GetString - 361 00:16:38,370 --> 00:16:43,560 რომ mallocs ჩვენთვის გარკვეული მეხსიერების ბევრი და შემდეგ დააბრუნებს მომცეთ 362 00:16:43,560 --> 00:16:47,230 პირველი ხასიათი, რომ სიმებიანი, char ვარსკვლავი. 363 00:16:47,230 --> 00:16:52,760 >> ასე რომ, თითქოს, თუ თქვენ არ წერა უფასოდ თქვენს strings 364 00:16:52,760 --> 00:16:55,600 რომ თქვენ მოუწოდა ჯერჯერობით, თქვენ უნდა უკვე ჩამოდის ზოგიერთი მეხსიერებაში. 365 00:16:55,600 --> 00:16:57,430 რა თქმა უნდა, ჩვენ არ ისაუბრა , ასე რომ არავინ მიღებული 366 00:16:57,430 --> 00:16:58,520 პრობლემები ვაკეთებთ. 367 00:16:58,520 --> 00:16:59,980 მაგრამ წინსვლის, დიახ. 368 00:16:59,980 --> 00:17:03,990 როცა რეკავთ GetString, თქვენ mallocing გარკვეული სივრცე ბევრი. 369 00:17:03,990 --> 00:17:07,640 და თუ თქვენ არ მოვუწოდებთ უფასო მოგვიანებით, რომ სიმებიანი, თქვენ გაქვთ მეხსიერების გაჟონვის. 370 00:17:07,640 --> 00:17:09,440 რომ პასუხი თქვენს კითხვაზე? 371 00:17:09,440 --> 00:17:10,606 >> ჰო 372 00:17:10,606 --> 00:17:15,020 >> სტუდენტი: ასე უნდა გავაკეთოთ, რომ ვიყენებთ free უფლება ადრე დაბრუნების? 373 00:17:15,020 --> 00:17:18,510 მსგავსად, ფარგლებში, ვფიქრობ, თუ ჩვენ ვამბობთ, როგორიცაა, int, მთავარ ფარგლებში 374 00:17:18,510 --> 00:17:24,410 ფარგლებს კოდი რომ ფარგლებში იმ curly აფრთხილებს, უფლება - 375 00:17:24,410 --> 00:17:26,140 თქვენ იცით, სადაც ნეტავ ჩვეულებრივ დააყენა დაბრუნების. 376 00:17:26,140 --> 00:17:27,950 იცით თუ დააყენა უფასო მანამდე? 377 00:17:27,950 --> 00:17:31,000 >> JASON HIRSCHHORN: ასე რომ თქვენ შეგიძლიათ განათავსოთ უფასო იქ, სადაც გსურთ განათავსოთ უფასო. 378 00:17:31,000 --> 00:17:33,810 იმიტომ, რომ ეს დინამიურად გამოყოფილი ცვლადები, რადგან მათ შეუძლიათ 379 00:17:33,810 --> 00:17:39,170 ცხოვრება სცილდება კონკრეტული ფუნქცია, თუ რეკავთ malloc წელს 380 00:17:39,170 --> 00:17:44,140 ცალკე ფუნქცია, მაგალითად, GetString, შეგიძლიათ დარეკოთ უფასოდ მთავარი. 381 00:17:44,140 --> 00:17:46,050 თქვენ არ გჭირდებათ ეძახით კონკრეტული ფუნქცია 382 00:17:46,050 --> 00:17:47,570 სადაც malloc ეწოდება. 383 00:17:47,570 --> 00:17:50,340 მაგრამ თქვენ უნდა ეძახით სანამ მთავარ ბრუნდება. 384 00:17:50,340 --> 00:17:51,120 >> და ეს ნამდვილად არის დამოკიდებული. 385 00:17:51,120 --> 00:17:54,960 ეს დამოკიდებულია იმაზე, თუ რატომ malloced რომ ფართი პირველ რიგში. 386 00:17:54,960 --> 00:17:57,320 ზოგიერთი ადამიანი მოვუწოდებთ თავისუფალი საკმაოდ სწრაფად. 387 00:17:57,320 --> 00:17:59,220 ზოგიერთი ადამიანი არ მოვუწოდებთ თავისუფალი, სანამ ბოლომდე მათი პროგრამა. 388 00:17:59,220 --> 00:18:00,660 და ისინი ყველაფერს გაიაროს თავისუფალი და ყველაფერი. 389 00:18:00,660 --> 00:18:03,597 ეს დამოკიდებულია იმაზე, თუ რატომ მოუწოდა malloc. 390 00:18:03,597 --> 00:18:11,270 >> სტუდენტი: რა იტყვით თუ თქვენ მოუწოდა გამოყენების GetString? 391 00:18:11,270 --> 00:18:13,320 თქვენ მინდა ვთქვა, უფასო რა? 392 00:18:13,320 --> 00:18:20,040 >> JASON HIRSCHHORN: So სინტაქსი უფასო უბრალოდ თავისუფალი, ღია paren ახლოს, 393 00:18:20,040 --> 00:18:22,130 paren, და სახელი მაჩვენებელი. 394 00:18:22,130 --> 00:18:26,410 ასე რომ, თუ წერთ string სახელი თანასწორთა GetString, თქვენ დააყენა სახელი აქ. 395 00:18:26,410 --> 00:18:27,760 ეს არის ის სახელით მაჩვენებელი. 396 00:18:27,760 --> 00:18:30,570 და იგი დარწმუნებულია, თავისუფალი, რომ მეხსიერებაში. 397 00:18:30,570 --> 00:18:33,920 >> სტუდენტი: ასე რომ, როდესაც ათავისუფლებს, რომ მეხსიერება, მაჩვენებელი კვლავ მიუთითებს, რომ ადგილი 398 00:18:33,920 --> 00:18:34,970 მეხსიერებაში? 399 00:18:34,970 --> 00:18:39,020 ან მაჩვენებელი ასევე დაცლილი მისამართი, რომ ეს მიუთითებს. 400 00:18:39,020 --> 00:18:40,290 >> JASON HIRSCHHORN: ჩვენ უნდა ვეცადოთ, რომ. 401 00:18:40,290 --> 00:18:41,430 ჩვენ უნდა კოდი, რომელიც. 402 00:18:41,430 --> 00:18:43,880 მოდით დავბრუნდებით როდესაც მივიღებთ კოდირების, და მოდით კოდი, რომელიც. 403 00:18:43,880 --> 00:18:46,000 და თუ გვინდა, რომ გაერკვნენ პასუხი რომ, ასევე, შეგიძლიათ კოდი, რომელიც 404 00:18:46,000 --> 00:18:46,690 ამასობაში. 405 00:18:46,690 --> 00:18:49,100 მაგრამ ეს დიდი კითხვა. 406 00:18:49,100 --> 00:18:53,480 >> სტუდენტი: შესაძლებელია free რაღაც ძალიან მალე? 407 00:18:53,480 --> 00:18:58,530 ასე, რომ თქვენ მაინც სჭირდება თქვენი პროგრამა, და თქვენ გაათავისუფლა, რომ მეხსიერების სივრცე? 408 00:18:58,530 --> 00:18:59,200 >> JASON HIRSCHHORN: დიახ. 409 00:18:59,200 --> 00:19:03,020 ეს შესაძლებელია, თუ თავისუფალი რაღაც და მაშინ გამოიყენოს იგი კვლავ, თქვენ 410 00:19:03,020 --> 00:19:06,890 გადაეყარონ შეცდომა. 411 00:19:06,890 --> 00:19:10,810 მაგრამ ეს თქვენ, რადგან თქვენ გაათავისუფლა რაღაც და შემდეგ მას შემდეგ. 412 00:19:10,810 --> 00:19:13,940 ისე, რომ პროგრამისტი შეცდომა. 413 00:19:13,940 --> 00:19:14,780 მაგრამ დიახ. 414 00:19:14,780 --> 00:19:17,760 თქვენ შეეძლო დაეწერა, რომ. 415 00:19:17,760 --> 00:19:19,240 >> ნებისმიერი უფრო მეტი შეკითხვა - 416 00:19:19,240 --> 00:19:19,760 დიახ. 417 00:19:19,760 --> 00:19:22,820 >> სტუდენტი: ასე რომ, თუ თქვენ უნდა მხოლოდ გასათავისუფლებლად ეს ზოგადად ადრე 418 00:19:22,820 --> 00:19:25,490 პროგრამა დამთავრდა, ნიშნავს თუ პროგრამა დამთავრდა და თქვენ არ გაათავისუფლოს იგი, 419 00:19:25,490 --> 00:19:27,580 რომ მეხსიერების მაინც გამოყოფილი? 420 00:19:27,580 --> 00:19:31,330 >> JASON HIRSCHHORN: თუ თქვენი პროგრამა დამთავრდა და თქვენ დაგავიწყდებათ გასათავისუფლებლად რაღაც, მაშინ 421 00:19:31,330 --> 00:19:34,390 რომ მეხსიერების გამოყოფილი მთელი სიცოცხლის თქვენი პროგრამა. 422 00:19:34,390 --> 00:19:37,670 როდესაც თქვენი პროგრამის ხურავს მთლიანად, რომ მეხსიერება არ აპირებს 423 00:19:37,670 --> 00:19:39,490 იქ სამუდამოდ. 424 00:19:39,490 --> 00:19:42,080 კომპიუტერი არის ჭკვიანი საკმარისი ვიცი რომ როდესაც პროგრამა იხურება, მას 425 00:19:42,080 --> 00:19:46,440 უნდა მოისპოს ყველა მეხსიერება, ასოცირდება, რომ პროგრამა. 426 00:19:46,440 --> 00:19:51,240 >> თუმცა, არსებობს იარაღები შეგიძლიათ აწარმოებს on პროგრამა აღმოაჩინოს, თუ, როდესაც 427 00:19:51,240 --> 00:19:54,720 პროგრამის დასრულების შემდეგ, თქვენ დაავიწყდა გასათავისუფლებლად ზოგიერთი მეხსიერებაში. 428 00:19:54,720 --> 00:19:57,960 და თქვენი მომავალი პრობლემა კომპლექტი, სადაც თქვენ უნდა გამოყენებით malloc და გამოყენებით 429 00:19:57,960 --> 00:20:02,610 პოინტერები, თქვენ გაშვებული ამ პროგრამა თქვენს პროგრამაში თუ, 430 00:20:02,610 --> 00:20:06,530 როდესაც მთავარ ანაზღაურება, თქვენ გარკვეული რამ, რაც დარჩა unfreed. 431 00:20:06,530 --> 00:20:09,130 >> ასე რომ, ისინი არ აპირებენ დარჩენას malloced forever თქვენს კომპიუტერში. 432 00:20:09,130 --> 00:20:11,720 ეს იქნება wasteful, რადგან ძალიან სწრაფად, კომპიუტერი 433 00:20:11,720 --> 00:20:12,960 რომ ამოიწურა მეხსიერება. 434 00:20:12,960 --> 00:20:16,450 მაგრამ თუ გაუშვით ბოლომდე თქვენი პროგრამა და ისინი არ გათავისუფლდებიან და თქვენი 435 00:20:16,450 --> 00:20:20,260 პროგრამა ითიშება, რომ კვლავ პრობლემად რომ ეს ინსტრუმენტი დაგეხმარებათ მიმართოს. 436 00:20:20,260 --> 00:20:21,520 >> სტუდენტი: ის არის, რომ Valgrind? 437 00:20:21,520 --> 00:20:22,910 >> JASON HIRSCHHORN: ეს მოუწოდა Valgrind. 438 00:20:22,910 --> 00:20:23,520 და თქვენ - 439 00:20:23,520 --> 00:20:25,780 >> სტუდენტი: მაგრამ ჩვენ არ უნდა იცოდეს, რომ ინტელექტუალური, თუმცა? 440 00:20:25,780 --> 00:20:27,600 ვგულისხმობ, ის ისაუბრა ცოტა ლექცია. 441 00:20:27,600 --> 00:20:33,600 >> JASON HIRSCHHORN: So Valgrind არის სახელი, რომ ინსტრუმენტი. 442 00:20:33,600 --> 00:20:37,180 იცის, თუ რას აკეთებს არის საკმარისი ვიქტორინა. 443 00:20:37,180 --> 00:20:40,200 მაგრამ თქვენ არ გამოიყენება ამაზე თქვენი პრობლემა კომპლექტი იმიტომ, რომ ჩვენ არ ჰქონდა 444 00:20:40,200 --> 00:20:43,520 პრობლემა კომპლექტი, რომელიც ღიად რიგდება ერთად malloc ან თქვენ იყენებთ malloc. 445 00:20:43,520 --> 00:20:45,330 ასე რომ თქვენ არ გამოიყენება Valgrind არავის გაუკეთებია. 446 00:20:45,330 --> 00:20:47,760 მაგრამ თქვენ გამოიყენოს იგი ადრე ვიდრე მოგვიანებით. 447 00:20:47,760 --> 00:20:48,710 >> სტუდენტური შეგიძლიათ ვიმეორებ რა Valgrind არის? 448 00:20:48,710 --> 00:20:49,190 >> JASON HIRSCHHORN: უკაცრავად? 449 00:20:49,190 --> 00:20:51,240 >> სტუდენტური შეგიძლიათ გავიმეორო მიზნით Valgring არის? 450 00:20:51,240 --> 00:20:53,100 >> JASON HIRSCHHORN: Valgrind არის სახელი - 451 00:20:53,100 --> 00:20:59,890 მოსწონს GDB გეხმარებათ გამართვის თქვენი პროგრამა, Valgrind გეხმარებათ გაერკვნენ, თუ 452 00:20:59,890 --> 00:21:03,210 რამ არ იქნა გათავისუფლებული როდესაც თქვენი პროგრამის იხურება. 453 00:21:03,210 --> 00:21:05,110 ასე რომ თქვენ აწარმოებს თქვენი პროგრამა. 454 00:21:05,110 --> 00:21:09,230 და თქვენი პროგრამის გასასვლელების, და ეს ვიტყვი თქვენი პროგრამის მოუწოდა malloc ამ ბევრი 455 00:21:09,230 --> 00:21:13,670 ჯერ ამდენი ბაიტი, და თქვენ მხოლოდ მოუწოდა free ეს ბევრჯერ. 456 00:21:13,670 --> 00:21:16,520 და ასე რომ თქვენ დაუტოვებიათ ამ ბევრი bytes გარეშე გაათავისუფლეს. 457 00:21:16,520 --> 00:21:18,050 ან იგი ყველაფერს ამბობენ თქვენ გათავისუფლდა ყველაფერი. 458 00:21:18,050 --> 00:21:19,070 კარგად იმუშავა. 459 00:21:19,070 --> 00:21:19,480 >> სტუდენტი: OK. 460 00:21:19,480 --> 00:21:21,060 და ეს ე.წ. Valgring? 461 00:21:21,060 --> 00:21:24,940 >> JASON HIRSCHHORN: V-A-L-G-R-I-N-D. 462 00:21:24,940 --> 00:21:25,970 >> სტუდენტი: შეკითხვა პოინტერები. 463 00:21:25,970 --> 00:21:30,080 ასე რომ ვთქვათ, თქვენ არ n ვარსკვლავი x უდრის რაღაც. 464 00:21:30,080 --> 00:21:33,330 რომ შეადგენს, რაც თქვენ აყენებს არსებობს, არის ის, რომ რა ხდება დააყენა შიგნით 465 00:21:33,330 --> 00:21:36,120 რა x მიუთითებს, ან კურსორი of x? 466 00:21:36,120 --> 00:21:37,690 >> JASON HIRSCHHORN: შეგიძლიათ ვიმეორებ კითხვას? 467 00:21:37,690 --> 00:21:39,340 შეგვიძლია, ხოლო თქვენ ამბობთ ამას? 468 00:21:39,340 --> 00:21:42,710 >> სტუდენტი: In ვიქტორინა, ფაქტობრივად, ერთი თქვენ გამოგვიგზავნეს, თითქოს, char 469 00:21:42,710 --> 00:21:46,520 star სიმართლე შეადგენს CS50 კლდეები, არა? 470 00:21:46,520 --> 00:21:52,190 ასე რომ, ნიშნავს, რომ CS50 კლდეები არის ის, რაც სიმართლე მიუთითებს? 471 00:21:52,190 --> 00:21:55,810 >> JASON HIRSCHHORN: ასე რომ თქვენ საუბარი დაახლოებით char ვარსკვლავი სიმებიანი, თუ როგორ 472 00:21:55,810 --> 00:21:56,460 რომელიც მუშაობს? 473 00:21:56,460 --> 00:21:56,890 ჰო. 474 00:21:56,890 --> 00:21:57,700 OK. 475 00:21:57,700 --> 00:21:59,140 მოდით დავხატოთ ეს მეტი აქ. 476 00:21:59,140 --> 00:22:07,100 >> [SIDE მიმოწერა] 477 00:22:07,100 --> 00:22:11,130 >> JASON HIRSCHHORN: ასე რომ, ამ ცვლადის იქნება ტიპის char ვარსკვლავი. 478 00:22:11,130 --> 00:22:14,580 როგორ დიდი არის ცვლადი ტიპი char ვარსკვლავი? 479 00:22:14,580 --> 00:22:15,510 რამდენი ბაიტი? 480 00:22:15,510 --> 00:22:16,450 >> სტუდენტური ოთხი. 481 00:22:16,450 --> 00:22:18,210 >> JASON HIRSCHHORN: ეს არის ოთხი bytes. 482 00:22:18,210 --> 00:22:21,420 რამდენი უფლებების ცვლადი ტიპის int ვარსკვლავი? 483 00:22:21,420 --> 00:22:22,210 >> სტუდენტური ოთხი. 484 00:22:22,210 --> 00:22:24,910 >> JASON HIRSCHHORN: ოთხი bytes. 485 00:22:24,910 --> 00:22:28,280 იმ შემთხვევაში, თუ ეს მაჩვენებელი, მაშინ ის ყოველთვის ოთხი ბაიტი, რადგან მითითებას, მათი 486 00:22:28,280 --> 00:22:30,070 ღირებულება მეხსიერების მისამართზე. 487 00:22:30,070 --> 00:22:35,160 და მეხსიერების მისამართები CS50 ელექტრო ოთხი ბაიტი ხანგრძლივი. 488 00:22:35,160 --> 00:22:42,900 ასე რომ, როდესაც ჩვენ მოვუწოდებთ GetString, ან როდესაც ჩვენ ვთქვათ, stringname შეადგენს, ხოლო შემდეგ 489 00:22:42,900 --> 00:22:46,140 ორმაგი შეთავაზებები დააყენა სიმებიანი, ჩვენ აყენებს - 490 00:22:46,140 --> 00:22:46,920 კარგად, რომ ცოტა განსხვავებული. 491 00:22:46,920 --> 00:22:48,630 ჩვენ ყველაფერს გავაკეთებთ, GetString, როგორც მაგალითად. 492 00:22:48,630 --> 00:22:52,150 ან char ვარსკვლავი რაღაც შეადგენს სიმებიანი. 493 00:22:52,150 --> 00:22:54,360 უკაცრავად, მომეცი მაგალითად რომ წაიკითხოთ? 494 00:22:54,360 --> 00:22:57,590 >> სტუდენტი: char ვარსკვლავი სიმართლე შეადგენს "CS50 კლდეები" ორმაგ ბრჭყალებში. 495 00:22:57,590 --> 00:23:02,260 >> JASON HIRSCHHORN: ასე რომ, ეს ვარსკვლავი, ამ ჩვენ მოვუწოდებთ ამ ცვლადი x ჩვენი 496 00:23:02,260 --> 00:23:04,060 generic მიზნებისათვის. 497 00:23:04,060 --> 00:23:05,970 ჩვენ შევქმენით ცვლადში x. 498 00:23:05,970 --> 00:23:07,610 ეს ტიპი char ვარსკვლავი. 499 00:23:07,610 --> 00:23:10,950 ეს არის მაჩვენებელი სერია სიმბოლო. 500 00:23:10,950 --> 00:23:12,200 ასე რომ, აქ ქვემოთ - 501 00:23:12,200 --> 00:23:23,710 502 00:23:23,710 --> 00:23:25,890 >> ასე რომ ეს არის, თუ როგორ ეს იქნება მუშაობა მეხსიერებაში. 503 00:23:25,890 --> 00:23:27,410 ამ შემთხვევაში შესანახად მეხსიერებაში მისამართზე. 504 00:23:27,410 --> 00:23:31,770 ეს იქნებოდა შესანახად მეხსიერებაში მისამართი პირველი პერსონაჟი მასივი. 505 00:23:31,770 --> 00:23:33,830 და მაშინ, როდესაც თქვენ მოჰყვა კურსორი, თქვენ უნდა 506 00:23:33,830 --> 00:23:35,200 მისაღებად პირველი ხასიათი. 507 00:23:35,200 --> 00:23:38,780 >> და თუ თქვენ კითხულობთ ამ რამ, როგორიცაა სიმებიანი, თქვენს კომპიუტერში არ არის ჭკვიანი 508 00:23:38,780 --> 00:23:42,930 საკმარისი ვიცი, წავიკითხე ამ მთელი რამ სანამ იგი იღებს, რათა საწინააღმდეგოდ 0. 509 00:23:42,930 --> 00:23:45,530 მაგრამ თუ თქვენ კითხულობს ეს ხასიათი at დრო, ასე რომ თქვენ iterating მეშვეობით 510 00:23:45,530 --> 00:23:49,910 ამ სტრიქონს, მაშინ თქვენ უბრალოდ წაიკითხა ხასიათი დროს სანამ თქვენ მიიღებთ 511 00:23:49,910 --> 00:23:50,850 backslash 0. 512 00:23:50,850 --> 00:23:52,335 რომელიც შესაძლოა არ უპასუხოს თქვენს კითხვა, თუმცა. 513 00:23:52,335 --> 00:23:55,610 >> სტუდენტი: ჰო, მაგრამ თქვენ არა გაქვთ malloced რომ სივრცე 514 00:23:55,610 --> 00:23:58,400 ჯერ რომ მომცეთ. 515 00:23:58,400 --> 00:24:02,510 >> JASON HIRSCHHORN: ასე რომ, მე არ ვარ საკმაოდ დარწმუნებული ვარ, ზუსტად რა თქვენ ეძებს, 516 00:24:02,510 --> 00:24:03,640 იმიტომ, რომ მე არ მიიღოს, რომ ვიქტორინა. 517 00:24:03,640 --> 00:24:06,370 ეს უნდა იყოს სასარგებლო რესურსი სხვა TF. 518 00:24:06,370 --> 00:24:11,380 თუ თქვენ შექმნით სიმებიანი შესახებ დააწყობს ან როგორც ადგილობრივი ცვლადი, იგი ყველაფერს 519 00:24:11,380 --> 00:24:16,920 მხოლოდ მასივი ბრალდებით, ვიდრე ზოგადად char ვარსკვლავი მიუთითებს 520 00:24:16,920 --> 00:24:18,600 სხვა სიმებიანი. 521 00:24:18,600 --> 00:24:20,550 მაგრამ მე არ ვიცი. 522 00:24:20,550 --> 00:24:25,065 ეს შეიძლება იყოს მომცეთ სხვა string დასტის ისევე. 523 00:24:25,065 --> 00:24:27,240 ჰო. 524 00:24:27,240 --> 00:24:31,116 >> სტუდენტი: მე ვიცი, რომ თქვენ უნდა გამოყოს მეხსიერება თუ კურსორი არის 525 00:24:31,116 --> 00:24:33,360 მიღების განაცხადა შიგნით სხვა ფუნქცია. 526 00:24:33,360 --> 00:24:36,740 თქვენ უნდა გავაკეთოთ იგივე, თუ ის ცხადდება შიგნით ძირითადი, 527 00:24:36,740 --> 00:24:39,570 თქვენ იყენებთ შიგნით ძირითადი? 528 00:24:39,570 --> 00:24:43,590 >> JASON HIRSCHHORN: ასე რომ, დიახ. 529 00:24:43,590 --> 00:24:46,670 თქვენ შეგიძლიათ გამოაცხადოთ მომცეთ რაიმე მეხსიერების მისამართი მეხსიერებაში. 530 00:24:46,670 --> 00:24:51,440 ეს შეიძლება იყოს მეხსიერების მისამართი ადგილობრივი ცვლადი, თუმცა ხშირად, 531 00:24:51,440 --> 00:24:55,760 ხალხი არ განაცხადოს მეხსიერების მისამართები ადგილობრივი ცვლადები, რადგან ისინი დადიან 532 00:24:55,760 --> 00:24:59,890 მოშორებით ერთხელ რომ ფუნქცია დააბრუნებს, რომელიც ამიტომ ზოგადად malloc რამ. 533 00:24:59,890 --> 00:25:04,630 მაგრამ დიახ, თქვენ შეიძლება განაცხადოს მაჩვენებელი სხვა ადგილობრივი ცვლადი. 534 00:25:04,630 --> 00:25:06,360 უბრალოდ საერთოდ არ კეთდება. 535 00:25:06,360 --> 00:25:09,480 მაგრამ შემიძლია შევხედოთ, რომ კონკრეტული რამ შემდეგ კლასი. 536 00:25:09,480 --> 00:25:10,650 ჰო. 537 00:25:10,650 --> 00:25:12,350 >> სტუდენტი: მე ვფიქრობ, რომ ეს არის ერთგვარი რა სთხოვა. 538 00:25:12,350 --> 00:25:16,930 ეს არ ჩანს უცნაური უნდა ინიციალიზებისას მაჩვენებელი არ არის, როგორც 539 00:25:16,930 --> 00:25:20,760 მისამართი, მაგრამ რაც როგორც ჩანს, ღირებულება. 540 00:25:20,760 --> 00:25:25,970 როგორც ჩანს, CS50 არის რა შიგნით რაც მიმდინარეობს აღნიშნა და 541 00:25:25,970 --> 00:25:28,820 არ ფაქტობრივი მისამართი, უფლება? 542 00:25:28,820 --> 00:25:30,520 >> JASON HIRSCHHORN: ასე რომ, არ არის, თუმცა. 543 00:25:30,520 --> 00:25:32,470 ეს არ არის, რა ხდება. 544 00:25:32,470 --> 00:25:35,910 როდესაც თქვენ გამოაცხადოს char ვარსკვლავი, ეს მეხსიერების მისამართზე. 545 00:25:35,910 --> 00:25:38,860 პოინტერები ყველა მეხსიერების მისამართები მიუთითებს რაღაც. 546 00:25:38,860 --> 00:25:41,480 რომ რაღაც შეიძლება იყოს დასტის, მაგრამ თითქმის ყოველთვის არის 547 00:25:41,480 --> 00:25:43,440 ბევრი გზა ვნახავთ გამოიყენება. 548 00:25:43,440 --> 00:25:46,860 549 00:25:46,860 --> 00:25:53,500 მაგრამ stringname ტოლია ორმაგი გაცემა "GetString," ჩვენ ვხედავთ, რომ ჩვენ 550 00:25:53,500 --> 00:25:55,010 შეგიძლიათ გაეცნონ, რომ და კოდი, რომელიც. 551 00:25:55,010 --> 00:26:01,190 GetString string არ არის შენახული რომ ცვლადი, ან რასაც სიმებიანი 552 00:26:01,190 --> 00:26:04,580 სახელი არ არის შენახული, რომ ცვლადი, იმიტომ, რომ ის, თუ როგორ 553 00:26:04,580 --> 00:26:06,070 პოინტერები მუშაობა. 554 00:26:06,070 --> 00:26:06,770 ამჯამად რომ აზრი? 555 00:26:06,770 --> 00:26:07,170 >> სტუდენტი: Yeah. 556 00:26:07,170 --> 00:26:08,570 >> JASON HIRSCHHORN: OK. 557 00:26:08,570 --> 00:26:11,690 იმედია, რომ არ იყო გაუგებარია ვინმეს. 558 00:26:11,690 --> 00:26:15,732 მაგრამ თუ ეს იყო, ჩვენ შეგვიძლია შევხედოთ მას ერთხელ ცოტა, იმიტომ, რომ ჩვენ რეალურად აპირებს 559 00:26:15,732 --> 00:26:19,240 კოდექსში, რომ რაღაც იქნება იმედია მუშაობა სტრიქონები და დაგეხმარებათ გრძნობენ 560 00:26:19,240 --> 00:26:22,170 უფრო კომფორტულად მათ. 561 00:26:22,170 --> 00:26:24,869 >> ნებისმიერი სხვა სახის კითხვებით დაკავშირებული ამ თემები და სხვა საკითხები, რომლებიც 562 00:26:24,869 --> 00:26:26,119 მე დააყენა back up? 563 00:26:26,119 --> 00:26:32,280 564 00:26:32,280 --> 00:26:34,840 და - 565 00:26:34,840 --> 00:26:36,310 ახლა. 566 00:26:36,310 --> 00:26:37,630 დიახ, Alden. 567 00:26:37,630 --> 00:26:39,860 >> ALDEN: ასე რომ ეს სრულიად unrelated, მაგრამ შეგვიძლია უბრალოდ მეტი 568 00:26:39,860 --> 00:26:42,760 მართლაც სწრაფად ის, რაც ჩვენ უნდა ვიცოდეთ სხვაობა 32 და 569 00:26:42,760 --> 00:26:46,345 64-bit მანქანა? 570 00:26:46,345 --> 00:26:47,740 >> JASON HIRSCHHORN: დიახ. 571 00:26:47,740 --> 00:26:52,111 ასე რომ, 32 ბიტი არის რამდენი ბაიტი? 572 00:26:52,111 --> 00:26:53,060 >> ALDEN: ეს არის ოთხი bytes. 573 00:26:53,060 --> 00:26:54,360 >> JASON HIRSCHHORN: ეს არის ოთხი bytes. 574 00:26:54,360 --> 00:26:58,420 და 64 ბიტი რამდენი ბაიტი? 575 00:26:58,420 --> 00:26:59,112 >> სტუდენტი: რვა. 576 00:26:59,112 --> 00:27:00,610 >> JASON HIRSCHHORN: რვა bytes. 577 00:27:00,610 --> 00:27:03,980 ასე რომ კიდევ ერთხელ, რვა ბიტი არის ერთი ბაიტი. 578 00:27:03,980 --> 00:27:08,340 თქვენი CS50 ელექტრო მოწყობილობების არის 32-bit მანქანა. 579 00:27:08,340 --> 00:27:13,650 ასე რომ მეხსიერების მისამართები ოთხი ბაიტი ხანგრძლივი. 580 00:27:13,650 --> 00:27:17,460 არსებობს 2 დან 32 მეხსიერების მისამართები. 581 00:27:17,460 --> 00:27:21,310 0 2 32 მინუს 1. 582 00:27:21,310 --> 00:27:27,630 და მე არ ვარ დადებითი, მაგრამ ეს ალბათ ფარგლებს რაც თქვენ გჭირდებათ რომ 583 00:27:27,630 --> 00:27:35,230 ვიცი, 32-bit მანქანა, რომ მეხსიერების მისამართები, კიდევ ერთხელ, ოთხი ბაიტი ხანგრძლივი, 584 00:27:35,230 --> 00:27:39,620 და რომ მაქსიმალური თანხა მეხსიერების მისამართები. 585 00:27:39,620 --> 00:27:41,680 >> გარდა ამისა, მონაცემთა ტიპები - 586 00:27:41,680 --> 00:27:45,020 ეს შეიძლება იყოს რაღაც კარგად რომ აღსანიშნავია. 587 00:27:45,020 --> 00:27:49,610 ზომა მონაცემები ტიპის დამოკიდებულია მანქანა თქვენ მუშაობს. 588 00:27:49,610 --> 00:27:56,760 ასე რომ char, ერთი ხასიათი, თუ რამდენად ბევრი bytes ჩვენი CS50 ელექტრო? 589 00:27:56,760 --> 00:27:57,980 ერთი byte. 590 00:27:57,980 --> 00:28:02,310 და ეს არის რეალურად ერთი byte როგორც კარგად 64-bit მანქანა. 591 00:28:02,310 --> 00:28:05,920 >> და ყველაზე მონაცემთა ტიპები არიან იგივე ნომერი ბაიტი ორივე მანქანები. 592 00:28:05,920 --> 00:28:11,620 მაგრამ ზოგიერთი მონაცემთა ტიპები იქნება სხვადასხვა ორივე მანქანა. 593 00:28:11,620 --> 00:28:14,590 ისე, რომ იქნება პოტენციურად ერთადერთი, რაც თქვენ უნდა იცოდეთ. 594 00:28:14,590 --> 00:28:16,710 >> მაგრამ, რომ, ვფიქრობ, არის მიღმა - 595 00:28:16,710 --> 00:28:20,990 მე თითქმის დადებითი, თუ ვიხსენებთ ძველი ტესტები, ის ამბობს, დავუშვათ 596 00:28:20,990 --> 00:28:24,090 კოდირების პრობლემები თქვენ იყენებთ 32-bit მანქანა. 597 00:28:24,090 --> 00:28:26,620 598 00:28:26,620 --> 00:28:30,620 მაგრამ არსებობს, წავიდეთ ერთად, რომ თუ თქვენ დაინტერესებული, არსებობს 599 00:28:30,620 --> 00:28:35,920 მონაცემთა ტიპები, რომლებიც იმავე ზომა ყველა მანქანები. 600 00:28:35,920 --> 00:28:42,670 >> თუ ვნახე რაღაც uint32_t, თქვენ შეიძლება იყოს ან 601 00:28:42,670 --> 00:28:43,260 არ მინახავს, ​​რომ. 602 00:28:43,260 --> 00:28:44,290 ეს მონაცემები ტიპის. 603 00:28:44,290 --> 00:28:47,570 რომ ამბობს, იყოს 32 ბიტი არ აქვს მნიშვნელობა, რა მანქანა ეს არის. 604 00:28:47,570 --> 00:28:50,350 ასე რომ, როდესაც ადამიანი წერილობით პორტატული კოდი, ალბათ არ იქნება გამოყენებული ints. 605 00:28:50,350 --> 00:28:53,260 ისინი ნაცვლად გამოიყენოთ ეს სხვა მონაცემები სახის, რომ მათ იციან იქნება იგივე 606 00:28:53,260 --> 00:28:54,780 ზომა თითოეული მანქანა. 607 00:28:54,780 --> 00:28:58,080 608 00:28:58,080 --> 00:28:58,250 Madhu. 609 00:28:58,250 --> 00:29:00,150 >> Madhu: მე მქონდა შეკითხვა compilation პროცესში. 610 00:29:00,150 --> 00:29:04,110 ასე რომ, თუ თქვენ წერა პროგრამა, რომელიც იყენებს ბიბლიოთეკა მოსწონს CS50 ან რამე 611 00:29:04,110 --> 00:29:06,840 მოსწონს, რომ მე ვიცი, რომ ბიბლიოთეკა აქვს, რაღაც მომენტში, უნდა 612 00:29:06,840 --> 00:29:08,590 შედგენილი და უკავშირდება შემოსული 613 00:29:08,590 --> 00:29:13,380 მაგრამ რამდენად, რომ ხდება შედგენა თქვენი პროგრამა? 614 00:29:13,380 --> 00:29:15,880 რა ნაწილი რომ ბიბლიოთეკა პროცესი ხდება, როდესაც თქვენ 615 00:29:15,880 --> 00:29:18,560 შედგენა თქვენი პროგრამა? 616 00:29:18,560 --> 00:29:24,020 >> JASON HIRSCHHORN: მოდით წავიდეთ მეტი ზოგადად ნაბიჯები ამ პროცესში. 617 00:29:24,020 --> 00:29:26,280 თქვენ დაწერეთ თქვენი. C ფაილი. 618 00:29:26,280 --> 00:29:33,530 თქვენს. გ ფაილი, თქვენ # მოიცავს თქვენი header ბიბლიოთეკების, მაგალითად, cs50.h. 619 00:29:33,530 --> 00:29:39,480 რას მკვეთრი არის ონლაინ გააკეთოთ, რომ თქვენი პროგრამა? 620 00:29:39,480 --> 00:29:40,525 Akchar. 621 00:29:40,525 --> 00:29:43,350 >> AKCHAR: იგი დასძენს პროტოტიპები ფუნქციების header 622 00:29:43,350 --> 00:29:45,120 ფაილი ბიბლიოთეკები. 623 00:29:45,120 --> 00:29:45,600 >> JASON HIRSCHHORN: ზუსტად. 624 00:29:45,600 --> 00:29:49,870 იგი დასძენს იმ ფუნქციის პროტოტიპები თქვენს კოდი. 625 00:29:49,870 --> 00:29:55,230 ასე რომ, როდესაც თქვენი კოდი იქმნება ადრეულ სტადიაზე, შემდგენელი იცის 626 00:29:55,230 --> 00:29:59,250 რომ ამ ფუნქციების რეალურად არსებობს, და რომ სადღაც მათ უკვე განსაზღვრულია. 627 00:29:59,250 --> 00:30:02,460 . H ფაილი არ შეიცავს განსაზღვრებები ამ ფუნქციების ან როგორ 628 00:30:02,460 --> 00:30:03,950 ისინი რეალურად მუშაობს. 629 00:30:03,950 --> 00:30:07,960 Cs50.h მხოლოდ მოიცავს რასაც ამბობს GetString არის რეალური რამ, 630 00:30:07,960 --> 00:30:09,270 შეიძლება მოხდეს. 631 00:30:09,270 --> 00:30:14,240 და standardio.h ამბობს printf არის რეალური, რაც შეიძლება მოხდეს. 632 00:30:14,240 --> 00:30:23,190 >> ასე რომ თქვენი c ენის ამ. Header ფაილის იღებს გადაიქცა რაღაც 633 00:30:23,190 --> 00:30:27,750 მანქანით წაკითხვადი კოდი, რომელიც საბოლოოდ იღებს გადაიქცა ორობითი 634 00:30:27,750 --> 00:30:30,030 კოდი, 0 და 1 ს. 635 00:30:30,030 --> 00:30:33,590 და ეს კოდი, რომელიც საბოლოოდ იღებს დასაჯეს. 636 00:30:33,590 --> 00:30:38,550 -L cs50 ონლაინ - მაგალითად, როდესაც თქვენ წერილობით Clang - 637 00:30:38,550 --> 00:30:41,830 და მაშინ მოიცავს-l CS50, თქვენ ჩაწერეთ რომ სისტემაში 638 00:30:41,830 --> 00:30:42,180 და ხედავთ, რომ. 639 00:30:42,180 --> 00:30:43,890 როდესაც წერთ, რათა, თქვენ ვხედავთ, რომ გამოდიან აქ. 640 00:30:43,890 --> 00:30:47,740 და ვნახავთ, რომ მეორე, როდესაც ჩვენ კოდექსით ან მოგვიანებით, როდესაც ჩვენ კოდი. 641 00:30:47,740 --> 00:30:50,390 >> მაგრამ, რომ-l cs50 ხაზი აკეთებს ცოტა განსხვავებულია, ვიდრე 642 00:30:50,390 --> 00:30:52,440 # მოიცავს cs50.h. 643 00:30:52,440 --> 00:30:56,300 რას-l cs50 ონლაინ გავაკეთოთ? 644 00:30:56,300 --> 00:30:56,820 Avi? 645 00:30:56,820 --> 00:31:00,310 >> AVI: მე მინდა ვთქვა, რომ ეს ბმულები ბიბლიოთეკის ფუნქცია 646 00:31:00,310 --> 00:31:02,710 მოვუწოდებთ, როგორიცაა. o ფაილი. 647 00:31:02,710 --> 00:31:08,200 >> JASON HIRSCHHORN: ასე რომ ძალიან ახლოს, თუ არ მიხვდებიან, რაშია-on. 648 00:31:08,200 --> 00:31:16,220 -L cs50 იღებს ორობითი ფაილი და უერთდება ეს თქვენი ორობითი ფაილი. 649 00:31:16,220 --> 00:31:21,410 ასე რომ cs50.h, არ არსებობს წერტილი გარდამტეხი cs50.h ეხლა C ენის ორობითი ყველა 650 00:31:21,410 --> 00:31:23,130 ერთ დროს ის გამოიყენება. 651 00:31:23,130 --> 00:31:26,650 ეს იქნება სულელური, იმიტომ, რომ რომ დაგვრჩა ბევრი დრო. 652 00:31:26,650 --> 00:31:30,420 ასე რომ, უკვე შედგენილია და გადაიქცა შესრულებადი. 653 00:31:30,420 --> 00:31:35,430 და ახლა იგი აპირებს შეუერთდა თქვენი ფაილი დასასრულს. 654 00:31:35,430 --> 00:31:38,370 ასე რომ იმ 1 და 0 ს ვაპირებთ შერწყმა თქვენი პირობა 655 00:31:38,370 --> 00:31:39,150 და 0 ს დასასრულს. 656 00:31:39,150 --> 00:31:43,670 ახლა თქვენ რეალურად აქვს ფაქტობრივი 1 და 0 ის, რომ განისაზღვროს, თუ როგორ GetString, 657 00:31:43,670 --> 00:31:47,890 მაგალითად, სამუშაოების, ან როგორ printf, მაგალითად, მუშაობს. 658 00:31:47,890 --> 00:31:52,750 >> და მეტი ინფორმაციით, არსებობს მოკლე compilers რომ Nate იძლევა, რომ 659 00:31:52,750 --> 00:31:55,410 თქვენ უნდა შეამოწმეთ რომ მიდის მეშვეობით ამ ნაბიჯებს. 660 00:31:55,410 --> 00:31:56,050 მაგრამ - 661 00:31:56,050 --> 00:31:56,560 დიახ. 662 00:31:56,560 --> 00:32:01,700 >> სტუდენტი: ისინი ყოველთვის. O ფაილი როდესაც ისინი ბიბლიოთეკაში ფორმა, 663 00:32:01,700 --> 00:32:06,764 მზად უნდა გაერთიანდა, უკავშირდება - როგორც ისინი ორობითი კოდი? 664 00:32:06,764 --> 00:32:07,600 >> JASON HIRSCHHORN: OK. 665 00:32:07,600 --> 00:32:08,420 რა - 666 00:32:08,420 --> 00:32:11,780 >> სტუდენტი: ის არის, რომ ყოველთვის საქმე ბიბლიოთეკების, როდესაც თქვენ უკავშირებენ მათ? 667 00:32:11,780 --> 00:32:12,500 >> JASON HIRSCHHORN: დიახ. 668 00:32:12,500 --> 00:32:17,300 ასე რომ არსებობს. S ფაილი, რომელიც იქნება მანქანა კოდი, რომელიც ასევე იქნება 669 00:32:17,300 --> 00:32:17,975 cryptic თქვენ. 670 00:32:17,975 --> 00:32:19,410 თქვენ არ გჭირდებათ ფიქრი იმ. 671 00:32:19,410 --> 00:32:24,930 მაგრამ ზოგადად, yeah, ისინი ყველაფერს იყოს. o ფაილი მზად ვართ წავიდეთ. 672 00:32:24,930 --> 00:32:27,170 >> სტუდენტი: ასე რომ, როდესაც თქვენ გემი ბიბლიოთეკა, თქვენ მხოლოდ მოვახდენთ 673 00:32:27,170 --> 00:32:28,880 . h და. o? 674 00:32:28,880 --> 00:32:32,210 თქვენ არ დაძრულიყო. გ ან. S. 675 00:32:32,210 --> 00:32:33,070 >> JASON HIRSCHHORN: ასე - 676 00:32:33,070 --> 00:32:36,260 და ეს არის ამ მოკლე, ასევე, თუ ამ ინფორმაციას, როგორც ჩანს, მოდის 677 00:32:36,260 --> 00:32:36,700 ცოტა სწრაფად. 678 00:32:36,700 --> 00:32:39,870 მაგრამ მოკლე compilers საუბარი ასევე. 679 00:32:39,870 --> 00:32:43,290 როცა ხომალდი ბიბლიოთეკა, თუ მოვახდენთ . სთ, header ფაილი, იმ 680 00:32:43,290 --> 00:32:46,290 ფუნქცია პროტოტიპები, და 1 და 0 ს, რომ ყველა თქვენ უნდა მისცეს. 681 00:32:46,290 --> 00:32:50,640 თქვენ არ უნდა მივცეთ, როგორ ფუნქცია მუშაობს,. c ფაილი. 682 00:32:50,640 --> 00:32:56,360 იმის გამო, რომ წერტილი აბსტრაქცია, ან აღვნიშნო APIs, საქმე ამ SPL, 683 00:32:56,360 --> 00:32:59,650 სტენფორდის პორტატული ბიბლიოთეკა, ის თქვენ არ ინერვიულოთ შესახებ, თუ როგორ new 684 00:32:59,650 --> 00:33:04,220 GRect მუშაობს, თუ როგორ გადავიდეს სამუშაოები, ან როგორ დაამატოთ სამუშაოები. 685 00:33:04,220 --> 00:33:06,520 ყველა თქვენ უნდა იცოდეთ არის ის, რომ add არის ფუნქცია, რომელიც შეგიძლიათ 686 00:33:06,520 --> 00:33:08,880 გამოყენება, და იგი აკეთებს ამას. 687 00:33:08,880 --> 00:33:12,760 ასე, რომ თქვენ ნამდვილად არ უნდა იცოდეს, როგორ ის დაწერილი C. თქვენ უბრალოდ უნდა 688 00:33:12,760 --> 00:33:15,460 ვიცი, აქ ფუნქციები, რაც მათ გავაკეთოთ, და აქ არის 1 და 0 ს 689 00:33:15,460 --> 00:33:18,870 როდესაც თქვენ ნამდვილად გსურთ მათი გამოყენება. 690 00:33:18,870 --> 00:33:19,530 >> ზემოთ. 691 00:33:19,530 --> 00:33:26,980 ნებისმიერი უფრო მეტი შეკითხვა compilers ან სხვა თემა ფორუმში? 692 00:33:26,980 --> 00:33:30,300 >> სტუდენტი: მე მაქვს კითხვა ახორციელებს რეკურსიული ფუნქციები. 693 00:33:30,300 --> 00:33:31,170 კითხვაზე, თუ უკან. 694 00:33:31,170 --> 00:33:33,030 მე მქონდა განცდა, რომ მოვიდოდა up. 695 00:33:33,030 --> 00:33:38,310 მოდით სწრაფად გავლა უკან კონკრეტული 696 00:33:38,310 --> 00:33:40,690 მაგალითად, factorial ფუნქცია. 697 00:33:40,690 --> 00:33:44,920 იმიტომ, რომ ეს არის მაგალითი, რომ ხშირად მოდის ან გამოიყენება 698 00:33:44,920 --> 00:33:46,170 საილუსტრაციოდ უკან. 699 00:33:46,170 --> 00:33:52,390 700 00:33:52,390 --> 00:33:56,410 >> ასე რომ, "4" წაკითხვის 4 factorial. 701 00:33:56,410 --> 00:33:59,120 და რას 4 factorial ნიშნავს? 702 00:33:59,120 --> 00:34:00,696 რას აკეთებთ? 703 00:34:00,696 --> 00:34:02,235 როგორ უნდა გამოვთვალოთ 4 factorial? 704 00:34:02,235 --> 00:34:05,250 705 00:34:05,250 --> 00:34:07,960 4 ჯერ 3 ჯერ 2 ჯერ 1. 706 00:34:07,960 --> 00:34:11,889 >> ასე რომ სხვა გზა დაწერა 4 factorial დაწერა ეს. 707 00:34:11,889 --> 00:34:16,780 708 00:34:16,780 --> 00:34:19,022 4 ჯერ 3 factorial. 709 00:34:19,022 --> 00:34:22,080 იმის გამო, რომ 3 factorial არის 3 ჯერ 2 ჯერ 1. 710 00:34:22,080 --> 00:34:27,580 ასე რომ 4 ჯერ 3 factorial 4 ჯერ 3 ჯერ 2 ჯერ 1. 711 00:34:27,580 --> 00:34:32,679 სწორედ ამიტომ factorial არის დიდი კანდიდატი უკან, რადგან ეს 712 00:34:32,679 --> 00:34:36,630 ნათელია, რომ არსებობს რაღაც, რაც ხდება მეტი და მეტი 713 00:34:36,630 --> 00:34:39,820 მცირე რაოდენობის რამ, სანამ თქვენ მიაღწიონ ბოლომდე. 714 00:34:39,820 --> 00:34:42,570 როდესაც თქვენ მივაღწიოთ 1, 1 factorial არის 1. 715 00:34:42,570 --> 00:34:43,719 თქვენ არ შეგიძლიათ გადასვლა ბევრად უფრო. 716 00:34:43,719 --> 00:34:47,219 0 factorial ასევე განისაზღვრება, როგორც 1. 717 00:34:47,219 --> 00:34:50,679 ასე რომ, როდესაც თქვენ მიიღებთ 1 ან 0, თქვენ დასასრულს, და შეგიძლიათ 718 00:34:50,679 --> 00:34:53,219 დაიწყოს ბრუნდება up. 719 00:34:53,219 --> 00:34:59,540 ასე რომ, თუ გვინდოდა დაწერა რეკურსიული ფუნქციის გამოთვლა factorial, 720 00:34:59,540 --> 00:35:02,170 ჩვენ ვაპირებთ დავწეროთ ზოგიერთი pseudocode, რომ ახლა. 721 00:35:02,170 --> 00:35:03,300 სანამ ჩვენ წერენ, რომ pseudocode - 722 00:35:03,300 --> 00:35:05,660 მე მივცემ თქვენ ბიჭები რამდენიმე წუთი წერენ ფსევდო კოდი ან უბრალოდ ვფიქრობ 723 00:35:05,660 --> 00:35:09,600 ამის შესახებ - არსებობს ორი რამ ყველა რეკურსიული ფუნქცია სჭირდება. 724 00:35:09,600 --> 00:35:12,530 რა არის ეს ორი რამ? 725 00:35:12,530 --> 00:35:13,220 >> JACK: მას მოვუწოდებთ თავად. 726 00:35:13,220 --> 00:35:13,680 >> JASON HIRSCHHORN: Noah? 727 00:35:13,680 --> 00:35:14,460 Oh, ჯეკ. 728 00:35:14,460 --> 00:35:15,100 წავიდეთ წინ. 729 00:35:15,100 --> 00:35:16,640 >> JACK: მას მოვუწოდებთ თავად. 730 00:35:16,640 --> 00:35:19,220 >> JASON HIRSCHHORN: So რეკურსიული ფუნქცია სჭირდება რეკურსიული ზარი, 731 00:35:19,220 --> 00:35:20,220 მოვუწოდებთ თავად. 732 00:35:20,220 --> 00:35:20,770 ეს ერთი. 733 00:35:20,770 --> 00:35:21,510 და რა სხვა რამ? 734 00:35:21,510 --> 00:35:22,250 >> JACK: A ბაზის შემთხვევაში. 735 00:35:22,250 --> 00:35:23,780 >> JASON HIRSCHHORN: A ბაზის შემთხვევაში. 736 00:35:23,780 --> 00:35:26,940 ბაზის შემთხვევაში ის არის, რომ აქ, როცა ჩვენ შეწყვიტოს. 737 00:35:26,940 --> 00:35:29,510 ასე რომ თქვენი ფუნქცია იღებს მოუწოდა. 738 00:35:29,510 --> 00:35:31,410 ბაზის შემთხვევაში მოდის პირველი. 739 00:35:31,410 --> 00:35:33,710 გსურთ ვიცით, თუ თქვენ დასასრულს. 740 00:35:33,710 --> 00:35:37,110 და თუ თქვენ არ დასასრულს, თქვენ რათა თქვენი რეკურსიული ზარი. 741 00:35:37,110 --> 00:35:39,880 და თქვენ გავლა ამ ფუნქციას ისევ, სანახავად ბაზის შემთხვევაში ერთხელ. 742 00:35:39,880 --> 00:35:42,575 თუ თქვენ არ ბოლოს, თქვენ სხვა რეკურსიული ზარი, 743 00:35:42,575 --> 00:35:44,130 et cetera, et cetera. 744 00:35:44,130 --> 00:35:47,110 >> სწორედ ამიტომ რეკურსიული ფუნქციების ყოველთვის გვჭირდება იმ ბაზის შემთხვევებში და იმ 745 00:35:47,110 --> 00:35:48,210 რეკურსიული მოუწოდებს. 746 00:35:48,210 --> 00:35:51,280 თუ თქვენ არ გაქვთ რეკურსიული ზარი, იგი არ უნდა იყოს რეკურსიული ფუნქცია. 747 00:35:51,280 --> 00:35:53,210 თუ თქვენ არ გაქვთ ბაზა შემთხვევაში, თქვენ წავიდოდა სამუდამოდ და 748 00:35:53,210 --> 00:35:54,780 არ იქნება დასასრული. 749 00:35:54,780 --> 00:35:57,870 და ბაზის შემთხვევაში ყოველთვის მოდის პირველი, იმიტომ, რომ თქვენ ყოველთვის გვინდა შევამოწმოთ 750 00:35:57,870 --> 00:36:00,420 თუ თქვენ დასასრულს პირველი. 751 00:36:00,420 --> 00:36:04,770 ასე რომ სანამ ჩვენ გავაკეთოთ ზოგიერთი pseudocode, რატომ არ მიიღოს წუთი ფიქრი 752 00:36:04,770 --> 00:36:09,360 როგორ რეკურსიული factorial ფუნქცია იქნება დაწერილი? 753 00:36:09,360 --> 00:36:23,340 754 00:36:23,340 --> 00:36:26,010 >> ასევე, როგორც ბევრი როგორც თქვენ აკეთებთ, წერის მას გარეთ ფურცელი არის 755 00:36:26,010 --> 00:36:27,960 თუ რას აპირებს გავაკეთოთ ვიქტორინა ხვალ. 756 00:36:27,960 --> 00:36:32,160 ასე რომ, ალბათ კარგი პრაქტიკა, რათა დარწმუნებული კოდი თქვენ წერა 757 00:36:32,160 --> 00:36:34,420 ქვემოთ ფურცელზე - 758 00:36:34,420 --> 00:36:35,160 ან თქვენ შეგიძლიათ ამის გაკეთება. 759 00:36:35,160 --> 00:36:36,710 თქვენ იცით, სადაც semicolons არიან. 760 00:36:36,710 --> 00:36:37,660 გახსოვთ სინტაქსი. 761 00:36:37,660 --> 00:36:40,400 იმიტომ, რომ თქვენ ვერ შეძლებთ აქვს შემდგენელი გითხრათ გააკეთა შეცდომა. 762 00:36:40,400 --> 00:37:02,356 763 00:37:02,356 --> 00:37:07,240 >> ასევე, ერთად იმ ხაზები, ხვალ, როცა თქვენ არ კოდირების პრობლემები, თუ თქვენ 764 00:37:07,240 --> 00:37:11,490 რომლებიც შევარდა დრო, ან თუ თქვენ ძალიან დაბნეული, თუ როგორ თქვენ უნდა 765 00:37:11,490 --> 00:37:16,030 დაწერა კონკრეტული რამ c, ეს რომ behoove გაძლევთ დაწეროთ ფსევდო კოდი 766 00:37:16,030 --> 00:37:18,160 ან ჩაწერის კომენტარები ისევე. 767 00:37:18,160 --> 00:37:21,940 იმიტომ, რომ იქ არასრული, კრედიტი ბევრი კითხვებს ვიქტორინა. 768 00:37:21,940 --> 00:37:24,840 ასე, რომ თქვენ შეიძლება შევარდა, ან თქვენ შეიძლება მხოლოდ იყოს დაბნეული. 769 00:37:24,840 --> 00:37:28,030 წერა კომენტარი ან ფსევდო კოდი ხშირად გზები, რომ თქვენ 770 00:37:28,030 --> 00:37:29,360 შეგიძლიათ მიიღოთ ნაწილობრივი საკრედიტო. 771 00:37:29,360 --> 00:37:31,440 >> ასე რომ არ დატოვოს რაღაც blank on ვიქტორინა. 772 00:37:31,440 --> 00:37:33,490 არ არსებობს ჯარიმები აყენებს რამ შემოსული 773 00:37:33,490 --> 00:37:37,650 ფაქტობრივად, აყენებს ფსევდო კოდი ან კომენტარები აპირებს დაეხმაროს კლასელი 774 00:37:37,650 --> 00:37:40,410 გაერკვნენ, თუ თქვენ ნამდვილად იცით, რა თქვენ ვსაუბრობთ, და იქნებ ჯილდო 775 00:37:40,410 --> 00:37:42,030 თქვენ გარკვეული ნაწილობრივი საკრედიტო რომ. 776 00:37:42,030 --> 00:37:44,510 >> ასევე გასწვრივ იმ ხაზები, დაწერეთ გარკვევით. 777 00:37:44,510 --> 00:37:47,650 იმ შემთხვევაში, თუ ჩვენ არ შეგვიძლია ნამდვილად თუ რას წერს, ჩვენ არ ვაპირებთ თქვენთან დარეკვა 778 00:37:47,650 --> 00:37:49,900 შუაღამისას ხვალ ფიგურა თუ რა დაწერა. 779 00:37:49,900 --> 00:37:51,520 ჩვენ უბრალოდ აპირებს მიიღოს off რაოდენობა. 780 00:37:51,520 --> 00:37:56,570 დაწერეთ აშკარად ასე რომ ჩვენ შეგვიძლია მოვისმინოთ, უფრო სწორად, ჩვენ შეგვიძლია წავიკითხოთ რას წერს. 781 00:37:56,570 --> 00:38:00,230 >> და თუ ის ამბობს, ორი წინადადება, არ წერენ პუნქტში. 782 00:38:00,230 --> 00:38:02,280 მიჰყევით ინსტრუქციას. 783 00:38:02,280 --> 00:38:03,500 დაწერეთ გარკვევით. 784 00:38:03,500 --> 00:38:07,720 და წერენ იმ კომენტარი ან pseudocode კითხვა, რომელიც შეიძლება 785 00:38:07,720 --> 00:38:10,270 ჯილდო ნაწილობრივი საკრედიტო. 786 00:38:10,270 --> 00:38:12,520 >> OK, მოდით წასვლა factorial. 787 00:38:12,520 --> 00:38:15,000 ამიტომ ჩვენ გვაქვს ფუნქცია factorial. 788 00:38:15,000 --> 00:38:18,400 789 00:38:18,400 --> 00:38:21,550 მე რომ რეალურად წერენ ამ C, რა უნდა დააყენოს სანამ სახელი 790 00:38:21,550 --> 00:38:22,800 ფუნქცია? 791 00:38:22,800 --> 00:38:24,880 792 00:38:24,880 --> 00:38:30,060 დაბრუნების ტიპის, რომელიც ამ შემთხვევაში, ჩვენ მივცემ მას int. 793 00:38:30,060 --> 00:38:35,450 და შემდეგ შიგნით curly აფრთხილებს, ის არის, რა მიდის შიგნით curly აფრთხილებს for 794 00:38:35,450 --> 00:38:36,850 ფუნქცია? 795 00:38:36,850 --> 00:38:37,950 >> სტუდენტები: დავა ტიპის. 796 00:38:37,950 --> 00:38:39,150 >> JASON HIRSCHHORN: მისი არგუმენტები. 797 00:38:39,150 --> 00:38:42,680 ასე რომ factorial ალბათ მიიღოს არგუმენტი. 798 00:38:42,680 --> 00:38:44,500 ეს ალბათ მხოლოდ ერთი არგუმენტი. 799 00:38:44,500 --> 00:38:49,450 და ჩვენ აცხადებენ, რომ ეს წავა რიცხვი მოუწოდა x. 800 00:38:49,450 --> 00:38:52,770 და კიდევ ერთხელ, როდესაც წერილობით პროტოტიპი ფუნქცია ან წერილობით ფუნქცია 801 00:38:52,770 --> 00:38:57,110 თქვენს კოდი ადრე განსაზღვრავს ის, რაც თქვენ დაწერა მონაცემთა ტიპი და დასახელება 802 00:38:57,110 --> 00:39:01,370 რომ ცვლადი, რომ ფუნქცია მხოლოდ. 803 00:39:01,370 --> 00:39:06,350 ასე, რომ თქვენ ვერ გაივლის გარკვეული რაოდენობის ამ ფუნქცია, ეს იქნება მოხსენიებული, როგორც x 804 00:39:06,350 --> 00:39:07,340 იძულებით. 805 00:39:07,340 --> 00:39:08,755 >> ჩვენ გვაქვს ჩვენი factorial ფუნქცია. 806 00:39:08,755 --> 00:39:12,030 807 00:39:12,030 --> 00:39:15,850 ჩვენ გვჭირდება ორი რამ, ბაზის შემთხვევაში და რეკურსიული ზარი. 808 00:39:15,850 --> 00:39:20,900 რა არის ბაზა საქმე factorial? 809 00:39:20,900 --> 00:39:24,850 ვინც წერდა ის და, რომელსაც არ სალაპარაკო არ არის, რა არის ბაზა 810 00:39:24,850 --> 00:39:26,100 საქმე factorial? 811 00:39:26,100 --> 00:39:28,400 812 00:39:28,400 --> 00:39:30,930 >> სტუდენტი: თუ n ნაკლებია, ვიდრე 2, დაბრუნება 1. 813 00:39:30,930 --> 00:39:33,520 >> JASON HIRSCHHORN თუ N არის ნაკლებია, ვიდრე 2, დაბრუნება 1. 814 00:39:33,520 --> 00:39:37,216 მინდა, რომ, იმიტომ, რომ ზრუნავს 0 და 1. 815 00:39:37,216 --> 00:39:45,290 ასე რომ, ჩვენ ყველაფერს გავაკეთებთ x <2, დაბრუნება 1. 816 00:39:45,290 --> 00:39:47,870 იმ შემთხვევაში, თუ ჩვენ მივიღებთ გავიდა 0, თუ არ მივიღებთ გავიდა 1, ეს ფუნქცია 817 00:39:47,870 --> 00:39:49,790 დაუყოვნებლივ დაბრუნებას 1. 818 00:39:49,790 --> 00:39:54,020 იმ შემთხვევაში, თუ ჩვენ მივიღებთ გავიდა გარკვეული რაოდენობის მეტი მეტი ან ტოლია 2, ჩვენ ვაპირებთ 819 00:39:54,020 --> 00:39:55,370 ჩვენი რეკურსიული ზარი. 820 00:39:55,370 --> 00:39:57,855 >> და ა.შ. როგორ არის, რომ იმუშავებს? 821 00:39:57,855 --> 00:40:01,070 შეგიძლიათ ვინმეს, ვინც მუშაობდა ამ ვინც არ ლაპარაკობენ ჯერჯერობით მომეცი 822 00:40:01,070 --> 00:40:07,380 რეკურსიული მოწოდება ამ ფუნქციის in pseudocode? 823 00:40:07,380 --> 00:40:10,770 იმ შემთხვევაში, თუ ჩვენ მივიღებთ გავიდა რიგ x და ეს უფრო მეტია, ვიდრე 2, რა 824 00:40:10,770 --> 00:40:13,370 გვინდა გავაკეთოთ? 825 00:40:13,370 --> 00:40:17,930 ჩვენ ასევე მაგალითი დაწერილი მხარე, რომელიც შეიძლება გიპასუხოთ. 826 00:40:17,930 --> 00:40:20,770 >> სტუდენტური ზარის x ჯერ factorial of x მინუს 1? 827 00:40:20,770 --> 00:40:22,020 >> JASON HIRSCHHORN: ზუსტად უფლება. 828 00:40:22,020 --> 00:40:24,610 829 00:40:24,610 --> 00:40:37,750 ჩვენ ვაპირებთ დაბრუნებას x times factorial of x მინუს 1. 830 00:40:37,750 --> 00:40:41,810 და რომ, მიუხედავად იმისა, რომ მე დავწერე up, ძირითადად, რაც თქვენ განაცხადა, English, 831 00:40:41,810 --> 00:40:44,580 ამ factorial ფუნქცია მიიღებს ე.წ. ერთხელ. 832 00:40:44,580 --> 00:40:46,320 ეს თქვენ შეასრულოს on x მინუს 1. 833 00:40:46,320 --> 00:40:49,320 ეს კიდე დაბრუნდება ზოგიერთი რიცხვი, და მაშინ ეს თქვენ გავამრავლოთ ეს ორი 834 00:40:49,320 --> 00:40:52,050 ერთად, და რომ ღირებულება იქნება დაბრუნდა რასაც უწოდა 835 00:40:52,050 --> 00:40:55,010 factorial ფუნქცია, რომელიც შეიძლება კიდევ ერთი შემთხვევა 836 00:40:55,010 --> 00:40:58,420 ამ factorial ფუნქცია. 837 00:40:58,420 --> 00:41:01,360 >> ასე რომ, არის მაგალითი რეკურსიული ფუნქცია, ძალიან 838 00:41:01,360 --> 00:41:02,530 მარტივი რეკურსიული ფუნქცია. 839 00:41:02,530 --> 00:41:04,530 მაგრამ მათი უმრავლესობა იქნება მოსწონს ეს. 840 00:41:04,530 --> 00:41:11,170 თუ გსურთ კარგი რეკურსიული გამოწვევა ვიქტორინა, ცდილობენ კოდირების 841 00:41:11,170 --> 00:41:13,230 ორობითი ძებნა რეკურსიული. 842 00:41:13,230 --> 00:41:18,950 იმიტომ, რომ თუ თქვენ არ ორობითი ძებნა პრობლემა კომპლექტი სამი, ალბათ ეს გააკეთა 843 00:41:18,950 --> 00:41:21,730 iteratively ხოლო loop. 844 00:41:21,730 --> 00:41:23,700 >> მაგრამ მას ასევე შეუძლია ჩაიწეროს რეკურსიულად. 845 00:41:23,700 --> 00:41:26,310 თქვენ აპირებთ უნდა დაწეროთ ცალკე ფუნქცია, რომელიც იღებს გარკვეული 846 00:41:26,310 --> 00:41:29,020 სხვადასხვა ბრძანების ხაზი არგუმენტები - ან არა ბრძანების ხაზი არგუმენტები, ზოგიერთი 847 00:41:29,020 --> 00:41:30,910 სხვადასხვა მხოლოდ რეგულარული არგუმენტები. 848 00:41:30,910 --> 00:41:33,870 მაგრამ თქვენ ვერ წერენ ორობითი ძებნა რეკურსიული ასევე. 849 00:41:33,870 --> 00:41:36,190 >> სტუდენტური ასე რომ თქვენ შეიძლება ასევე წერია, ნაცვლად x მინუს 1, თქვენ 850 00:41:36,190 --> 00:41:39,502 შეიძლება ასევე წერილობითი x minus მინუს, ან თქვენ შეიძლება 851 00:41:39,502 --> 00:41:40,830 წერილობითი მინუს მინუს x. 852 00:41:40,830 --> 00:41:44,740 შეგიძლიათ უბრალოდ ავუხსნათ მართლაც სწრაფად რატომ იმ იქნებოდა სხვადასხვა ნივთები, 853 00:41:44,740 --> 00:41:49,510 მოსწონს რა განსხვავება არის შორის x მინუს მინუს და მინუს მინუს x? 854 00:41:49,510 --> 00:41:51,320 >> JASON HIRSCHHORN: არა, მე არ ვარ ვაპირებ წასვლას, რომ. 855 00:41:51,320 --> 00:41:55,500 მაგრამ მე გელაპარაკოთ მას შემდეგ, კლასი. x მინუს მინუს, მინუს მინუს x 856 00:41:55,500 --> 00:41:57,780 decrement x 1. 857 00:41:57,780 --> 00:41:59,090 მაგრამ მათ ამის გაკეთება ცოტა განსხვავებულად. 858 00:41:59,090 --> 00:42:00,340 მაგრამ მე არ მინდა, რომ. 859 00:42:00,340 --> 00:42:04,330 860 00:42:04,330 --> 00:42:09,090 სხვა კითხვებს უკან ან ეს ფუნქცია? 861 00:42:09,090 --> 00:42:10,140 ეს არ არის ნამდვილად კი pseudocode. 862 00:42:10,140 --> 00:42:15,060 რომ ძირითადად კოდი in C თქვენ ამას წერენ ამ. 863 00:42:15,060 --> 00:42:19,393 >> OK, ნებისმიერი სხვა სახის კითხვებით თემებზე აქ? 864 00:42:19,393 --> 00:42:19,864 ჰო. 865 00:42:19,864 --> 00:42:23,130 >> სტუდენტი: მე მაქვს სწრაფი rundown of მცურავი წერტილი და ზუსტი. 866 00:42:23,130 --> 00:42:24,260 >> JASON HIRSCHHORN: Floating წერტილი და ზუსტი. 867 00:42:24,260 --> 00:42:26,920 შეგიძლიათ ვინმეს მართლაც სწრაფად მომეცი rundown of 868 00:42:26,920 --> 00:42:28,210 მცურავი წერტილი და ზუსტი? 869 00:42:28,210 --> 00:42:30,420 თქვენ ყველა უნდა გაეკეთებინათ ეს თქვენი პრობლემა კომპლექტი, ასე რომ თქვენ ყველა 870 00:42:30,420 --> 00:42:31,700 იცნობს მას. 871 00:42:31,700 --> 00:42:35,090 ან იქნებ არა ყველა თქვენ. 872 00:42:35,090 --> 00:42:36,602 ვინმეს? 873 00:42:36,602 --> 00:42:39,530 მომეცი დაიწყო ადგილზე. 874 00:42:39,530 --> 00:42:40,750 მცურავი წერტილი და ზუსტი. 875 00:42:40,750 --> 00:42:42,380 რა არის პრობლემა? 876 00:42:42,380 --> 00:42:42,960 დიახ. 877 00:42:42,960 --> 00:42:43,680 Victoria? 878 00:42:43,680 --> 00:42:44,480 >> VANESSA: Vanessa. 879 00:42:44,480 --> 00:42:45,285 >> JASON HIRSCHHORN: Vanessa. 880 00:42:45,285 --> 00:42:45,680 უკაცრავად. 881 00:42:45,680 --> 00:42:51,550 >> VANESSA: არსებობს მხოლოდ სასრულ ნომერი ციფრები, რომ შეიძლება წარმოდგენილი 882 00:42:51,550 --> 00:42:57,930 იმიტომ, რომ თქვენ, ჩვენს შემთხვევაში, 32-bit სისტემა. 883 00:42:57,930 --> 00:43:03,080 ასე, რომ თქვენ სახის უნდა შეადგინოს ზოგიერთი ნომრები. 884 00:43:03,080 --> 00:43:03,910 >> JASON HIRSCHHORN: ასე რომ, სწორედ. 885 00:43:03,910 --> 00:43:08,110 არსებობს მხოლოდ გარკვეული რაოდენობის ციფრები, რომ შეიძლება წარმოდგენილი. 886 00:43:08,110 --> 00:43:11,770 თუ თქვენ გავამრავლოთ ორი ძალიან დიდი რაოდენობით, ეს შეიძლება overflow ოდენობით 887 00:43:11,770 --> 00:43:13,950 ფართები თქვენ უნდა წარმოადგენს მთელი რიცხვი. 888 00:43:13,950 --> 00:43:17,930 ამიტომ, ზოგჯერ ჩვენ ვიყენებთ ხანგრძლივი ხანგრძლივი ნაცვლად int. 889 00:43:17,930 --> 00:43:19,210 რომ უფრო მეტი სივრცეებს. 890 00:43:19,210 --> 00:43:21,210 რომ შეიძლება გამართავს დიდი რაოდენობის. 891 00:43:21,210 --> 00:43:24,310 >> მცურავი პუნქტიანი სიზუსტით უნდა გააკეთოს , მაგრამ ასევე აქვს შუაშია 892 00:43:24,310 --> 00:43:29,300 ის ფაქტი, რომ ათობითი ნომრები ყოველთვის არ არის წარმოდგენილი. 893 00:43:29,300 --> 00:43:29,540 უკაცრავად. 894 00:43:29,540 --> 00:43:31,280 ნება მიბოძეთ ამ თავში up. 895 00:43:31,280 --> 00:43:36,610 ათობითი რიცხვი 1.0 ყოველთვის არ არის წარმოდგენილია, როგორც თქვენ მოელოდა, 896 00:43:36,610 --> 00:43:40,770 1,000000000. 897 00:43:40,770 --> 00:43:50,360 იგი ხანდახან წარმოდგენილია როგორც 1,000000001 ან 0,999999999. 898 00:43:50,360 --> 00:43:52,780 ეს შეიძლება იყოს თუნდაც 89 დააგდეს იქ სადღაც. 899 00:43:52,780 --> 00:43:56,560 ასე რომ იმ ათობითი ციფრები არ არის წარმოდგენილია ზუსტად ისევე, როგორც თქვენ ამას 900 00:43:56,560 --> 00:43:58,430 ველით, რომ ისინი იყოს წარმოდგენილი. 901 00:43:58,430 --> 00:44:00,010 >> ასე რომ, პრობლემა კომპლექტი - 902 00:44:00,010 --> 00:44:00,860 იყო ეს ორი? - 903 00:44:00,860 --> 00:44:05,290 პრობლემა კომპლექტი, ორი, სადაც ჩვენ შესძლეს მცურავი პუნქტიანი ნომრები, როცა გვინდოდა 904 00:44:05,290 --> 00:44:08,690 მათ წარმოადგენს სწორედ ის, რაც ჩვენ გვინდოდა მათ წარმოადგენს, ნომერი 905 00:44:08,690 --> 00:44:12,860 საქართველოს pennies, ან რაოდენობის ცენტი, გავამრავლებთ მათ მიერ 100. 906 00:44:12,860 --> 00:44:14,750 ჩვენ მრგვალდება მათ. 907 00:44:14,750 --> 00:44:18,660 და მაშინ ჩვენ შეწყვიტა ყველაფერი უკან ათობითი წერტილი. 908 00:44:18,660 --> 00:44:22,020 ეს იყო იმის უზრუნველყოფა, რომ ისინი რეალურად ტოლია ზუსტად ის, რაც გვინდოდა 909 00:44:22,020 --> 00:44:22,410 მათ გაუტოლდება. 910 00:44:22,410 --> 00:44:26,870 >> იმის გამო, რომ, როდესაც თქვენ მიიღოს რაღაც რომ ათწილადი და ჩართოთ იგი int, თქვენ 911 00:44:26,870 --> 00:44:29,860 შეწყვიტა ყველაფერი მარჯვენა ათობითი წერტილი. 912 00:44:29,860 --> 00:44:33,900 იმის გამო, რომ არსებობს გარკვეული მცურავი წერტილი ორაზროვნება, 100.000 შეიძლება 913 00:44:33,900 --> 00:44:37,440 წარმოდგენილია როგორც 99,999999999. 914 00:44:37,440 --> 00:44:40,350 და თუ უბრალოდ შეწყვიტა ყველაფერი მარჯვენა დაუყოვნებლივ, თქვენ აპირებს 915 00:44:40,350 --> 00:44:41,600 არასწორი ნომერი. 916 00:44:41,600 --> 00:44:44,050 917 00:44:44,050 --> 00:44:44,180 ჰო. 918 00:44:44,180 --> 00:44:45,290 >> სტუდენტი: მე მქონდა კითხვა დაახლოებით აძლევენ. 919 00:44:45,290 --> 00:44:47,500 რა მიზნით იგი მოხდეს? 920 00:44:47,500 --> 00:44:54,480 თუ გსურთ გააკეთოთ float, ფრჩხილებში, 1 გაყოფილი 10, იგი ჩვენგან 1 იყოფა 10, 921 00:44:54,480 --> 00:44:58,910 შემდეგ კიდევ 0.1, მაშინ იქცევა იგი float? 922 00:44:58,910 --> 00:45:01,470 >> JASON HIRSCHHORN: თუ თქვენ ათწილადი 1 იყოფა 10 - 923 00:45:01,470 --> 00:45:02,550 >> სტუდენტი: ჰო, და შემდეგ შეადგენს - 924 00:45:02,550 --> 00:45:04,240 ასევე, ეს ჩვეულებრივ აქვს მას თანასწორი - 925 00:45:04,240 --> 00:45:04,690 ჰო. 926 00:45:04,690 --> 00:45:06,760 გსურთ, რათა ის float, არა? 927 00:45:06,760 --> 00:45:12,790 >> JASON HIRSCHHORN: OK, ასე რომ, ჩვენ ვაპირებთ გამოიყენოთ, რომ segue შევიდა მჭიდროდაა 928 00:45:12,790 --> 00:45:15,390 ამ კითხვებზე პასუხის გაცემა მეშვეობით კოდირების. 929 00:45:15,390 --> 00:45:18,180 იმის გამო, რომ თქვენ ალბათ ბევრი ამ წუთში კითხვებს, და კარგი გზა 930 00:45:18,180 --> 00:45:19,100 მათ მოგვარებას მეშვეობით კოდირების. 931 00:45:19,100 --> 00:45:21,320 ამიტომ, ჩვენ ვაპირებთ, რომ კოდექსის ამ წუთას, და მაშინ ჩვენ ვაპირებთ წავიდეთ უკან და 932 00:45:21,320 --> 00:45:24,020 კოდექსის კითხვა გქონდათ. 933 00:45:24,020 --> 00:45:24,950 >> ასე რომ, პირველი ხაზი - 934 00:45:24,950 --> 00:45:29,390 მე არ უნდა წერილობითი იგი - რა არის პირველი, რაც ჩვენ გვინდა, რომ, როდესაც ჩვენ 935 00:45:29,390 --> 00:45:32,250 ქმნის ახალ ფაილს gedit? 936 00:45:32,250 --> 00:45:34,190 >> სტუდენტური ჩართეთ. 937 00:45:34,190 --> 00:45:35,920 >> JASON HIRSCHHORN: ჩართეთ რა? 938 00:45:35,920 --> 00:45:37,952 >> სტუდენტი: CS50 ბიბლიოთეკაში. 939 00:45:37,952 --> 00:45:39,920 >> JASON HIRSCHHORN: OK. 940 00:45:39,920 --> 00:45:42,590 რა უნდა შეიცავდეს? 941 00:45:42,590 --> 00:45:46,820 ჩვენ უბრალოდ აპირებს შეამოწმოს, რა ხდება როდესაც თქვენ მიცემული რაღაც float. 942 00:45:46,820 --> 00:45:48,605 მაგრამ რას უნდა შეიცავდეს თუ ჩვენ აპირებს დაწეროს C პროგრამაში? 943 00:45:48,605 --> 00:45:49,300 >> სტუდენტი: სტანდარტული I / O. 944 00:45:49,300 --> 00:45:50,625 >> JASON HIRSCHHORN: stdio.h. 945 00:45:50,625 --> 00:45:54,880 ჩვენ, ფაქტობრივად, არ უნდა, ამ პროგრამა, cs50.h, მიუხედავად იმისა, რომ 946 00:45:54,880 --> 00:45:55,920 ყოველთვის სასარგებლოა მოიცავს იგი. 947 00:45:55,920 --> 00:45:58,260 მაგრამ ჩვენ ყოველთვის უნდა stdio.h. 948 00:45:58,260 --> 00:45:59,660 >> სტუდენტი: როდესაც კოდირების C? 949 00:45:59,660 --> 00:46:15,770 >> JASON HIRSCHHORN: როდესაც კოდირების C. 950 00:46:15,770 --> 00:46:17,090 >> ასე რომ, მე გადარჩენა, როგორც ეს. C ფაილი. 951 00:46:17,090 --> 00:46:18,590 მე კიდევ ზოგიერთი ლამაზი სინტაქსის შეფერადება. 952 00:46:18,590 --> 00:46:22,890 მე დავწერე ბათილად შიგნით ძირითადი. 953 00:46:22,890 --> 00:46:24,792 რას ბათილად ნიშნავს? 954 00:46:24,792 --> 00:46:26,740 >> სტუდენტი: არა მიიღოს ნებისმიერი ბრძანების ხაზი არგუმენტები. 955 00:46:26,740 --> 00:46:28,900 >> JASON HIRSCHHORN: Void საშუალებით, ამ შემთხვევაში, მთავარი არ მიიღოს ნებისმიერი 956 00:46:28,900 --> 00:46:29,700 ბრძანების ხაზი არგუმენტები. 957 00:46:29,700 --> 00:46:32,720 სხვა შემთხვევაში ეს ნიშნავს ფუნქცია არ მიიღოს ბრძანება ხაზი არგუმენტები. 958 00:46:32,720 --> 00:46:36,560 ან ფუნქცია, თუ მე დაწერა void ძირითადი (void), რომელიც იტყვის, მთავარ მიერ 959 00:46:36,560 --> 00:46:38,460 არ დაბრუნების არაფერი. 960 00:46:38,460 --> 00:46:39,960 ასე რომ, ბათილად უბრალოდ არაფერს ნიშნავს. 961 00:46:39,960 --> 00:46:42,510 რას ვწერ, თუ მე რომ მიიღოს ბრძანება ხაზი არგუმენტები? 962 00:46:42,510 --> 00:46:45,250 963 00:46:45,250 --> 00:46:47,150 >> სტუდენტი: int arc c string arc წინააღმდეგ 964 00:46:47,150 --> 00:46:49,055 >> JASON HIRSCHHORN: int argc სიმებიანი argv. 965 00:46:49,055 --> 00:46:54,050 966 00:46:54,050 --> 00:46:55,572 არის ის, რომ არა? 967 00:46:55,572 --> 00:46:58,720 >> სტუდენტი: ეს char ვარსკვლავი argv ფრჩხილებში. 968 00:46:58,720 --> 00:47:01,730 >> JASON HIRSCHHORN: ასე რომ, შეგიძლიათ დაწეროთ სიმებიანი argv ფრჩხილებში ან char ვარსკვლავი argv 969 00:47:01,730 --> 00:47:03,710 ფრჩხილებში, მაგრამ თქვენ უნდა ფრჩხილებში. 970 00:47:03,710 --> 00:47:06,290 იმის გამო, რომ argv არის მასივი სიმები, მახსოვს. 971 00:47:06,290 --> 00:47:07,360 ეს არ არის მხოლოდ ერთი სტრიქონი. 972 00:47:07,360 --> 00:47:10,350 ასე რომ სიმებიანი argv არის, აქ არის ერთი string მოუწოდა argv. 973 00:47:10,350 --> 00:47:13,630 სიმებიანი argv ფრჩხილებში არის, აქ არის მასივი სტრიქონები. 974 00:47:13,630 --> 00:47:17,865 ასე int argc სიმებიანი argv ფრჩხილები იქნება რაღაც, რომ მე 975 00:47:17,865 --> 00:47:18,810 ალბათ დაწერა. 976 00:47:18,810 --> 00:47:23,050 >> ასე, რომ თქვენ სურდა შეინახე რიცხვი? 977 00:47:23,050 --> 00:47:24,285 >> სტუდენტი: Yeah, რიცხვი. 978 00:47:24,285 --> 00:47:25,840 ან float. 979 00:47:25,840 --> 00:47:26,710 >> JASON HIRSCHHORN: In float? 980 00:47:26,710 --> 00:47:30,790 მსგავსად, float x უდრის 1 გაყოფილი 10. 981 00:47:30,790 --> 00:47:32,040 >> JASON HIRSCHHORN: OK. 982 00:47:32,040 --> 00:47:40,160 983 00:47:40,160 --> 00:47:42,240 როგორ შემიძლია ამობეჭდოთ float in printf? 984 00:47:42,240 --> 00:47:45,100 985 00:47:45,100 --> 00:47:46,714 რა? 986 00:47:46,714 --> 00:47:47,560 >> სტუდენტი:% ვ. 987 00:47:47,560 --> 00:47:48,300 >> JASON HIRSCHHORN% ვ. 988 00:47:48,300 --> 00:47:50,810 რა რიცხვი? 989 00:47:50,810 --> 00:47:52,110 დ ან i. 990 00:47:52,110 --> 00:47:53,000 რა სიმებიანი? 991 00:47:53,000 --> 00:47:54,240 >> სტუდენტი: s. 992 00:47:54,240 --> 00:47:56,140 >> JASON HIRSCHHORN: s. 993 00:47:56,140 --> 00:47:57,550 როგორ მივიღო ახალი ხაზი? 994 00:47:57,550 --> 00:47:58,800 >> სტუდენტი: backslash n. 995 00:47:58,800 --> 00:48:04,610 996 00:48:04,610 --> 00:48:07,100 >> JASON HIRSCHHORN: რა დაბრუნდნენ იმ შემთხვევაში, თუ მთავარი ეშვება სწორად? 997 00:48:07,100 --> 00:48:08,360 >> სტუდენტი: 0. 998 00:48:08,360 --> 00:48:09,430 მჭირდება დაწერა, რომ ხაზი, თუმცა? 999 00:48:09,430 --> 00:48:10,170 >> სტუდენტი: არა, 1000 00:48:10,170 --> 00:48:11,513 OK, ჩვენ არ წერენ, მაშინ. 1001 00:48:11,513 --> 00:48:16,450 1002 00:48:16,450 --> 00:48:17,190 შეგიძლიათ ყველამ წაიკითხოს ეს? 1003 00:48:17,190 --> 00:48:18,485 იგი გამოიყურება ცოტა პატარა. 1004 00:48:18,485 --> 00:48:20,160 შეგიძლიათ ყველამ დაინახოს, ან უნდა მე ეს დიდი? 1005 00:48:20,160 --> 00:48:23,480 1006 00:48:23,480 --> 00:48:25,100 მე ვფიქრობ, რომ ამისთვის კამერა, ჩვენ გავაკეთებ ეს ცოტა დიდია, თუმცა. 1007 00:48:25,100 --> 00:48:35,750 1008 00:48:35,750 --> 00:48:38,410 >> JASON HIRSCHHORN: თუ მინდა, რომ ეს . გ ფაილის შევიდა გაშვება, რა 1009 00:48:38,410 --> 00:48:39,260 შემიძლია დავწერო? 1010 00:48:39,260 --> 00:48:41,610 >> სტუდენტი: სასტარტედ ტესტი. 1011 00:48:41,610 --> 00:48:42,080 >> JASON HIRSCHHORN: უკაცრავად? 1012 00:48:42,080 --> 00:48:42,790 >> სტუდენტი: სასტარტედ ტესტი. 1013 00:48:42,790 --> 00:48:44,040 >> JASON HIRSCHHORN: მარკა ტესტი. 1014 00:48:44,040 --> 00:48:46,700 1015 00:48:46,700 --> 00:48:48,410 ჩვენ ვსაუბრობთ ამ ხაზის ადრე. 1016 00:48:48,410 --> 00:48:49,140 Clang. 1017 00:48:49,140 --> 00:48:51,270 რა clang? 1018 00:48:51,270 --> 00:48:52,200 სახელი შემდგენელი. 1019 00:48:52,200 --> 00:48:53,920 რა არის ეს ხაზი? 1020 00:48:53,920 --> 00:48:55,580 >> სტუდენტი: Sets it up გამოყენების GDB. 1021 00:48:55,580 --> 00:48:59,230 >> JASON HIRSCHHORN: Sets it up გამოყენების GDB. 1022 00:48:59,230 --> 00:49:02,338 ეს ხაზი, რა არის ეს? 1023 00:49:02,338 --> 00:49:03,290 >> სტუდენტი: Source კოდი. 1024 00:49:03,290 --> 00:49:06,010 >> JASON HIRSCHHORN: ეს არის წყარო ფაილი,. c ფაილი. 1025 00:49:06,010 --> 00:49:08,150 რა ეს ორი ხაზი გავაკეთოთ? 1026 00:49:08,150 --> 00:49:10,245 ან ეს ორი არ ხაზები. 1027 00:49:10,245 --> 00:49:12,300 >> სტუდენტი: ეს სახელები ის შესამოწმებლად. 1028 00:49:12,300 --> 00:49:15,410 >> JASON HIRSCHHORN: ასე რომ dash o ამბობს, დაარქვით რაღაც განსხვავებულად. 1029 00:49:15,410 --> 00:49:16,790 აქ თქვენ უწოდა ტესტი. 1030 00:49:16,790 --> 00:49:18,900 იმ შემთხვევაში, თუ არ მქონდა, რომ, რას უნდა დაასახელოს ამ? 1031 00:49:18,900 --> 00:49:20,260 >> სტუდენტი: a.out. 1032 00:49:20,260 --> 00:49:22,340 >> JASON HIRSCHHORN: a.out. 1033 00:49:22,340 --> 00:49:25,366 რას აკეთებთ? 1034 00:49:25,366 --> 00:49:27,670 >> სტუდენტი: ბმულების მათემატიკის ბიბლიოთეკაში. 1035 00:49:27,670 --> 00:49:29,550 >> JASON HIRSCHHORN: ეს ბმულები in მათემატიკის ბიბლიოთეკაში. 1036 00:49:29,550 --> 00:49:32,880 ჩვენ არ მოიცავს მათემატიკის ბიბლიოთეკაში, მაგრამ მას შემდეგ, რაც, რომ ასე გავრცელებული, ისინი 1037 00:49:32,880 --> 00:49:35,780 დაწერილი, რათა ყოველთვის მოიცავს მათემატიკის ბიბლიოთეკაში. 1038 00:49:35,780 --> 00:49:39,050 ანალოგიურად, ეს მოიცავს CS50 ბიბლიოთეკაში. 1039 00:49:39,050 --> 00:49:43,010 >> OK, ასე რომ, თუ ჩვენ სიაში, ჩვენ ახლა აქვს შესრულებადი მოუწოდა ტესტი. 1040 00:49:43,010 --> 00:49:45,150 შეასრულოს ის, ვწერ ტესტი. 1041 00:49:45,150 --> 00:49:48,330 მე ვხედავ, რომ ჩემი მცურავი წერტილი, როგორც მოსალოდნელი იყო, უდრის 0. 1042 00:49:48,330 --> 00:49:50,890 1043 00:49:50,890 --> 00:49:51,590 აკეთებს, რომ - 1044 00:49:51,590 --> 00:49:52,060 ასე - 1045 00:49:52,060 --> 00:49:55,210 >> სტუდენტი: თუ თქვენ დააყენა ათწილადი ახლა, როგორც თქვენ მიიღო ის როგორც float - 1046 00:49:55,210 --> 00:49:56,870 >> JASON HIRSCHHORN: როლებში 1 float? 1047 00:49:56,870 --> 00:49:59,180 >> სტუდენტი: არა, მიცემული სრული რამ - 1048 00:49:59,180 --> 00:49:59,500 yeah. 1049 00:49:59,500 --> 00:50:02,460 თუ თქვენ უბრალოდ გააკეთა, რომ ამას რომ ეს 0.1? 1050 00:50:02,460 --> 00:50:07,170 >> JASON HIRSCHHORN: OK, ასე რომ ნამდვილად სწრაფად, 1 იყოფა 10, იმ 1051 00:50:07,170 --> 00:50:08,690 რიცხვებით იყოფა. 1052 00:50:08,690 --> 00:50:13,580 ასე რომ, როდესაც თქვენ დაყოფის რიცხვებით, ისინი 0, და თქვენ გადარჩენის, რომ 0 1053 00:50:13,580 --> 00:50:17,170 ათწილადი, რადგან slash არის უბრალოდ მთელი განყოფილება. 1054 00:50:17,170 --> 00:50:19,180 ასე რომ, ახლა ჩვენ გთხოვოთ რაღაც შევიდა float. 1055 00:50:19,180 --> 00:50:21,650 >> ვნახოთ, რა მოხდება. 1056 00:50:21,650 --> 00:50:22,900 ჩვენ დავდებთ ტესტი. 1057 00:50:22,900 --> 00:50:25,870 1058 00:50:25,870 --> 00:50:31,090 ახლა ჩვენ ვხედავთ, რომ ხაზი არ იყო მთელი განყოფილება, იგი მცურავი 1059 00:50:31,090 --> 00:50:32,640 წერტილი გაყოფა. 1060 00:50:32,640 --> 00:50:35,700 იმის გამო, რომ მისი არგუმენტები უკვე მიცემული to float. 1061 00:50:35,700 --> 00:50:38,380 ახლა ის ამბობდა, მკურნალობა ამ განყოფილება როგორც ჩვენ საქმე გვაქვს 1062 00:50:38,380 --> 00:50:40,140 მცურავი ქულა, არა რიცხვებით. 1063 00:50:40,140 --> 00:50:42,760 ასე რომ, ჩვენ მიიღოს პასუხი ჩვენ მოველით. 1064 00:50:42,760 --> 00:50:44,620 >> ვნახოთ, რა ხდება - 1065 00:50:44,620 --> 00:50:47,103 oops. 1066 00:50:47,103 --> 00:50:51,646 თუ მინდოდა ბეჭდვა უფრო ათობითი ლაქები, როგორ შეიძლება მე ამის გაკეთება? 1067 00:50:51,646 --> 00:50:55,550 >> სტუდენტი: Point dot f, ან როგორც ბევრი ათობითი ადგილებში როგორც თქვენ გსურთ. 1068 00:50:55,550 --> 00:51:02,280 1069 00:51:02,280 --> 00:51:04,440 >> JASON HIRSCHHORN: So I ბეჭდვა 10 ათობითი წერტილებით. 1070 00:51:04,440 --> 00:51:06,610 და ჩვენ ახლა ვხედავთ ჩვენ ვიღებთ რაღაც უცნაური პერსონალი. 1071 00:51:06,610 --> 00:51:09,650 და რომ მიდის უკან თქვენი კითხვა შესახებ მცურავი პუნქტიანი ორაზროვნება. 1072 00:51:09,650 --> 00:51:10,950 არსებობს უცნაური პერსონალის ინახება აქ. 1073 00:51:10,950 --> 00:51:13,650 1074 00:51:13,650 --> 00:51:15,275 >> OK, ამჯამად რომ უპასუხოს შეკითხვას? 1075 00:51:15,275 --> 00:51:18,550 1076 00:51:18,550 --> 00:51:20,200 რა არ გსურთ კოდექსში სწრაფად? 1077 00:51:20,200 --> 00:51:25,470 >> სტუდენტი: მე უბრალოდ სურდა თუ არა, თუ გაათავისუფლა ზოგიერთი მაჩვენებელი, 1078 00:51:25,470 --> 00:51:30,410 თუ არა, რომ მაჩვენებელი ჯერ კიდევ ინახება ის მისამართი, თუ რა იყო 1079 00:51:30,410 --> 00:51:32,170 მიუთითებს ადრე. 1080 00:51:32,170 --> 00:51:34,100 >> JASON HIRSCHHORN: OK, მოდით გავაკეთოთ ეს. 1081 00:51:34,100 --> 00:51:38,030 Char star Ptr, ეს ქმნის ცვლადი ე.წ. Ptr ტიპის char ვარსკვლავი. 1082 00:51:38,030 --> 00:51:39,280 როგორ შემიძლია დაწერა malloc? 1083 00:51:39,280 --> 00:51:40,550 Alden? 1084 00:51:40,550 --> 00:51:41,800 >> ALDEN: Just malloc. 1085 00:51:41,800 --> 00:51:44,820 1086 00:51:44,820 --> 00:51:51,040 მაგრამ მაშინ ეს უნდა იყოს ზომა, და ამ შემთხვევაში, ვფიქრობ, ნეტავ 1087 00:51:51,040 --> 00:51:52,465 იქნება მიუთითებს char. 1088 00:51:52,465 --> 00:51:54,450 ასე რომ, მინდა იყოს char. 1089 00:51:54,450 --> 00:51:57,520 >> JASON HIRSCHHORN: OK, ასე უფრო generically, Inside - 1090 00:51:57,520 --> 00:51:58,770 მოდით შეცვალონ. 1091 00:51:58,770 --> 00:52:05,100 1092 00:52:05,100 --> 00:52:09,260 Inside malloc, გსურთ ნომერი ბაიტების ბევრი. 1093 00:52:09,260 --> 00:52:12,320 საერთოდ, რაც ჩვენ ვნახეთ, რომ ჩვენ აკეთებს არის ჩვენ ვაპირებთ malloc 1094 00:52:12,320 --> 00:52:14,940 სიმები, მაგალითად, ან კოლექტორები რიცხვებით. 1095 00:52:14,940 --> 00:52:21,600 ასე რომ, თუ ჩვენ გვინდა, რომ 10 რიცხვებით, ან 10 სიმბოლო, 10 მოგვცემს 10. 1096 00:52:21,600 --> 00:52:24,370 და მერე ზომა chars მისცემს ჩვენთვის, რომ ზომა სიმბოლო, რომელიც 1097 00:52:24,370 --> 00:52:25,120 ამ შემთხვევაში არის 1 byte. 1098 00:52:25,120 --> 00:52:26,250 მივიღებთ 10 bytes. 1099 00:52:26,250 --> 00:52:28,540 თუ ჩვენ უნდა დაწეროს ზომა int, რომ მოგვცეს 40 bytes. 1100 00:52:28,540 --> 00:52:31,520 >> ასე უფრო generically, შიგნით malloc არის ბაიტების რაოდენობას გსურთ. 1101 00:52:31,520 --> 00:52:34,620 ამ შემთხვევაში, ჩვენ ვიღებთ 1 byte. 1102 00:52:34,620 --> 00:52:36,900 რომელიც თითქოს უცნაური გამოყენება of malloc, არამედ ჩვენი 1103 00:52:36,900 --> 00:52:38,470 მიზნებისათვის აზრი. 1104 00:52:38,470 --> 00:52:40,420 ასე რომ იქ რომ. 1105 00:52:40,420 --> 00:52:43,420 >> ჩვენ ვაპირებთ მოვუწოდებთ უფასოდ. 1106 00:52:43,420 --> 00:52:47,040 ჩვენ მოისპოს იგი და ვიყენებთ Ptr ერთხელ. 1107 00:52:47,040 --> 00:52:48,750 და რა გსურთ შემოწმება? 1108 00:52:48,750 --> 00:52:50,550 >> სტუდენტი: მე უბრალოდ მინდოდა თუ არა ან არ იყო არაფერი 1109 00:52:50,550 --> 00:52:51,900 შიგნით მას. 1110 00:52:51,900 --> 00:52:53,050 >> JASON HIRSCHHORN: ასე რომ თუ არა ის აღნიშნა, რომ არაფერი? 1111 00:52:53,050 --> 00:52:57,740 >> სტუდენტი: ჰო, ზუსტად, თუ ეს ჯერ კიდევ მეხსიერებაში მისამართზე. 1112 00:52:57,740 --> 00:53:02,220 >> JASON HIRSCHHORN: ასე რომ გსურთ შევამოწმოთ ღირებულება Ptr? 1113 00:53:02,220 --> 00:53:03,470 >> სტუდენტი: ჰო, ზუსტად. 1114 00:53:03,470 --> 00:53:07,940 1115 00:53:07,940 --> 00:53:10,160 >> JASON HIRSCHHORN: რას ვწერ აქ თუ მინდა შევამოწმო ღირებულება 1116 00:53:10,160 --> 00:53:11,880 წერტილი - რა არის, Jordan განაცხადა, ღირებულება? 1117 00:53:11,880 --> 00:53:13,720 ან რა ინახება შიგნით Ptr? 1118 00:53:13,720 --> 00:53:14,620 >> სტუდენტი: მეხსიერების მისამართზე. 1119 00:53:14,620 --> 00:53:16,330 >> JASON HIRSCHHORN: A მეხსიერების მისამართზე. 1120 00:53:16,330 --> 00:53:20,520 ასე რომ, თუ ვწერ მხოლოდ ამ, იგი ყველაფერს მომეცი ღირებულება Ptr. 1121 00:53:20,520 --> 00:53:22,800 და როგორ შემიძლია ამობეჭდოთ მეხსიერების მისამართი? 1122 00:53:22,800 --> 00:53:26,470 რა არის სტრიქონში განთავსების მეხსიერების მისამართი? 1123 00:53:26,470 --> 00:53:27,430 >> სტუდენტი:% p. 1124 00:53:27,430 --> 00:53:28,050 >> JASON HIRSCHHORN% p. 1125 00:53:28,050 --> 00:53:29,500 % S სიმებიანი. 1126 00:53:29,500 --> 00:53:30,750 % P განთავსების მაჩვენებელი. 1127 00:53:30,750 --> 00:53:40,820 1128 00:53:40,820 --> 00:53:43,540 არის ის, რომ არა? 1129 00:53:43,540 --> 00:53:44,790 ეს არის სწორი. 1130 00:53:44,790 --> 00:53:49,450 1131 00:53:49,450 --> 00:53:51,040 ასე Ptr შეადგენს - 1132 00:53:51,040 --> 00:53:53,350 მას ჯერ კიდევ აქვს რაღაც იგი. 1133 00:53:53,350 --> 00:53:56,110 1134 00:53:56,110 --> 00:53:57,645 ეს არის, ალბათ უფრო საინტერესო კითხვა. 1135 00:53:57,645 --> 00:53:59,198 რას ონლაინ გავაკეთოთ? 1136 00:53:59,198 --> 00:54:00,830 >> სტუდენტი: seg ხარვეზებით. 1137 00:54:00,830 --> 00:54:01,310 >> JASON HIRSCHHORN: What? 1138 00:54:01,310 --> 00:54:02,678 >> სტუდენტი: მე ვფიქრობ, რომ seg ხარვეზებით. 1139 00:54:02,678 --> 00:54:03,574 >> JASON HIRSCHHORN: Hm? 1140 00:54:03,574 --> 00:54:04,920 >> სტუდენტი: მე ვფიქრობ, რომ seg ბრალია. 1141 00:54:04,920 --> 00:54:08,265 >> JASON HIRSCHHORN: ასე რომ, ეს ხაზი კოდი, ვარსკვლავი Ptr, რა 1142 00:54:08,265 --> 00:54:10,152 ჯერ ვარსკვლავი ნიშნავს? 1143 00:54:10,152 --> 00:54:11,240 >> სტუდენტი: შინაარსი. 1144 00:54:11,240 --> 00:54:11,560 >> JASON HIRSCHHORN: ჰო. 1145 00:54:11,560 --> 00:54:13,910 წავიდეთ მისაღებად შინაარსი. 1146 00:54:13,910 --> 00:54:16,830 ასე რომ, ეს აპირებს ხსოვნას მიმართოს და მომეცი, რომ. 1147 00:54:16,830 --> 00:54:21,030 მე% c უფლება აქ იმიტომ, რომ იქ არიან გმირები იქ ინახება. 1148 00:54:21,030 --> 00:54:23,390 ამიტომ, ჩვენ ვაპირებთ წასვლა რომ მისამართი ჩვენ უბრალოდ ვნახე - ან ეს ალბათ 1149 00:54:23,390 --> 00:54:25,190 ცოტა განსხვავებული ამ დროს ჩვენ გაუშვით პროგრამა. 1150 00:54:25,190 --> 00:54:28,010 მაგრამ ჩვენ წასვლა რომ მისამართი რომელიც ჩვენ ვიცით, ჯერ კიდევ არსებობს 1151 00:54:28,010 --> 00:54:29,260 და ვნახოთ რა იქ. 1152 00:54:29,260 --> 00:54:35,640 1153 00:54:35,640 --> 00:54:37,110 >> ასე რომ არ seg ბრალია. 1154 00:54:37,110 --> 00:54:38,970 ეს უბრალოდ არ მოგვცეს არაფერი. 1155 00:54:38,970 --> 00:54:43,350 ეს შეიძლება მართლაც მოგვცა რაღაც, ჩვენ უბრალოდ ვერ ვხედავ მას. 1156 00:54:43,350 --> 00:54:45,110 და რომ მიდის უკან ეს იდეა - 1157 00:54:45,110 --> 00:54:47,270 და ჩვენ არ ვაპირებთ, რომ ძალიან ბევრი შევიდა ეს, იმიტომ, რომ გარეთ 1158 00:54:47,270 --> 00:54:48,460 წინამდებარე კურსი. 1159 00:54:48,460 --> 00:54:51,260 მაგრამ ჩვენ ვისაუბრეთ აქ, თუ ჩვენ გასცდა ფარგლებში მასივი მიერ 1160 00:54:51,260 --> 00:54:54,890 1, ჩვენ შეიძლება არ მიიღოთ უბედურება. 1161 00:54:54,890 --> 00:54:58,550 >> ზოგჯერ, როდესაც თქვენ უბრალოდ მიდის 1, თქვენ აკეთებთ რაღაც, და თქვენ 1162 00:54:58,550 --> 00:54:59,220 ვერ უბედურება. 1163 00:54:59,220 --> 00:55:00,820 მაგრამ თქვენ არ ყოველთვის უბედურება. 1164 00:55:00,820 --> 00:55:05,170 ეს დამოკიდებულია იმაზე, თუ რამდენად ცუდი, რაც თქვენ ნუ, თქვენ აპირებთ მიიღოთ უბედურება. 1165 00:55:05,170 --> 00:55:07,790 რომელიც არ არის იმის თქმა, იქნება sloppy თქვენი კოდი. 1166 00:55:07,790 --> 00:55:12,080 მაგრამ ეს არ არის იმის თქმა, რომ პროგრამა არ ყოველთვის დატოვა, მაშინაც კი, თუ სადმე 1167 00:55:12,080 --> 00:55:14,130 თქვენ არ უნდა წავიდეს. 1168 00:55:14,130 --> 00:55:18,170 >> კარგი მაგალითია, რომ არის, ბევრი ხალხს პრობლემა კომპლექტი 3, რომელიც 1169 00:55:18,170 --> 00:55:22,350 იყო 15, არ შეამოწმოთ ფარგლებში ფორუმში. 1170 00:55:22,350 --> 00:55:25,860 ასე, რომ თქვენ ჩანდა მარცხენა, ჩანდა, რომ მარჯვენა, ჩანდა, რომ ყველაზე, ჩანდა 1171 00:55:25,860 --> 00:55:27,000 ბოლოში. 1172 00:55:27,000 --> 00:55:31,540 მაგრამ თქვენ არ შეამოწმეთ თუ ზევით რეალურად იქნება ფორუმში. 1173 00:55:31,540 --> 00:55:35,220 და ბევრი ადამიანი, ვინც ეს გააკეთა, რომ და აღმოჩნდა, რომ, მათი პროგრამა მუშაობდა 1174 00:55:35,220 --> 00:55:38,960 კარგად, იმიტომ, რომ სადაც ეს board იყო ინახება მეხსიერებაში, თუ წავიდა ერთი 1175 00:55:38,960 --> 00:55:42,300 ზემოთ ან შემოწმდება, რომ მეხსიერების მისამართი, იქ არ იყო არაფერი 1176 00:55:42,300 --> 00:55:44,870 განსაკუთრებით საშინელი, რომ, ასე რომ თქვენი პროგრამა არ იყო 1177 00:55:44,870 --> 00:55:45,970 აპირებს დაწეროთ თქვენ. 1178 00:55:45,970 --> 00:55:48,870 >> მაგრამ ჩვენ მაინც მიიღოს off ქულა, თუ თქვენ არ შეამოწმოს, რომ, რადგან თქვენ 1179 00:55:48,870 --> 00:55:50,850 აკეთებს რაღაც არ იყო უნდა გავაკეთოთ, და თქვენ შეიძლება 1180 00:55:50,850 --> 00:55:51,860 მიღებული უბედურება. 1181 00:55:51,860 --> 00:55:54,040 შანსები, თუმცა, ალბათ, არა. 1182 00:55:54,040 --> 00:55:57,790 ასე რომ, ეს აჩვენებს, რომ, დიახ, ჩვენ მაინც წასვლა მას. 1183 00:55:57,790 --> 00:55:59,010 და ჩვენ არ მიღების პრობლემები ამ შემთხვევაში. 1184 00:55:59,010 --> 00:56:04,000 თუ ჩვენ შევეცადეთ წაიკითხა მომდევნო 100 სიმბოლო, ჩვენ მინდა 1185 00:56:04,000 --> 00:56:06,000 ალბათ კიდევ უბედურება. 1186 00:56:06,000 --> 00:56:09,400 და თქვენ შეგიძლიათ კოდექსის კითხულობს მომდევნო 100 პერსონაჟი, თუ გსურთ აკეთებს ზოგიერთი 1187 00:56:09,400 --> 00:56:10,110 სახის for loop. 1188 00:56:10,110 --> 00:56:10,850 ჰო. 1189 00:56:10,850 --> 00:56:16,250 >> სტუდენტი: მას შემდეგ, რაც ჩვენ დაავალა, რომ ფართი ფაქტობრივი ღირებულება, ჩვენ არ 1190 00:56:16,250 --> 00:56:17,050 რეალურად ნახოს არაფერი. 1191 00:56:17,050 --> 00:56:21,740 უნდა ვეცადოთ ეს მიიღწევა, რომ ტოლი მინდა c ან რაღაც? 1192 00:56:21,740 --> 00:56:22,640 >> JASON HIRSCHHORN: Great კითხვა. 1193 00:56:22,640 --> 00:56:25,340 როგორ შემიძლია მითითებული, რომ ღირებულება - 1194 00:56:25,340 --> 00:56:28,980 რა ხაზი კოდი არ ვწერ on line შვიდი უნდა გავაკეთოთ ის, რაც თქვენ განაცხადა? 1195 00:56:28,980 --> 00:56:34,040 >> სტუდენტი: Star Ptr შეადგენს ერთ გაცემა c დასრულდება ერთი გაცემა. 1196 00:56:34,040 --> 00:56:36,970 >> JASON HIRSCHHORN: ასე რომ აყენებს ხასიათი, c, იმ ადგილას, 1197 00:56:36,970 --> 00:56:40,200 იმიტომ, რომ კიდევ ერთხელ, რომ ვარსკვლავი ნიშნავს წასვლა იქ. 1198 00:56:40,200 --> 00:56:43,320 და როდესაც გამოიყენება მარცხენა მხარეს, დავალება ოპერატორი, რომელიც უდრის 1199 00:56:43,320 --> 00:56:47,270 დარეგისტრირდით, ჩვენ არ ვაპირებთ, რომ მიიღოთ, რომ ღირებულება იმდენად, როგორც მითითებული, რომ ღირებულება. 1200 00:56:47,270 --> 00:56:48,520 ახლა ვნახოთ, რა მოხდება. 1201 00:56:48,520 --> 00:56:54,700 1202 00:56:54,700 --> 00:56:56,770 >> ჩვენ დააყენა რაღაც არსებობს და ეს იყო. 1203 00:56:56,770 --> 00:56:58,000 გამოვიძახეთ free. 1204 00:56:58,000 --> 00:57:00,100 რაღაცები ალბათ მოხდა ბევრი. 1205 00:57:00,100 --> 00:57:01,890 ასე რომ, ეს არ უქმნით. 1206 00:57:01,890 --> 00:57:07,440 თუმცა ისევ და ისევ, ჩვენ ვერ ვიღებთ პრობლემები მიმდინარეობს. 1207 00:57:07,440 --> 00:57:10,260 >> მე ამით გარეთ კოდი საილუსტრაციოდ რომ ბევრი ამ 1208 00:57:10,260 --> 00:57:12,410 კითხვა, რომელიც თქვენ უნდა, ისინი მართლაც ძალიან საინტერესო 1209 00:57:12,410 --> 00:57:13,650 პასუხობს ბევრი დრო. 1210 00:57:13,650 --> 00:57:15,260 და ისინი ნამდვილად კარგი კითხვები. 1211 00:57:15,260 --> 00:57:19,010 და თქვენ შეგიძლიათ გაერკვნენ მათ გარეთ საკუთარი, თუ, მაგალითად, 1212 00:57:19,010 --> 00:57:19,990 ჩვენ არ მონაკვეთზე. 1213 00:57:19,990 --> 00:57:20,940 ჰო. 1214 00:57:20,940 --> 00:57:24,430 >> სტუდენტი: იმის გამო, რომ თქვენ არ გაგზავნის კურსორი სადმე, გჭირდებათ 1215 00:57:24,430 --> 00:57:26,530 გამოიყენოთ malloc? 1216 00:57:26,530 --> 00:57:28,400 >> JASON HIRSCHHORN: ასე რომ, ეს მიდის უკან თქვენს საწყის კითხვაზე. 1217 00:57:28,400 --> 00:57:28,620 [? ?] 1218 00:57:28,620 --> 00:57:29,980 უბრალოდ ადგილობრივი ცვლადი? 1219 00:57:29,980 --> 00:57:32,280 Malloc აქ არ არის, რომ მყარი. 1220 00:57:32,280 --> 00:57:35,260 გამოყენების malloc აქ არ არის რომ დამაჯერებელი, რადგან ეს 1221 00:57:35,260 --> 00:57:36,500 მხოლოდ ადგილობრივი ცვლადი. 1222 00:57:36,500 --> 00:57:40,970 >> სტუდენტური ასე რომ შეგიძლიათ გააკეთოთ char star Ptr შეადგენს მიესალმები? 1223 00:57:40,970 --> 00:57:41,400 >> JASON HIRSCHHORN: Oh. 1224 00:57:41,400 --> 00:57:43,300 ამიტომ, ჩვენ ვაპირებთ, რომ ახლა დავუბრუნდეთ თქვენს საწყის კითხვაზე. 1225 00:57:43,300 --> 00:57:46,885 მე ვფიქრობ, თქვენ არ დაკმაყოფილდა ჩემი პასუხი. 1226 00:57:46,885 --> 00:57:48,220 OK? 1227 00:57:48,220 --> 00:57:49,226 ასე? 1228 00:57:49,226 --> 00:57:49,682 >> სტუდენტი: Yeah. 1229 00:57:49,682 --> 00:57:50,932 დაველოდოთ. 1230 00:57:50,932 --> 00:57:54,090 1231 00:57:54,090 --> 00:57:57,850 >> JASON HIRSCHHORN: სად გსურთ ამობეჭდოთ? 1232 00:57:57,850 --> 00:58:00,026 ამიტომ ჩვენ ამობეჭდოთ string ასე? 1233 00:58:00,026 --> 00:58:06,380 1234 00:58:06,380 --> 00:58:07,630 >> სტუდენტური საინტერესო. 1235 00:58:07,630 --> 00:58:09,900 1236 00:58:09,900 --> 00:58:14,285 >> JASON HIRSCHHORN: ასე რომ, ეს ამბობს, რომ ეს არგუმენტი აქვს ტიპის ხასიათი. 1237 00:58:14,285 --> 00:58:17,200 1238 00:58:17,200 --> 00:58:18,620 ასე რომ, ეს უნდა იყოს ხასიათი. 1239 00:58:18,620 --> 00:58:25,170 1240 00:58:25,170 --> 00:58:26,280 >> სტუდენტი: Just იღებს პირველი. 1241 00:58:26,280 --> 00:58:28,610 >> JASON HIRSCHHORN: ასე რომ, ეს არის ის, რაც ვთქვი. 1242 00:58:28,610 --> 00:58:34,240 როგორც ვთქვი, ეს არ არის შენახვის string შიგნით ცვლადის მაჩვენებელი. 1243 00:58:34,240 --> 00:58:35,120 ის შენახვა - 1244 00:58:35,120 --> 00:58:36,350 >> სტუდენტი: პირველი ღირებულება სიმებიანი. 1245 00:58:36,350 --> 00:58:40,810 >> JASON HIRSCHHORN: მისამართი პირველი ღირებულება სიმებიანი. 1246 00:58:40,810 --> 00:58:46,940 თუ ჩვენ უნდა ამობეჭდოთ ეს, ჩვენ მიღების ღირებულება შიგნით მაჩვენებელი. 1247 00:58:46,940 --> 00:58:51,005 და ვნახავთ, რომ ეს არის, მართლაც, მეხსიერების მისამართზე. 1248 00:58:51,005 --> 00:58:53,595 1249 00:58:53,595 --> 00:58:56,440 >> ამჯამად რომ აზრი? 1250 00:58:56,440 --> 00:58:56,940 უკაცრავად. 1251 00:58:56,940 --> 00:58:58,996 დაველოდოთ, ამჯამად რომ უპასუხოს თქვენს კითხვაზე, თუმცა? 1252 00:58:58,996 --> 00:58:59,790 >> სტუდენტი: Yeah. 1253 00:58:59,790 --> 00:59:05,830 >> JASON HIRSCHHORN: ეს ხაზი კოდი არის შექმნა სიმებიანი და შემდეგ სხვა 1254 00:59:05,830 --> 00:59:09,115 ცვლადი მაჩვენებელი, რომელიც მიუთითებს რომ სიმებიანი, რომ მასივი. 1255 00:59:09,115 --> 00:59:14,320 1256 00:59:14,320 --> 00:59:14,980 ჰო. 1257 00:59:14,980 --> 00:59:19,200 >> სტუდენტი: ასე რომ, თუ ჩვენ წავიდა ერთი მეხსიერება მიმართოს უფრო, რომ მივიღებთ h? 1258 00:59:19,200 --> 00:59:21,990 1259 00:59:21,990 --> 00:59:23,150 ამ დრომდე ვერ მოხერხდა ინახება როგორც სიმებიანი? 1260 00:59:23,150 --> 00:59:24,400 >> JASON HIRSCHHORN: Like, ჩვენ - 1261 00:59:24,400 --> 00:59:28,540 1262 00:59:28,540 --> 00:59:30,790 ასე რომ ეს არის ღირებული გააკეთოს. 1263 00:59:30,790 --> 00:59:33,780 ეს არის წერტილი არითმეტიკა, რომელიც თქვენ ბიჭები მინახავს ადრე და უნდა იყოს 1264 00:59:33,780 --> 00:59:35,550 შედარებით კომფორტულად. 1265 00:59:35,550 --> 00:59:36,905 ეს არის akin რომ წერა - 1266 00:59:36,905 --> 00:59:41,980 1267 00:59:41,980 --> 00:59:46,350 თუ ჩვენ წერენ ეს ხაზი კოდი, ჩვენ ვნახეთ მასივი notation ადრე. 1268 00:59:46,350 --> 00:59:55,900 ეს უნდა მოგვცეს მეორე ღირებულება ამ მასივი, თ. 1269 00:59:55,900 --> 01:00:05,010 >> იმ შემთხვევაში, თუ ეს გავაკეთეთ, ეს უნდა მისცეს us მეორე მნიშვნელობა, რომ მასივი. 1270 01:00:05,010 --> 01:00:08,320 იმის გამო, რომ იგი აპირებს არ ხსოვნას მისამართი პირველი რამ, მაგრამ 1271 01:00:08,320 --> 01:00:10,530 მეხსიერების მისამართი რამ დასრულდა. 1272 01:00:10,530 --> 01:00:14,360 და შემდეგ ვარსკვლავი ოპერატორი dereferences რომ მომცეთ. 1273 01:00:14,360 --> 01:00:16,940 და ისევ, ვნახოთ. 1274 01:00:16,940 --> 01:00:18,664 მივიღებთ h ერთხელ. 1275 01:00:18,664 --> 01:00:20,980 >> სტუდენტი: რა აკეთებს dereference ნიშნავს? 1276 01:00:20,980 --> 01:00:23,650 >> JASON HIRSCHHORN: dereference არის ლამაზი სიტყვა წასვლა. 1277 01:00:23,650 --> 01:00:26,390 წასვლა რომ და კიდევ რა იქ არის dereference მაჩვენებელი. 1278 01:00:26,390 --> 01:00:28,240 უბრალოდ ლამაზი სიტყვა, რომ. 1279 01:00:28,240 --> 01:00:29,986 >> სტუდენტი: თუ გვინდოდა ბეჭდვა მთელი სიმებიანი, შეგვეძლო 1280 01:00:29,986 --> 01:00:31,930 გავაკეთოთ ampersand მაჩვენებელი? 1281 01:00:31,930 --> 01:00:33,490 >> JASON HIRSCHHORN: OK, ჩვენ ვართ აპირებს პაუზის აქ. 1282 01:00:33,490 --> 01:00:35,480 ჩვენ ვაპირებთ დასრულდება აქ. 1283 01:00:35,480 --> 01:00:41,760 Ampersand გაძლევთ მისამართი ადგილმდებარეობა, ასე რომ, როდესაც თქვენ ampersand of 1284 01:00:41,760 --> 01:00:44,080 ცვლადი, ეს გაძლევთ მისამართი სადაც, რომ ცვლადი ინახება. 1285 01:00:44,080 --> 01:00:48,580 Ampersand მაჩვენებელი მოგცემთ მისამართი Ptr სადაც Ptr არის მეხსიერებაში. 1286 01:00:48,580 --> 01:00:50,140 >> ჩვენ არ ვაპირებთ წასვლა ამ მაგალითად. 1287 01:00:50,140 --> 01:00:52,640 შეგიძლიათ გაერკვნენ ამ რამ საკუთარ. 1288 01:00:52,640 --> 01:00:55,740 თუმცა ისევ და ისევ, ეს შეიძლება იყოს verging ცოტა მიღმა, რაც თქვენ უნდა იცოდეს 1289 01:00:55,740 --> 01:00:58,000 ფარგლებში ამ შუალედური - 1290 01:00:58,000 --> 01:00:59,070 ან ამ ინტელექტუალური, საკმაოდ. 1291 01:00:59,070 --> 01:01:00,270 უკაცრავად. 1292 01:01:00,270 --> 01:01:03,770 >> ჩვენ ვაპირებთ, რომ გადაადგილება, რადგან მე მინდა ერთი კოდირების პრობლემა 1293 01:01:03,770 --> 01:01:05,100 სანამ დრო არის up. 1294 01:01:05,100 --> 01:01:09,340 და ჩვენ ვაპირებთ კოდი რა ვფიქრობ არის ყველაზე დამაჯერებელი ამ 1295 01:01:09,340 --> 01:01:11,020 მაგალითები, atoi. 1296 01:01:11,020 --> 01:01:14,520 ასე რომ ეს იყო კითხვა ვიქტორინა ორი წლის წინ. 1297 01:01:14,520 --> 01:01:17,810 და მე ეს ფორუმში აქ. 1298 01:01:17,810 --> 01:01:20,680 >> ხალხი სთხოვა ვიქტორინა - 1299 01:01:20,680 --> 01:01:23,640 მათ მიეცათ ცოტა მეტი tesxt in კითხვაზე, მაგრამ მე აღმოფხვრილი 1300 01:01:23,640 --> 01:01:26,640 ტექსტის რადგან ეს იყო ზედმეტი ჩვენი მიზნებისთვის ახლა. 1301 01:01:26,640 --> 01:01:29,180 ეს იყო მხოლოდ ზოგიერთი ფონზე რა atoi გააკეთა. 1302 01:01:29,180 --> 01:01:31,425 მაგრამ თქვენ იცით, და ძალიან იცნობს atoi. 1303 01:01:31,425 --> 01:01:35,620 >> მე გთავაზობთ კოდექსს on ფურცელზე. 1304 01:01:35,620 --> 01:01:39,310 მე ასევე გთავაზობთ გამოიყენოთ სტრატეგია რომ ჩვენ წავიდა მეტი 1305 01:01:39,310 --> 01:01:41,040 ბევრი ჩვენს განყოფილებაში. 1306 01:01:41,040 --> 01:01:44,130 პირველ რიგში, დარწმუნდით გესმით რა atoi აკეთებს. 1307 01:01:44,130 --> 01:01:47,580 ფრე სურათის ან ამუშავება ზოგიერთი ფსიქიკური იმიჯი იგი თქვენს ხელმძღვანელი. 1308 01:01:47,580 --> 01:01:51,120 შემდეგი, წერენ გარეთ pseudocode ამ. 1309 01:01:51,120 --> 01:01:53,120 On ვიქტორინა, თუ ყველა თქვენ არის pseudocode, მინიმუმ თქვენ 1310 01:01:53,120 --> 01:01:54,550 დააყენა რაღაც down. 1311 01:01:54,550 --> 01:02:00,070 და შემდეგ განვსაზღვრავთ, რომ pseudocode გადატანა C. თუ თქვენ გაქვთ გამშვები თქვენი 1312 01:02:00,070 --> 01:02:03,760 pseudocode, როგორიცაა შეამოწმეთ თუ რამე არის 1, რომელიც რუკები გადატანა, თუ 1313 01:02:03,760 --> 01:02:05,750 მდგომარეობა და სხვ. 1314 01:02:05,750 --> 01:02:07,850 და ბოლოს, კოდექსის პროგრამა C. 1315 01:02:07,850 --> 01:02:15,000 >> ასე რომ დავუბრუნდეთ atoi და მიიღოს ხუთი წუთის კოდექსში ამ ფურცელზე 1316 01:02:15,000 --> 01:02:19,480 ქაღალდი, რომელიც ალბათ შესახებ დროის თქვენ უნდა მიიღოს 1317 01:02:19,480 --> 01:02:21,260 ვიქტორინა კოდი atoi. 1318 01:02:21,260 --> 01:02:27,060 ხუთიდან 15 წუთის შემდეგ, ხუთიდან 12, ხუთ 10 წუთის განმავლობაში, დაახლოებით ოდენობით 1319 01:02:27,060 --> 01:02:30,150 დრო ნეტავ დაიხარჯოს ეს კითხვა ვიქტორინა. 1320 01:02:30,150 --> 01:02:31,670 ასე რომ ხუთ წუთში ახლა, გთხოვთ. 1321 01:02:31,670 --> 01:02:35,957 და თუ თქვენ გაქვთ რაიმე შეკითხვები, ამაღლება თქვენი მხრივ, და მე მოდის გარშემო. 1322 01:02:35,957 --> 01:06:39,570 1323 01:06:39,570 --> 01:06:41,066 >> [SIDE საუბრები] 1324 01:06:41,066 --> 01:08:35,279 1325 01:08:35,279 --> 01:08:37,580 >> JASON HIRSCHHORN: OK, ასე რომ, რომ იყო ხუთი წუთის განმავლობაში. 1326 01:08:37,580 --> 01:08:39,880 ეს იყო ალბათ ოდენობის შესახებ დრო ნეტავ გაატაროთ, რომ ვიქტორინა, 1327 01:08:39,880 --> 01:08:42,120 იქნებ დაბალი ბოლოს იმ დროს. 1328 01:08:42,120 --> 01:08:44,010 ჩვენ recap ცოტა. 1329 01:08:44,010 --> 01:08:45,740 დავიწყოთ კოდირების ეს. 1330 01:08:45,740 --> 01:08:49,479 და თუ ჩვენ არ მიიღოთ ყველა გზა, პასუხები ამ და ამ 1331 01:08:49,479 --> 01:08:54,189 ინტელექტუალური კითხვა არსებობს, კიდევ ერთხელ, 2011 წლის შემოდგომაზე, როდესაც ამ კითხვაზე 1332 01:08:54,189 --> 01:08:54,913 გამოჩნდა ვიქტორინა. 1333 01:08:54,913 --> 01:08:57,830 >> და ეს იყო ღირს რვა ქულა on ვიქტორინა შემდეგ. 1334 01:08:57,830 --> 01:09:01,140 რვა რაოდენობა არის მაღალი ბოლოს თანხის რაოდენობა, რაღაც ღირს. 1335 01:09:01,140 --> 01:09:04,790 საუკეთესო კითხვები სპექტრი ერთი ექვსი ქულით. 1336 01:09:04,790 --> 01:09:08,500 ასე რომ, ეს უფრო რთული კითხვაზე, დარწმუნებული ვარ. 1337 01:09:08,500 --> 01:09:09,750 შეიძლება ვინმეს ჩემთვის დაიწყო? 1338 01:09:09,750 --> 01:09:13,260 1339 01:09:13,260 --> 01:09:15,380 >> საერთოდ, რას აპირებს გსურთ ამ 1340 01:09:15,380 --> 01:09:17,550 ფუნქციონირებს atoi, ლოგიკურად? 1341 01:09:17,550 --> 01:09:19,569 რა გვინდა გავაკეთოთ? 1342 01:09:19,569 --> 01:09:22,279 ამიტომ, ჩვენ ვაპირებთ დავწეროთ ზოგიერთი pseudocode. 1343 01:09:22,279 --> 01:09:24,090 >> სტუდენტი: Convert გმირები თარგმნეს რიცხვებით. 1344 01:09:24,090 --> 01:09:26,700 >> JASON HIRSCHHORN: Convert გმირები თარგმნეს რიცხვებით. 1345 01:09:26,700 --> 01:09:27,479 OK. 1346 01:09:27,479 --> 01:09:30,870 ასე რომ, რამდენი გმირები ვართ ჩვენ აპირებთ უნდა გაიაროს? 1347 01:09:30,870 --> 01:09:32,295 >> სტუდენტური ყველა მათგანი. 1348 01:09:32,295 --> 01:09:34,100 >> სტუდენტი: ყველა პერსონაჟი სიმებიანი. 1349 01:09:34,100 --> 01:09:35,540 >> JASON HIRSCHHORN: ყველა სიმბოლოების string. 1350 01:09:35,540 --> 01:09:42,180 ასე რომ, თუ გვინდოდა გავლა ყველა პერსონაჟი სიმებიანი, რა არის რამ 1351 01:09:42,180 --> 01:09:44,560 in C ჩვენ ვნახეთ, რომ საშუალება მისცა us გაიაროს ყველა 1352 01:09:44,560 --> 01:09:45,939 პერსონაჟი სიმებიანი? 1353 01:09:45,939 --> 01:09:46,819 >> სტუდენტური: A for loop. 1354 01:09:46,819 --> 01:09:48,069 >> JASON HIRSCHHORN: A for loop. 1355 01:09:48,069 --> 01:09:52,020 1356 01:09:52,020 --> 01:09:55,330 ამიტომ, ჩვენ ვაპირებთ, რომ loop მეშვეობით ყველა პერსონაჟი s. 1357 01:09:55,330 --> 01:10:00,940 >> მერე რა ჩვენ ვაპირებთ გსურთ როდესაც მივიღებთ კონკრეტული ხასიათი? 1358 01:10:00,940 --> 01:10:02,480 ამბობენ, რომ ჩვენ ვიღებთ მიიღო 90. 1359 01:10:02,480 --> 01:10:03,460 მივიღებთ 9. 1360 01:10:03,460 --> 01:10:04,240 ეს ხასიათი. 1361 01:10:04,240 --> 01:10:07,440 რა გვინდა გავაკეთოთ ერთად რომ ხასიათი 9? 1362 01:10:07,440 --> 01:10:10,082 >> სტუდენტი: გამოკლება მას ხასიათი 0? 1363 01:10:10,082 --> 01:10:11,860 >> სტუდენტური სანიშნეს 0? 1364 01:10:11,860 --> 01:10:13,350 >> JASON HIRSCHHORN: გამოკლება ეს ხასიათი 0? 1365 01:10:13,350 --> 01:10:13,800 >> სტუდენტი: Yeah. 1366 01:10:13,800 --> 01:10:15,573 >> JASON HIRSCHHORN: რატომ გსურთ ამის გაკეთება? 1367 01:10:15,573 --> 01:10:16,560 >> სტუდენტი: [INAUDIBLE] 1368 01:10:16,560 --> 01:10:17,010 ღირებულება. 1369 01:10:17,010 --> 01:10:18,380 მისი int ღირებულება. 1370 01:10:18,380 --> 01:10:21,580 >> JASON HIRSCHHORN: OK, ასე რომ ავიღებთ ხასიათი 9, გამოვაკლოთ ეს 1371 01:10:21,580 --> 01:10:25,820 ხასიათი: 0 მისაღებად რეალური რიცხვი 9. 1372 01:10:25,820 --> 01:10:27,070 ტკბილი. 1373 01:10:27,070 --> 01:10:31,255 1374 01:10:31,255 --> 01:10:37,000 და იცით, რომ ხასიათი 9 მინუს 0 გმირი არის 9? 1375 01:10:37,000 --> 01:10:39,222 რა გრაფიკი არ შეხედავთ? 1376 01:10:39,222 --> 01:10:43,130 >> სტუდენტი: არსებობს ლოგიკურად ცხრა ადგილები შორის 9 და 0. 1377 01:10:43,130 --> 01:10:44,620 ან თქვენ შეიძლება შევხედოთ ASCII მაგიდასთან. 1378 01:10:44,620 --> 01:10:45,120 >> JASON HIRSCHHORN: ASCII მაგიდასთან. 1379 01:10:45,120 --> 01:10:46,490 მაგრამ დიახ, თქვენ სწორი ისევე. 1380 01:10:46,490 --> 01:10:47,780 ასე რომ, ჩვენ სხვაობა 0. 1381 01:10:47,780 --> 01:10:49,010 ახლა ჩვენ გვაქვს მთელი რიცხვი 9. 1382 01:10:49,010 --> 01:10:49,970 და რა გვინდა რომ? 1383 01:10:49,970 --> 01:10:54,970 თუ ჩვენ 90, ეს პირველი რიცხვი ჩვენ, რა გვინდა? 1384 01:10:54,970 --> 01:10:58,180 >> სტუდენტი: მე მინდა დააყენოს დროებითი რიცხვი array, მაშინ მათემატიკის მას 1385 01:10:58,180 --> 01:11:02,088 შემდეგ მიიღოს იგი დასრულდა. 1386 01:11:02,088 --> 01:11:03,020 >> JASON HIRSCHHORN: OK. 1387 01:11:03,020 --> 01:11:06,990 >> სტუდენტი: თქვენ შეგიძლიათ დაიწყოთ დასასრულს array და შემდეგ წინსვლა ასე 1388 01:11:06,990 --> 01:11:10,350 რომ ყოველ ჯერზე თქვენ წინსვლა, თქვენ გავამრავლოთ იგი 10. 1389 01:11:10,350 --> 01:11:10,830 >> JASON HIRSCHHORN: OK. 1390 01:11:10,830 --> 01:11:12,250 რომ ჟღერს საკმაოდ მყარი იდეა. 1391 01:11:12,250 --> 01:11:16,040 ჩვენ შეგვიძლია დავიწყოთ ბოლოს ჩვენი მასივი, და ჩვენ შეგვიძლია გამოვიყენოთ strleng. 1392 01:11:16,040 --> 01:11:17,030 ჩვენ შეგვიძლია გამოვიყენოთ strleng აქ. 1393 01:11:17,030 --> 01:11:18,870 ჩვენ კიდევ სიგრძეზე ჩვენი სიმებიანი. 1394 01:11:18,870 --> 01:11:20,100 ჩვენ ვიწყებთ დასასრულს. 1395 01:11:20,100 --> 01:11:29,170 და + პირველი, ჩვენ უბრალოდ მიიღოს, რომ მთელი რიცხვი, და შესაძლოა ჩვენ ვქმნით მოსწონს 1396 01:11:29,170 --> 01:11:32,270 ახალი რიცხვი ცვლადი up დაბრუნება, სადაც ჩვენ შენახვის ყველაფერი. 1397 01:11:32,270 --> 01:11:37,340 ასე რომ, ჩვენ loop მეშვეობით ყველა char in s from უკან წინ, ჩვენ სხვაობა 0, და 1398 01:11:37,340 --> 01:11:42,790 მაშინ ჩვენ მას, და დამოკიდებულია სადაც ეს არის, ჩვენ გავამრავლოთ ის 1399 01:11:42,790 --> 01:11:45,860 რომელსაც ძალა 10. 1400 01:11:45,860 --> 01:11:50,644 იმის გამო, რომ პირველი, რაც ჩვენ გავამრავლოთ rightmost ხასიათი? 1401 01:11:50,644 --> 01:11:51,440 >> სტუდენტი: 10 დან 0. 1402 01:11:51,440 --> 01:11:53,170 >> JASON HIRSCHHORN: 10 დან 0. 1403 01:11:53,170 --> 01:11:56,010 რა გავამრავლებთ მეორე rightmost ხასიათი? 1404 01:11:56,010 --> 01:11:57,450 >> სტუდენტი: [INAUDIBLE]. 1405 01:11:57,450 --> 01:11:57,960 >> JASON HIRSCHHORN: What? 1406 01:11:57,960 --> 01:11:59,150 >> სტუდენტი: 10 1. 1407 01:11:59,150 --> 01:12:00,420 >> JASON HIRSCHHORN: 10 1. 1408 01:12:00,420 --> 01:12:03,754 მესამე rightmost ხასიათი? 1409 01:12:03,754 --> 01:12:04,580 >> სტუდენტი: 10 2. 1410 01:12:04,580 --> 01:12:05,350 >> JASON HIRSCHHORN: 10 2. 1411 01:12:05,350 --> 01:12:07,200 >> სტუდენტი: უკაცრავად, მე არ მესმის რას ვაკეთებთ აქ. 1412 01:12:07,200 --> 01:12:08,640 >> JASON HIRSCHHORN: OK, მოდით დავუბრუნდეთ, მაშინ. 1413 01:12:08,640 --> 01:12:12,500 ამიტომ, ჩვენ ვაპირებთ, რომ მიიღოთ გავიდა სიმებიანი. 1414 01:12:12,500 --> 01:12:14,470 იმის გამო, რომ ჩვენ წერილობით atoi. 1415 01:12:14,470 --> 01:12:15,260 ასე რომ, ჩვენ მივიღებთ გავიდა სიმებიანი. 1416 01:12:15,260 --> 01:12:17,640 ამბობენ, რომ ჩვენ ვიღებთ გავიდა სიმებიანი 90. 1417 01:12:17,640 --> 01:12:19,930 >> პირველი, რაც ჩვენ ვაპირებთ გავაკეთოთ არის ახალი რიცხვი ცვლადი, რომ ჩვენ 1418 01:12:19,930 --> 01:12:22,150 უბრალოდ აპირებს შექმნას ჩვენი ახალი რიცხვი. 1419 01:12:22,150 --> 01:12:24,630 ეს არის ის, რასაც ჩვენ ვაპირებთ დაბრუნების დასასრულს. 1420 01:12:24,630 --> 01:12:30,110 ჩვენ უნდა გაიაროს ყველა პერსონაჟი სიმებიანი, რადგან ჩვენ გადაწყვეტილი 1421 01:12:30,110 --> 01:12:34,430 რომ ჩვენ უნდა შეეხოთ თითოეული და შემდეგ დაამატოთ ეს ჩვენი ახალი რიცხვი. 1422 01:12:34,430 --> 01:12:36,330 >> მაგრამ ჩვენ არ შეგვიძლია უბრალოდ დაამატე, როგორც ნომერი. 1423 01:12:36,330 --> 01:12:38,270 ჩვენ არ შეგვიძლია უბრალოდ მიიღოს 9 რჩეულებში 9 ჩვენი რიცხვი. 1424 01:12:38,270 --> 01:12:40,560 ეს დამოკიდებულია იმაზე, თუ რა ადგილი ეს არის სიმებიანი. 1425 01:12:40,560 --> 01:12:42,960 ჩვენ ვაპირებთ, რომ უნდა გავამრავლოთ ეს ძალა 10. 1426 01:12:42,960 --> 01:12:45,580 იმიტომ, რომ ის, თუ როგორ ბაზაზე 10 სამუშაოებს. 1427 01:12:45,580 --> 01:12:49,050 >> ამიტომ, ჩვენ ვაპირებთ, რომ მიიღოს ფაქტობრივი ხასიათი, ან ფაქტობრივი რიცხვი 1428 01:12:49,050 --> 01:12:53,860 ნომერი მიერ გამოკლება ხასიათი 0 ეხლა ხასიათი 9 როგორიცაა გავაკეთეთ 1429 01:12:53,860 --> 01:12:57,560 გამოკლება ხასიათი კაპიტალის დან რასაც ხასიათი გვქონდა ერთი 1430 01:12:57,560 --> 01:12:58,120 იმ პრობლემებზე. 1431 01:12:58,120 --> 01:13:04,190 ასე რომ, ჩვენ რეალურად მიიღოთ ნომერი 0 დან 9 შენახული როგორც რეალური ნომერი, და ჩვენ 1432 01:13:04,190 --> 01:13:07,590 გავამრავლებ მას ძალა 10 დამოკიდებულია სადაც ჩვენ ვართ სიმებიანი. 1433 01:13:07,590 --> 01:13:19,430 1434 01:13:19,430 --> 01:13:22,575 და მაშინ ჩვენ ვაპირებთ, რომ დაამატოთ ეს უკან ჩვენს new რიცხვი ცვლადი. 1435 01:13:22,575 --> 01:13:32,840 1436 01:13:32,840 --> 01:13:37,890 >> რა ეს გამოიყურება ასე იქნება იყოს - ჩვენ მიაპყროს აქ. 1437 01:13:37,890 --> 01:13:40,086 იმ შემთხვევაში, თუ ჩვენ მივიღებთ გავიდა სიმებიანი 90 - 1438 01:13:40,086 --> 01:13:41,336 >> სტუდენტი: [INAUDIBLE]. 1439 01:13:41,336 --> 01:13:43,190 1440 01:13:43,190 --> 01:13:45,540 >> JASON HIRSCHHORN მაგრამ atoi იღებს სიმებიანი. 1441 01:13:45,540 --> 01:13:46,350 ამიტომ, ჩვენ ვაპირებთ გავლა ჰოლდინგი. 1442 01:13:46,350 --> 01:13:49,900 ჩვენ კიდევ გავიდა 90. 1443 01:13:49,900 --> 01:13:51,540 ჩვენ წავიდეთ უკან ფრონტზე. 1444 01:13:51,540 --> 01:13:53,920 ავიღებთ 0. 1445 01:13:53,920 --> 01:13:55,080 >> სტუდენტი: მე უკაცრავად. 1446 01:13:55,080 --> 01:13:55,880 იქნებ ეს არის სულელური. 1447 01:13:55,880 --> 01:13:59,440 იმ შემთხვევაში, თუ ჩვენ ვიღებთ გავიდა სიმებიანი, რატომ არის 90 რა ვართ 1448 01:13:59,440 --> 01:14:00,260 მიღების გავიდა? 1449 01:14:00,260 --> 01:14:03,160 იმის გამო, რომ 90 არის მთელი რიცხვი. 1450 01:14:03,160 --> 01:14:06,820 >> JASON HIRSCHHORN: იმის გამო, atoi იღებს სიმებიანი და აქცევს მას მთელი რიცხვი 1451 01:14:06,820 --> 01:14:08,320 წარმომადგენლობის რომ სიმებიანი. 1452 01:14:08,320 --> 01:14:13,650 მაგრამ string 90 არ არის მთელი რიცხვი 90 ან რაოდენობის 90. 1453 01:14:13,650 --> 01:14:17,920 სიმებიანი 90 არის მასივი ორი, ან სამი გმირები, უფრო სწორად, 9 1454 01:14:17,920 --> 01:14:22,740 ხასიათი, 0 ხასიათი, და backslash 0 ხასიათი. 1455 01:14:22,740 --> 01:14:26,260 >> და ჩვენ წერილობით atoi რადგან, მაგალითად, როდესაც თქვენ მიიღოს ბრძანება 1456 01:14:26,260 --> 01:14:30,230 ხაზი არგუმენტი, და ეს შენახული argv, ის შენახული როგორც სიმებიანი. 1457 01:14:30,230 --> 01:14:32,940 მაგრამ თუ გვინდა, რომ მკურნალობა, როგორც ნომერი, ან, თქვენ უნდა გარდაქმნას იგი 1458 01:14:32,940 --> 01:14:34,700 ფაქტობრივი რიცხვი. 1459 01:14:34,700 --> 01:14:37,210 რომელიც ჩვენ გავაკეთეთ ჩვენი პრობლემა კომპლექტი. 1460 01:14:37,210 --> 01:14:38,800 რომელიც ჩვენ გავაკეთეთ მთელი რიგი ჩვენი პრობლემა კომპლექტი. 1461 01:14:38,800 --> 01:14:41,690 ყველას, რომელსაც მთელი როგორც ბრძანების არგუმენტი. 1462 01:14:41,690 --> 01:14:46,490 ასე რომ, ამიტომ ჩვენი atoi ფუნქცია იღებს სიმებიანი. 1463 01:14:46,490 --> 01:14:51,910 >> ასე რომ კიდევ ერთხელ, ჩვენი მაგალითად აქ, ჩვენ აპირებს ბოლო. 1464 01:14:51,910 --> 01:14:55,050 ჩვენ ვაპირებთ გამოვაკლოთ ხასიათი 0 მისგან, რადგან პერსონაჟი 0 1465 01:14:55,050 --> 01:14:58,810 ჩამოჭრილია მთლიანი თანხიდან by ხასიათი 0 გაძლევთ ფაქტობრივი რაოდენობის 0, შესაბამისად, 1466 01:14:58,810 --> 01:15:00,950 ASCII მათემატიკის რასაც ჩვენ ვაკეთებთ. 1467 01:15:00,950 --> 01:15:04,870 >> იმის გამო, რომ გმირები წარმოდგენილია როგორც განსხვავებული, ვიდრე მათი - 1468 01:15:04,870 --> 01:15:08,830 ხასიათი, მაგალითად, ამას 97. 1469 01:15:08,830 --> 01:15:10,260 ეს არ არის - oops! 1470 01:15:10,260 --> 01:15:13,290 ეს არ არის, რასაც თქვენ მოელოდა ეს უნდა იყოს, 0, მაგალითად. 1471 01:15:13,290 --> 01:15:16,200 ასე რომ თქვენ უნდა სხვაობა ხასიათი მიიღოს 0. 1472 01:15:16,200 --> 01:15:18,950 >> ამიტომ, ჩვენ ვაპირებთ, რომ გავაკეთოთ, რომ აქ მიიღოს ფაქტობრივი ნომერი. 1473 01:15:18,950 --> 01:15:22,560 და მაშინ ჩვენ ვაპირებთ გავამრავლოთ ის მიერ ძალა 10 დამოკიდებულია, სადაც ეს 1474 01:15:22,560 --> 01:15:27,030 არის ტექსტი, და შემდეგ მიიღოს, რომ და დაამატოთ ეს ჩვენი ადგილის მფლობელი 1475 01:15:27,030 --> 01:15:32,520 ცვლადი ასე რომ, ჩვენ შეიძლება ამუშავება ჩვენი საბოლოო new რიცხვი. 1476 01:15:32,520 --> 01:15:35,080 ამჯამად რომ აზრი, რომ ყველასთვის? 1477 01:15:35,080 --> 01:15:37,730 >> ასე რომ, ჩვენ არ ვაპირებთ კოდექსს ახლა, რადგან ჩვენ 1478 01:15:37,730 --> 01:15:38,830 მიღების მოკლე დროში. 1479 01:15:38,830 --> 01:15:40,860 მე ბოდიშს დრო, რომ. 1480 01:15:40,860 --> 01:15:44,620 მაგრამ ეს არის ის, რაც, იმედია, თქვენ ამას გამოუვა on ვიქტორინა - ზე 1481 01:15:44,620 --> 01:15:47,710 სულ ცოტა, ამ pseudocode წერილობითი out. 1482 01:15:47,710 --> 01:15:50,840 >> და შემდეგ, თუ ჩვენ უნდა დაწეროთ pseudocode, ფაქტობრივად, ჩვენ შეგვიძლია ამის გაკეთება 1483 01:15:50,840 --> 01:15:51,490 საკმაოდ სწრაფად. 1484 01:15:51,490 --> 01:15:55,230 თითოეული ხაზი კომენტარი ჩვენ დავწერეთ აქ ითარგმნება შესახებ 1485 01:15:55,230 --> 01:15:56,970 ერთი ხაზი C კოდი. 1486 01:15:56,970 --> 01:16:01,780 გამოცხადების ახალი ცვლადი, წერილობით loop, ზოგიერთი გამოკლება, ზოგიერთი 1487 01:16:01,780 --> 01:16:07,070 გამრავლება, და ზოგიერთი დავალება. 1488 01:16:07,070 --> 01:16:09,020 ჩვენ გვინდა ალბათ ასევე მინდა დაწერა დაბრუნების ონლაინ. 1489 01:16:09,020 --> 01:16:12,040 ჩვენ შეიძლება ასევე სურს დააყენოს ზოგიერთი ამოწმებს აქ. 1490 01:16:12,040 --> 01:16:12,655 ჰო. 1491 01:16:12,655 --> 01:16:15,720 >> სტუდენტი: ასე შეგვიძლია მკურნალობა s როგორც ფაქტობრივი სიმებიანი? 1492 01:16:15,720 --> 01:16:18,730 იმიტომ, რომ მე ვიცი, რომ ეს უბრალოდ მისამართზე. 1493 01:16:18,730 --> 01:16:22,090 მსგავსად, როგორ თქვენ მიიღებთ ხანგრძლივობა სიმებიანი მიმდინარეობს გაიარა? 1494 01:16:22,090 --> 01:16:25,310 >> JASON HIRSCHHORN: ასე როგორ გააკეთა სიგრძეზე სიმებიანი? 1495 01:16:25,310 --> 01:16:25,830 Strlen. 1496 01:16:25,830 --> 01:16:26,660 >> სტუდენტი: strlen, yeah. 1497 01:16:26,660 --> 01:16:30,550 მაგრამ შეგიძლიათ განათავსოთ s როგორც არგუმენტი, რომ? 1498 01:16:30,550 --> 01:16:34,620 >> JASON HIRSCHHORN: ასე strlen იღებს char ვარსკვლავი. 1499 01:16:34,620 --> 01:16:38,090 და იგი შემდეგნაირად, რომ char ვარსკვლავი, და ეს ინახავს დათვლის სანამ იგი იღებს, რათა 1500 01:16:38,090 --> 01:16:41,865 backslash 0. strlen იყო, ფაქტობრივად, ერთი სხვა პროგრამების ჩვენ 1501 01:16:41,865 --> 01:16:42,850 მიდიოდნენ კოდი. 1502 01:16:42,850 --> 01:16:44,560 ეს არის კიდევ ერთი კარგი ერთი კოდი. 1503 01:16:44,560 --> 01:16:47,270 რომ ერთი ცოტა უფრო ადვილია, რადგან თუ თქვენ აპირებს ვიფიქროთ, რომ 1504 01:16:47,270 --> 01:16:47,830 კონცეპტუალურად - 1505 01:16:47,830 --> 01:16:51,620 მე უბრალოდ განაცხადა, რომ ხმამაღლა - strlen შემდეგნაირად მაჩვენებელი და გრძელდება და 1506 01:16:51,620 --> 01:16:54,210 დათვლა და შენახვა ტრეკზე სანამ მიაღწევს backslash 0. 1507 01:16:54,210 --> 01:16:56,530 >> სტუდენტი: დიახ, მივიღე ეს. 1508 01:16:56,530 --> 01:17:00,200 >> JASON HIRSCHHORN: ასე რომ, საუკეთესო გისურვებთ ვიქტორინა 0 ხვალ. 1509 01:17:00,200 --> 01:17:03,170 თუ თქვენ გაქვთ რაიმე შეკითხვები, მე გარეთ შემდეგ. 1510 01:17:03,170 --> 01:17:05,610 მოგერიდებათ მომაწოდეთ. 1511 01:17:05,610 --> 01:17:08,480 მივაწვდინოთ თქვენი საკუთარი TF თუ თქვენ არ არის ჩემი განყოფილებიანი, ან კიდევ ჩემი 1512 01:17:08,480 --> 01:17:10,005 მქონ თუ გნებავთ. 1513 01:17:10,005 --> 01:17:13,140 >> თუ გსურთ freak out და უბრალოდ გამოგვიგზავნეთ me ელ freakout ელ, მე 1514 01:17:13,140 --> 01:17:16,710 გამოგიგზავნით უკან, ისევე, smiley face, ან, ისევე, ხუმრობა ან რამე. 1515 01:17:16,710 --> 01:17:18,190 ასე რომ შეგიძლიათ გააკეთოთ, რომ ისევე. 1516 01:17:18,190 --> 01:17:20,750 წარმატებებს გისურვებთ ისევ და ისევ, და მე რომ თქვენ ყველა მომავალ კვირას. 1517 01:17:20,750 --> 01:17:23,435