1 00:00:00,000 --> 00:00:01,110 >> [संगीत खेल] 2 00:00:01,110 --> 00:00:10,567 3 00:00:10,567 --> 00:00:11,650 डेविड जे Malan: सब ठीक है. 4 00:00:11,650 --> 00:00:15,610 इस CS50 है, और इस सप्ताह चार का अंत है. 5 00:00:15,610 --> 00:00:19,420 और विषयों में से एक आज डिजिटल फोरेंसिक में वह है, 6 00:00:19,420 --> 00:00:20,989 जानकारी उबरने की कला. 7 00:00:20,989 --> 00:00:22,780 और वास्तव में, भले ही आप बीच में हो 8 00:00:22,780 --> 00:00:25,070 सही अब शांति की तीन पर और ब्रेकआउट, अगले सप्ताह, 9 00:00:25,070 --> 00:00:27,880 ध्यान देने पर होगा ठीक इस डोमेन. 10 00:00:27,880 --> 00:00:30,686 >> सबसे अच्छे जॉब की तो एक मैं कभी था, वापस ग्रेजुएट स्कूल में था 11 00:00:30,686 --> 00:00:33,560 मैं स्थानीय के लिए काम कर रहा था जब मिडिलसेक्स काउंटी जिला अटार्नी 12 00:00:33,560 --> 00:00:34,950 कार्यालय, कर फोरेंसिक काम करते हैं. 13 00:00:34,950 --> 00:00:37,450 तो अनिवार्य रूप से, मैसाचुसेट्स राज्य पुलिस ने इस अवसर पर, 14 00:00:37,450 --> 00:00:40,100 मामलों पर कार्य करते समय होगा हार्ड ड्राइव की तरह बातों में लाना 15 00:00:40,100 --> 00:00:42,185 और फ्लॉपी डिस्क और मेमोरी कार्ड और पसंद है. 16 00:00:42,185 --> 00:00:44,060 और वे उन्हें हाथ में होगी मुझे और मेरे गुरु को, 17 00:00:44,060 --> 00:00:48,070 और हमारे लक्ष्य के सबूत मिल गया था, इन मीडिया पर किसी भी, अगर वहाँ था. 18 00:00:48,070 --> 00:00:50,700 अब, आप देखा हो सकता है झलक फोरेंसिक की इस दुनिया की 19 00:00:50,700 --> 00:00:53,000 मीडिया, टीवी और फिल्मों में. 20 00:00:53,000 --> 00:00:55,730 लेकिन काम मैं था, और हिम्मत है कि दुनिया, 21 00:00:55,730 --> 00:00:57,550 आप यह देखना होगा की तरह काफी नहीं है. 22 00:00:57,550 --> 00:01:00,794 पर एक नज़र रखना क्या आप शायद देखा है. 23 00:01:00,794 --> 00:01:01,460 [वीडियो प्लेबैक] 24 00:01:01,460 --> 00:01:02,930 ठीक है. 25 00:01:02,930 --> 00:01:05,380 अब, आप में एक अच्छे लग जाओ. 26 00:01:05,380 --> 00:01:06,850 >> [संगीत खेल] 27 00:01:06,850 --> 00:01:12,260 28 00:01:12,260 --> 00:01:12,932 >> यह पकड़ो. 29 00:01:12,932 --> 00:01:13,657 कि पीछे. 30 00:01:13,657 --> 00:01:14,733 >> एक मिनट रुको. 31 00:01:14,733 --> 00:01:15,233 सही जाओ. 32 00:01:15,233 --> 00:01:16,371 33 00:01:16,371 --> 00:01:16,870 , वहाँ. 34 00:01:16,870 --> 00:01:17,369 कि रुक. 35 00:01:17,369 --> 00:01:17,930 पूर्ण स्क्रीन. 36 00:01:17,930 --> 00:01:18,376 >> ठीक है. 37 00:01:18,376 --> 00:01:18,875 कि रुक. 38 00:01:18,875 --> 00:01:20,160 आप उस पर देंगे -Tighten? 39 00:01:20,160 --> 00:01:22,126 >> उस पर में -Vector वापस पहिया द्वारा आदमी. 40 00:01:22,126 --> 00:01:24,435 >> यहीं इस मौके पर में -Zoom. 41 00:01:24,435 --> 00:01:28,580 >> सही उपकरण -साथ, छवि बढ़े और बढ़ाई जा सकती है. 42 00:01:28,580 --> 00:01:29,330 >> कि क्या हो रहा है? 43 00:01:29,330 --> 00:01:30,780 >> यह तो एक वृद्धि कार्यक्रम है. 44 00:01:30,780 --> 00:01:32,170 >> कि किसी भी स्पष्ट है कि आप सकते हैं? 45 00:01:32,170 --> 00:01:33,070 >> मैं नहीं जानता. 46 00:01:33,070 --> 00:01:34,150 चलो इसे बढ़ाने करते हैं. 47 00:01:34,150 --> 00:01:35,440 >> -Enhance धारा ए 6. 48 00:01:35,440 --> 00:01:36,570 49 00:01:36,570 --> 00:01:38,562 मैं विस्तार बढ़ाया, and-- 50 00:01:38,562 --> 00:01:40,020 मैं बढ़ाने के लिए पर्याप्त लगता है कि वहाँ. 51 00:01:40,020 --> 00:01:40,976 अपनी स्क्रीन करने के लिए इसे रिलीज. 52 00:01:40,976 --> 00:01:42,559 >> मैं उसकी आंख में प्रतिबिंब बढ़ाया. 53 00:01:42,559 --> 00:01:44,322 -Let माध्यम से इस दौड़ रहा है वीडियो वृद्धि. 54 00:01:44,322 --> 00:01:45,210 >> -Edgar, आप इस वृद्धि कर सकते हैं? 55 00:01:45,210 --> 00:01:45,710 >> पर -Hang. 56 00:01:45,710 --> 00:01:47,570 57 00:01:47,570 --> 00:01:49,458 >> इस प्रतिबिंब पर काम कर रहा -I've. 58 00:01:49,458 --> 00:01:50,402 >> , वहाँ के किसी का प्रतिबिंब. 59 00:01:50,402 --> 00:01:50,902 >> -Reflection. 60 00:01:50,902 --> 00:01:52,870 आदमी के चेहरे की एक प्रतिबिंब, वहाँ है. 61 00:01:52,870 --> 00:01:53,694 >> -इस प्रतिबिंब! 62 00:01:53,694 --> 00:01:54,610 एक प्रतिबिंब, वहाँ है. 63 00:01:54,610 --> 00:01:55,880 दर्पण पर में -Zoom. 64 00:01:55,880 --> 00:01:57,860 आप एक प्रतिबिंब देख सकते हैं. 65 00:01:57,860 --> 00:01:59,630 >> आप यहाँ से छवि को बढ़ाने सकते हैं? 66 00:01:59,630 --> 00:02:00,377 67 00:02:00,377 --> 00:02:01,210 आप इसे बढ़ाने सकते हैं? 68 00:02:01,210 --> 00:02:02,190 आप इसे बढ़ाने सकते हैं? 69 00:02:02,190 --> 00:02:03,066 हम इस वृद्धि कर सकते हैं? 70 00:02:03,066 --> 00:02:03,898 आप इसे बढ़ाने सकते हैं? 71 00:02:03,898 --> 00:02:04,740 एक दूसरे पर पकड़ो. 72 00:02:04,740 --> 00:02:05,281 मैं बढ़ाने करेंगे. 73 00:02:05,281 --> 00:02:06,470 दरवाजे पर में -Zoom. 74 00:02:06,470 --> 00:02:06,970 10 -Times. 75 00:02:06,970 --> 00:02:08,009 -Zoom. 76 00:02:08,009 --> 00:02:08,509 में -Move. 77 00:02:08,509 --> 00:02:09,340 -More. 78 00:02:09,340 --> 00:02:10,094 -रुको, बंद करो. 79 00:02:10,094 --> 00:02:10,750 बंद करो. 80 00:02:10,750 --> 00:02:11,250 यह -Pause. 81 00:02:11,250 --> 00:02:13,542 हमें 75 डिग्री -Rotate खड़ी आसपास, कृपया. 82 00:02:13,542 --> 00:02:14,750 83 00:02:14,750 --> 00:02:16,127 >> बंद करो. 84 00:02:16,127 --> 00:02:19,330 भाग पर वापस जाएं दरवाजे के बारे में फिर से. 85 00:02:19,330 --> 00:02:21,420 >> बिटमैप कर सकते हैं कि एक छवि बढ़ाने -Got? 86 00:02:21,420 --> 00:02:24,420 >> हम प्रदीप सिंह उपयोग कर सकते हैं -Maybe विधि खिड़कियों में देखने के लिए. 87 00:02:24,420 --> 00:02:25,902 >> -इस सॉफ्टवेयर कला का राज्य है. 88 00:02:25,902 --> 00:02:26,866 >> -इस Eigenvalue बंद है. 89 00:02:26,866 --> 00:02:29,758 >> सही -साथ algorithms-- का संयोजन 90 00:02:29,758 --> 00:02:32,168 >> -वह का लिया रोशनी अगले स्तर तक एल्गोरिदम, 91 00:02:32,168 --> 00:02:34,110 और मैं उन्हें इस्तेमाल कर सकते हैं इस तस्वीर में वृद्धि. 92 00:02:34,110 --> 00:02:36,840 >> पर -Lock और जेड अक्ष बढ़ाना. 93 00:02:36,840 --> 00:02:37,351 >> -Enhance. 94 00:02:37,351 --> 00:02:37,850 बढ़ाएँ. 95 00:02:37,850 --> 00:02:38,720 -Enhance. 96 00:02:38,720 --> 00:02:40,070 -Freeze और वृद्धि. 97 00:02:40,070 --> 00:02:43,420 [अंत वीडियो प्लेबैक] 98 00:02:43,420 --> 00:02:45,830 डेविड जे Malan: तो उन हैं सभी शब्दों, लेकिन वे नहीं थे 99 00:02:45,830 --> 00:02:47,870 सही ढंग से वाक्य में इस्तेमाल किया. 100 00:02:47,870 --> 00:02:52,370 और वास्तव में भविष्य में, किसी भी समय, , आप किसी शब्द को कहते सुना है, कृपया 101 00:02:52,370 --> 00:02:54,250 बस थोड़ा सा व्यंग्य, "बढ़ाने". 102 00:02:54,250 --> 00:02:57,190 आप को बढ़ाने के लिए प्रयास करते हैं, क्योंकि उदाहरण के लिए, यह क्या होता है. 103 00:02:57,190 --> 00:02:58,580 >> तो यहाँ एक भव्य तस्वीर है. 104 00:02:58,580 --> 00:02:59,720 इस CS50 की अपनी Daven है. 105 00:02:59,720 --> 00:03:03,740 और हम चाहते थे कि लगता है उसकी आंखों में चमक पर ध्यान केंद्रित, 106 00:03:03,740 --> 00:03:05,870 या का प्रतिबिंब स्पष्ट रूप से किया गया था कि बुरा आदमी 107 00:03:05,870 --> 00:03:07,820 सुरक्षा कैमरे द्वारा कब्जा कर लिया. 108 00:03:07,820 --> 00:03:10,330 यह तब होता है जब आप एक छवि पर ज़ूम है कि 109 00:03:10,330 --> 00:03:14,060 केवल एक सीमित संख्या है इसके साथ जुड़े बिट्स की. 110 00:03:14,060 --> 00:03:15,420 >> यही कारण है कि आप मिल जाएगा क्या है. 111 00:03:15,420 --> 00:03:19,190 और वास्तव में, Daven की आंखों में , शायद छह पिक्सल है लेकिन चार 112 00:03:19,190 --> 00:03:22,110 कि वास्तव में क्या लिखें वहाँ मंद प्रकाश था. 113 00:03:22,110 --> 00:03:25,890 तो समस्या सेट चार अंततः होगा आप विशेष रूप से, इस दुनिया का पता लगाने 114 00:03:25,890 --> 00:03:28,090 कुछ की प्रकृति द्वारा हम फाइल मैं / हे, जहां कॉल 115 00:03:28,090 --> 00:03:31,000 मैं / ओ के सिर्फ एक अच्छा तरीका है इनपुट और आउटपुट कह. 116 00:03:31,000 --> 00:03:34,280 >> तो इस प्रकार अब तक, बातचीत के सभी हम एक कंप्यूटर के साथ किया है 117 00:03:34,280 --> 00:03:36,770 साथ बड़े पैमाने पर किया गया है आपकी कीबोर्ड और स्क्रीन, 118 00:03:36,770 --> 00:03:40,770 लेकिन हार्ड डिस्क के साथ इतना नहीं, या लोगों को परे फ़ाइलों की बचत आप 119 00:03:40,770 --> 00:03:41,620 अपने आप को लिखें. 120 00:03:41,620 --> 00:03:44,570 अपने कार्यक्रमों प्रकार दूर है नहीं, बनाने, और बचत की गई 121 00:03:44,570 --> 00:03:46,270 और अपनी फाइलों को अद्यतन करने. 122 00:03:46,270 --> 00:03:47,150 >> खैर, एक फ़ाइल क्या है? 123 00:03:47,150 --> 00:03:48,105 खैर, एक JPEG की तरह कुछ. 124 00:03:48,105 --> 00:03:50,520 यह तुम हो सकता है एक छवि है है या फेसबुक पर अपलोड, 125 00:03:50,520 --> 00:03:51,690 या कहीं भी वेब पर देखते हैं. 126 00:03:51,690 --> 00:03:54,460 दरअसल, उस तस्वीर हम बस Daven देखा एक JPEG था. 127 00:03:54,460 --> 00:03:57,570 और क्या दिलचस्प है JPEGs तरह फ़ाइलों के बारे में 128 00:03:57,570 --> 00:04:02,170 वे पहचाना जा सकता है, आम तौर पर, बिट्स के कुछ पैटर्न से. 129 00:04:02,170 --> 00:04:05,200 >> दूसरे शब्दों में, कि यह क्या है एक GIF से एक JPEG अलग है 130 00:04:05,200 --> 00:04:08,109 एक पद से एक पिंग से एक एक्सेल फाइल से दस्तावेज? 131 00:04:08,109 --> 00:04:09,900 खैर, यह सिर्फ अलग है बिट्स के पैटर्न. 132 00:04:09,900 --> 00:04:12,820 और उन लोगों के अलग पैटर्न हैं आमतौर पर उन फ़ाइलों के शुरू में. 133 00:04:12,820 --> 00:04:18,200 >> आपके कंप्यूटर एक पद को खोलता है ताकि जब डॉक्टर, या एक कंप्यूटर एक JPEG खोलता है, 134 00:04:18,200 --> 00:04:20,940 इसे आम तौर पर दिखता है फ़ाइल में पहले कई बिट्स. 135 00:04:20,940 --> 00:04:24,059 और यह एक पैटर्न पहचानता है, तो यह ओह, यह एक छवि है, कहते हैं. 136 00:04:24,059 --> 00:04:25,850 मेरे लिए यह प्रदर्शित करते हैं एक ग्राफिक के रूप में उपयोगकर्ता. 137 00:04:25,850 --> 00:04:27,870 या, ओह, इस एक शब्द डॉक्टर की तरह लग रहा है. 138 00:04:27,870 --> 00:04:30,480 मुझे एक निबंध के रूप में उपयोगकर्ता के लिए यह दिखाते हैं. 139 00:04:30,480 --> 00:04:33,020 >> उदाहरण के लिए, JPEGs, यह कर रहे हैं, पता चला है 140 00:04:33,020 --> 00:04:35,460 काफी परिष्कृत हुड के नीचे. 141 00:04:35,460 --> 00:04:40,140 लेकिन सबसे अधिक हर में पहले तीन बाइट्स जेपीईजी इन तीन नंबर के साथ शुरू करते हैं. 142 00:04:40,140 --> 00:04:44,680 तो बाइट शून्य, एक, और दो में, कर रहे हैं सबसे हर जेपीईजी, 255, तो संख्या 143 00:04:44,680 --> 00:04:46,675 216, तो संख्या 255. 144 00:04:46,675 --> 00:04:48,990 >> और आप में सक्षम हो जाएगा क्या अगले सप्ताह कर रही शुरू करने के लिए 145 00:04:48,990 --> 00:04:52,920 वास्तव में नीचे poking है JPEGs तरह फ़ाइलों के हुड 146 00:04:52,920 --> 00:04:57,210 और बिटमैप फ़ाइलों की तरह, और देख क्या हमेशा के रूप में लंबे समय के लिए हो गया है 147 00:04:57,210 --> 00:04:58,650 आप एक कंप्यूटर का उपयोग किया गया है, के रूप में. 148 00:04:58,650 --> 00:05:01,860 >> लेकिन आम तौर पर वहाँ नहीं है क्या इस तरह से दशमलव संख्या की तरह लिखा. 149 00:05:01,860 --> 00:05:04,620 कंप्यूटर वैज्ञानिकों नहीं करते दशमलव में बात करते हैं. 150 00:05:04,620 --> 00:05:06,139 वे वास्तव में द्विआधारी में बात नहीं करते. 151 00:05:06,139 --> 00:05:07,930 आमतौर पर, जब हम चाहते हैं संख्या व्यक्त करने के लिए, 152 00:05:07,930 --> 00:05:10,710 हम वास्तव में हेक्साडेसिमल उपयोग, जो आप याद कर सकते हैं 153 00:05:10,710 --> 00:05:13,027 समस्या सेट, कहते हैं, से चुनौती दी जो एक, 154 00:05:13,027 --> 00:05:14,610 आप एक अलग प्रणाली के बारे में सोचने के लिए. 155 00:05:14,610 --> 00:05:17,170 >> हम, ज़ाहिर है, परिचित हैं नौ के माध्यम से दशमलव, शून्य के साथ. 156 00:05:17,170 --> 00:05:18,215 हम द्विआधारी के बारे में बात की थी. 157 00:05:18,215 --> 00:05:20,710 और हम वास्तव में नहीं है ज्यादा यहाँ कि उपयोग करने के लिए 158 00:05:20,710 --> 00:05:22,470 बाहर पर, कंप्यूटर कि प्रयोग करेंगे क्योंकि. 159 00:05:22,470 --> 00:05:24,900 लेकिन प्रोग्रामर बहुत होगा अक्सर, लेकिन हमेशा नहीं, 160 00:05:24,900 --> 00:05:29,360 बस, जिसका मतलब है हेक्साडेसिमल का उपयोग यदि आप अपने वर्णमाला में 16 पत्र है 161 00:05:29,360 --> 00:05:31,330 के रूप में दो या दो से 10 करने का विरोध किया. 162 00:05:31,330 --> 00:05:34,530 >> तो आप कैसे उच्च करने के लिए गिनती है हेक्साडेसिमल में नौ से? 163 00:05:34,530 --> 00:05:41,120 तुम जाओ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, एक, बस कन्वेंशन द्वारा सी, डी, ई, एफ, बी. 164 00:05:41,120 --> 00:05:43,540 लेकिन क्या महत्वपूर्ण है कि प्रत्येक है इनमें से एक भी प्रतीक है. 165 00:05:43,540 --> 00:05:44,340 कोई 10 है. 166 00:05:44,340 --> 00:05:48,400 प्रत्येक क्योंकि, कोई 11 प्रतिशत से है आपके अंक का, सिर्फ दशमलव में पसंद 167 00:05:48,400 --> 00:05:51,940 बस बाइनरी में तरह और, बस चाहिए सम्मेलन द्वारा एक ही चरित्र, हो. 168 00:05:51,940 --> 00:05:55,280 >> तो हम वर्णमाला इतना है कि हेक्साडेसिमल के लिए हमारे निपटान पर. 169 00:05:55,280 --> 00:05:58,600 तो एक JPEG आप अगर कैसी दिखती है उन पहले तीन बाहर लिख रहे थे 170 00:05:58,600 --> 00:06:01,980 दशमलव के रूप में नहीं बाइट्स लेकिन उदाहरण के लिए, हेक्साडेसिमल के रूप में? 171 00:06:01,980 --> 00:06:03,640 और क्यों हेक्स कि उपयोगी भी सब क्या है? 172 00:06:03,640 --> 00:06:05,290 >> खैर, एक उदाहरण पर एक त्वरित देखो. 173 00:06:05,290 --> 00:06:09,030 मैं बिट्स बाहर लिखना तो अगर कि इन दशमलव numbers-- का प्रतिनिधित्व 174 00:06:09,030 --> 00:06:12,450 इस थोड़ा सा लगना हो सकता है अब वापस कुछ हफ्तों से, 175 00:06:12,450 --> 00:06:14,820 छोड़ एक और लेकिन सही एक बहुत आसान कर रहे हैं. 176 00:06:14,820 --> 00:06:17,990 255 सबसे बड़ी संख्या है कि हम था आठ बिट के साथ प्रतिनिधित्व कर सकता है. 177 00:06:17,990 --> 00:06:18,820 यह सभी लोगों को थी. 178 00:06:18,820 --> 00:06:21,320 तो हल्का है कि केवल एक दिलचस्प बीच एक है. 179 00:06:21,320 --> 00:06:24,700 और आप की तरह बाहर करते हैं गणित, तुम, वास्तव में, कि परिणाम निकालना होगा 180 00:06:24,700 --> 00:06:27,949 एक के उस पैटर्न और शून्य 216 का प्रतिनिधित्व करता है. 181 00:06:27,949 --> 00:06:30,240 तो चलो बस के लिए निर्धारित करते हैं अब इन सही हैं. 182 00:06:30,240 --> 00:06:31,730 लेकिन क्यों यह दिलचस्प है? 183 00:06:31,730 --> 00:06:33,970 >> खैर, एक बाइट, निश्चित रूप से, आठ बिट है. 184 00:06:33,970 --> 00:06:38,980 और यह अगर आपको लगता है कि पता चला है चार बिट्स के दो हिस्सा के रूप में एक बाइट की, 185 00:06:38,980 --> 00:06:39,500 इस तरह. 186 00:06:39,500 --> 00:06:41,000 मुझे बस कुछ जगह जोड़ दें. 187 00:06:41,000 --> 00:06:42,550 तो इससे पहले, के बाद. 188 00:06:42,550 --> 00:06:46,520 मैं बस कुछ सफेद अंतरिक्ष जोड़ दिया है यहाँ दृश्य के लिए के लिए. 189 00:06:46,520 --> 00:06:51,840 कैसे हम अब में प्रतिनिधित्व हो सकता है, कहते हैं, हेक्साडेसिमल बिट्स के प्रत्येक ट्रैक्टर, 190 00:06:51,840 --> 00:06:52,880 चार बिट्स के प्रत्येक सेट? 191 00:06:52,880 --> 00:06:56,420 >> उदाहरण के लिए, बाईं तरफ तो अब, हम द्विआधारी में 1111 है. 192 00:06:56,420 --> 00:07:00,420 दशमलव में उस नंबर क्या है, आप गणित बाहर करते हैं? 193 00:07:00,420 --> 00:07:03,780 आप लोगों को जगह नहीं है, twos जगह, चौके जगह, और आठ भाग जगह. 194 00:07:03,780 --> 00:07:04,341 >> दर्शक: 15. 195 00:07:04,341 --> 00:07:05,340 डेविड जे Malan: यह 15 है. 196 00:07:05,340 --> 00:07:08,340 इसलिए हम आठ प्लस चार करते हैं प्लस दो प्लस एक, हम 15 मिलता है. 197 00:07:08,340 --> 00:07:11,790 तो मैं नीचे 15 नीचे लिख सकता है 1111, लेकिन यहां पूरे अंक 198 00:07:11,790 --> 00:07:13,190 हेक्साडेसिमल है, दशमलव नहीं. 199 00:07:13,190 --> 00:07:17,310 तो बजाय नीचे लिख के 15, 1-5, मैं, हेक्स में है कि लिखने के लिए जा रहा हूँ 200 00:07:17,310 --> 00:07:22,311 यदि आपके पास तुम वापस अगर आपको लगता है जो एफ के माध्यम से शून्य, क्या 15 होने जा रहा है? 201 00:07:22,311 --> 00:07:22,810 दर्शक: एफ. 202 00:07:22,810 --> 00:07:24,434 डेविड जे Malan: तो यह है कि यह च पता चला है. 203 00:07:24,434 --> 00:07:29,140 और तुम कह कर कि बाहर काम कर सकते हैं, एक 10 है अगर ठीक है, तो ठीक है, एफ 15 है. 204 00:07:29,140 --> 00:07:33,250 तो वास्तव में, हम फिर से लिखना सकता है च च के रूप में संख्या के इस एक ही सेट. 205 00:07:33,250 --> 00:07:35,750 और फिर हम गणित का एक सा है, हम चाहते हैं कि डी है कि परिणाम निकालना हूँ. 206 00:07:35,750 --> 00:07:38,650 आठ, बहुत आसान है क्योंकि हम आठ भाग जगह में एक एक है. 207 00:07:38,650 --> 00:07:40,620 और फिर, हम एफ एफ के एक जोड़े को और अधिक है. 208 00:07:40,620 --> 00:07:44,669 >> तो क्या मनुष्य सम्मेलन से करते हैं वे का उपयोग करते समय हेक्साडेसिमल वे बस है 209 00:07:44,669 --> 00:07:47,710 अधिक संक्षेप में यह एक छोटे से लिखना, कि सफेद अंतरिक्ष की सबसे से छुटकारा. 210 00:07:47,710 --> 00:07:50,890 और बस के लिए सुपर स्पष्ट होना इस हेक्साडेसिमल है कि पाठकों, 211 00:07:50,890 --> 00:07:54,670 बीच साधारण सम्मेलन मनुष्य आप शून्य लिखना है 212 00:07:54,670 --> 00:07:58,000 अन्य कोई अर्थ नहीं है, जो एक्स, के एक दृश्य पहचानकर्ता से, 213 00:07:58,000 --> 00:07:59,590 यहाँ एक हेक्स नंबर आता है. 214 00:07:59,590 --> 00:08:04,210 >> और फिर, तुम, च दो अंक डाल इस मामले में च, तो घ एक, तो च च. 215 00:08:04,210 --> 00:08:06,700 तो लंबी कहानी को कम, हेक्साडेसिमल सिर्फ आदत 216 00:08:06,700 --> 00:08:11,990 उपयोगी हो सकता है की प्रत्येक क्योंकि इसके अंक, एफ के माध्यम से शून्य, पूरी तरह से लाइनों 217 00:08:11,990 --> 00:08:13,880 चार बिट्स के एक पैटर्न के साथ. 218 00:08:13,880 --> 00:08:18,080 >> आप दो हेक्साडेसिमल अंक है, तो शून्य बार बार एफ, के माध्यम से, 219 00:08:18,080 --> 00:08:20,256 कि पूरी तरह से आप देता है आठ बिट्स या एक बाइट. 220 00:08:20,256 --> 00:08:22,380 यह आदत है तो इसलिए पारंपरिक उपयोगी हो. 221 00:08:22,380 --> 00:08:24,990 कोई बौद्धिक नहीं है सच से परे है कि सामग्री, 222 00:08:24,990 --> 00:08:27,010 अपनी वास्तविक उपयोगिता के अलावा अन्य. 223 00:08:27,010 --> 00:08:29,310 >> अब JPEGs ही नहीं हैं ग्राफिक्स के लिए फ़ाइल स्वरूपों. 224 00:08:29,310 --> 00:08:33,230 आप कर रहे हैं कि याद हो सकता है दुनिया में इस तरह फाइलें, 225 00:08:33,230 --> 00:08:34,830 कम से कम कुछ साल पहले से. 226 00:08:34,830 --> 00:08:37,580 >> तो यह वास्तव में था Windows XP में स्थापित 227 00:08:37,580 --> 00:08:39,960 दुनिया भर के कंप्यूटरों के लाखों लोगों पर. 228 00:08:39,960 --> 00:08:43,000 और यह एक बिटमैप फ़ाइल, बीएमपी था. 229 00:08:43,000 --> 00:08:47,690 और एक बिटमैप फ़ाइल के रूप में आप अगले देखेंगे सप्ताह, बस डॉट्स की एक पद्धति का मतलब है, 230 00:08:47,690 --> 00:08:51,710 वे कहते हैं के रूप में पिक्सल, एक सच, बिट्स पर मानचित्र. 231 00:08:51,710 --> 00:08:55,160 >> तो क्या हुआ, हालांकि दिलचस्प है, इस फ़ाइल प्रारूप, बीएमपी के बारे में है, 232 00:08:55,160 --> 00:08:58,590 कि हुड के नीचे, यह सिर्फ तीन बाइट्स से भी अधिक है 233 00:08:58,590 --> 00:09:01,020 इतना है कि अपने शीर्ष लेख रचना पहले कुछ काटता है बात करने के लिए. 234 00:09:01,020 --> 00:09:03,330 यह वास्तव में एक छोटे से लग रहा है पहली नज़र में जटिल. 235 00:09:03,330 --> 00:09:04,704 और तुम पी सेट में यह देखेंगे. 236 00:09:04,704 --> 00:09:06,810 और कुछ हो रही है इस के विशेष बाहर अब 237 00:09:06,810 --> 00:09:10,720 सिर्फ इस तथ्य के रूप में, इतना महत्वपूर्ण नहीं है कि हर बिटमैप की शुरुआत में 238 00:09:10,720 --> 00:09:13,823 फाइल, एक ग्राफिकल प्रारूप, संख्या की एक पूरी गुच्छा है. 239 00:09:13,823 --> 00:09:14,980 240 00:09:14,980 --> 00:09:16,720 >> अब माइक्रोसॉफ्ट, इस प्रारूप के लेखक, 241 00:09:16,720 --> 00:09:18,820 उन कॉल करने के लिए जाता है बातें नहीं ints और घर का काम 242 00:09:18,820 --> 00:09:22,259 और तैरता लेकिन शब्दों और घ शब्दों और चाहता है और बाइट्स. 243 00:09:22,259 --> 00:09:23,800 तो वे सिर्फ अलग डेटा प्रकार के कर रहे हैं. 244 00:09:23,800 --> 00:09:25,170 वे अलग अलग नामों हो एक ही बात के लिए. 245 00:09:25,170 --> 00:09:26,740 लेकिन आप पी सेट चार में देखेंगे. 246 00:09:26,740 --> 00:09:31,450 >> लेकिन यह कहने के लिए ही है कि एक मानव अगर पर कुछ .BMP फ़ाइल डबल क्लिक करता है उसकी 247 00:09:31,450 --> 00:09:35,015 या उसके हार्ड ड्राइव, और एक खिड़की खुलती उसे या उस छवि दिखा ऊपर, 248 00:09:35,015 --> 00:09:38,500 ऑपरेटिंग क्योंकि हुआ सिस्टम शायद नहीं ही देखा 249 00:09:38,500 --> 00:09:41,460 .BMP फ़ाइल एक्सटेंशन फ़ाइल के नाम में, 250 00:09:41,460 --> 00:09:45,010 लेकिन यह भी तथ्य है कि वहाँ कुछ बिट्स के पैटर्न के लिए सम्मेलन 251 00:09:45,010 --> 00:09:47,490 बहुत शुरुआत में कि बिटमैप फ़ाइल की. 252 00:09:47,490 --> 00:09:50,270 >> लेकिन अब पर ध्यान केंद्रित करते हैं इस तरह के एक जटिल फ़ाइल, 253 00:09:50,270 --> 00:09:52,120 लेकिन इसके बजाय इस तरह से कुछ पर. 254 00:09:52,120 --> 00:09:55,190 मैं, एडिट में यहाँ मान लीजिए सिर्फ शुरुआत है 255 00:09:55,190 --> 00:09:57,070 बहुत आसान है कि एक कार्यक्रम का. 256 00:09:57,070 --> 00:09:58,860 मैं कुछ ऊपर भी शामिल है मिल गया है. 257 00:09:58,860 --> 00:10:02,120 अब मुझे मिल गया है # शामिल "structs.h" लेकिन मैं एक पल में वापस करने के लिए आया हूँ. 258 00:10:02,120 --> 00:10:03,974 लेकिन यह अभी के लिए उपयोगी है. 259 00:10:03,974 --> 00:10:05,890 तो यह एक कार्यक्रम है कि लागू करने के लिए जा रहा है 260 00:10:05,890 --> 00:10:07,335 रजिस्ट्रार के डेटाबेस की तरह. 261 00:10:07,335 --> 00:10:09,710 तो छात्रों का एक डाटाबेस, और दुनिया में हर छात्र 262 00:10:09,710 --> 00:10:13,190 शायद कुछ एक नाम और एक घर और है अन्य सामान है, लेकिन हम इसे सरल रखने देंगे. 263 00:10:13,190 --> 00:10:15,140 प्रत्येक छात्र को एक नाम और एक घर है. 264 00:10:15,140 --> 00:10:17,700 >> मैं एक लिखना चाहता था तो अगर जिसका उद्देश्य जीवन में कार्यक्रम 265 00:10:17,700 --> 00:10:19,860 बस से पुनरावृति करने के लिए किया गया था तीन अप करने पर शून्य, 266 00:10:19,860 --> 00:10:22,070 तीन छात्रों को अगर वहाँ हार्वर्ड विश्वविद्यालय में. 267 00:10:22,070 --> 00:10:25,350 और मैं सिर्फ GetString का उपयोग कर, प्राप्त करना चाहते हैं, प्रत्येक छात्र का नाम और घर, 268 00:10:25,350 --> 00:10:26,600 और फिर बस उन बाहर प्रिंट. 269 00:10:26,600 --> 00:10:28,630 >> इस तरह के सप्ताह की तरह है एक, दो सप्ताह सामान अब, 270 00:10:28,630 --> 00:10:30,810 मैं बस के लिए एक जहां चाहते हैं पाश या ऐसा कुछ. 271 00:10:30,810 --> 00:10:34,500 और मैं GetString कुछ कॉल करना चाहते हैं बार, और फिर एक बार कुछ च मुद्रित. 272 00:10:34,500 --> 00:10:37,340 तो मैं हालांकि ऐसा कैसे हो सकता है, जब एक नाम और एक घर दोनों 273 00:10:37,340 --> 00:10:39,070 प्रत्येक छात्र के लिए शामिल कर रहे हैं? 274 00:10:39,070 --> 00:10:42,830 >> तो मेरी पहली वृत्ति हो सकता है इस तरह से कुछ करना हो. 275 00:10:42,830 --> 00:10:49,620 मैं पहले अच्छी तरह से, मुझे दे, कह सकते हैं, , नामों बुलाया तारों की एक सरणी का कहना है. 276 00:10:49,620 --> 00:10:51,530 और मैं एक hardcode तीन यहाँ नहीं करना चाहती. 277 00:10:51,530 --> 00:10:53,064 क्या मैं वहाँ डाल करना चाहते हैं? 278 00:10:53,064 --> 00:10:55,730 सिर्फ है कि क्योंकि, छात्रों को तो शीर्ष पर घोषित एक स्थिर, 279 00:10:55,730 --> 00:10:57,860 मैं hardcode की जरूरत नहीं है, बस इतना कई स्थानों में तीन. 280 00:10:57,860 --> 00:11:00,859 इस तरह, मैं, यह एक ही स्थान बदल सकते हैं और यह हर जगह एक परिवर्तन को प्रभावित करता है. 281 00:11:00,859 --> 00:11:04,470 और फिर, मैं क्या कर सकता है स्ट्रिंग छात्रों घरों. 282 00:11:04,470 --> 00:11:10,250 >> और अब, मैं ऐसा कुछ कर सकता है मैं छात्रों <; के लिए (i = 0 int i ++. 283 00:11:10,250 --> 00:11:14,390 तो मैं तेजी से टाइप कर रहा हूँ, लेकिन यह है अब शायद परिचित वाक्यविन्यास. 284 00:11:14,390 --> 00:11:17,030 >> और अब, यह अधिक हाल था. 285 00:11:17,030 --> 00:11:22,890 मैं मैं वें में डाल करना चाहते हैं छात्र का नाम, मुझे लगता है मैं यह करने के बारे में सोच. 286 00:11:22,890 --> 00:11:26,480 और फिर, नहीं नाम लेकिन घरों मैं ब्रैकेट. 287 00:11:26,480 --> 00:11:29,930 मैं यह GetString करते हैं, और जाने मुझे वापस जाना है और इस लाइन को ठीक. 288 00:11:29,930 --> 00:11:30,430 सहमत हैं? 289 00:11:30,430 --> 00:11:31,200 असहमत हैं? 290 00:11:31,200 --> 00:11:32,366 यह बहुत उपयोगकर्ता के अनुकूल नहीं है. 291 00:11:32,366 --> 00:11:33,890 मुझे क्या करना है उपयोगकर्ता नहीं बताया है. 292 00:11:33,890 --> 00:11:36,520 >> लेकिन अब, मैं तो यह भी बाद में, चलो करना चाहता था 293 00:11:36,520 --> 00:11:40,060 कहते हैं, इन बातों प्रिंट out-- तो TODO बाद में. 294 00:11:40,060 --> 00:11:42,330 मैं अधिक के साथ क्या करने जा रहा हूँ यकीनन इस this-- 295 00:11:42,330 --> 00:11:45,970 के सही कार्यान्वयन नाम और मकान, तीन हो रही 296 00:11:45,970 --> 00:11:48,870 एक उपयोगकर्ता से प्रत्येक की उनमें से कुल. 297 00:11:48,870 --> 00:11:51,280 >> लेकिन यह बहुत अच्छा डिजाइन सही नहीं है? 298 00:11:51,280 --> 00:11:55,220 क्या एक छात्र न सिर्फ एक नाम है और एक घर, लेकिन यह भी एक आईडी नंबर, 299 00:11:55,220 --> 00:11:57,770 और एक टेलीफोन नंबर, और एक ईमेल पते, 300 00:11:57,770 --> 00:12:00,280 और शायद एक होम पेज, और शायद एक ट्विटर हैंडल, 301 00:12:00,280 --> 00:12:03,730 और अन्य विवरण के किसी भी संख्या एक छात्र या एक व्यक्ति के साथ जुड़े, 302 00:12:03,730 --> 00:12:04,610 अधिक आम तौर पर. 303 00:12:04,610 --> 00:12:07,720 हम जोड़ने के लिए शुरू होगा कैसे इस कार्यक्रम के लिए कार्यक्षमता? 304 00:12:07,720 --> 00:12:14,080 >> खैर, मैं शायद सबसे आसान तरीका की तरह लग रहा है , ऐसा कुछ कर हम कहते हैं करने के लिए हो सकता है, 305 00:12:14,080 --> 00:12:16,490 आईडी छात्रों int. 306 00:12:16,490 --> 00:12:18,380 तो मैं वहाँ में अपने सभी आईडी डाल सकता है. 307 00:12:18,380 --> 00:12:22,240 और फिर, कुछ के लिए फोन नंबर की तरह, 308 00:12:22,240 --> 00:12:24,400 मैं कैसे यकीन नहीं है बस अभी तक उस का प्रतिनिधित्व करते हैं. 309 00:12:24,400 --> 00:12:30,280 तो चलो आगे और सिर्फ कॉल जाने दो यह छात्रों, Twitters जो 310 00:12:30,280 --> 00:12:33,550 थोड़ा अजीब, but-- है और खेतों एक गुच्छा अधिक. 311 00:12:33,550 --> 00:12:36,360 >> मैं प्रभावी ढंग से करने के लिए शुरू कर दिया है कॉपी और यहाँ पेस्ट. 312 00:12:36,360 --> 00:12:39,416 और यह बहुत बढ़ती जा रही है बहुत जल्दी बोझल, है ना? 313 00:12:39,416 --> 00:12:42,290 अगर वहाँ थे यह अच्छा नहीं होगा दुनिया में एक आंकड़ा संरचना में जाना 314 00:12:42,290 --> 00:12:45,600 नहीं एक पूर्णांक या एक स्ट्रिंग, लेकिन कुछ के रूप में उच्च स्तर, एक अमूर्त, तो 315 00:12:45,600 --> 00:12:47,570 एक छात्र के रूप में जाना जाता है, बात करने के लिए? 316 00:12:47,570 --> 00:12:50,220 सी में निर्मित के साथ नहीं आया था छात्रों के लिए कार्यक्षमता, 317 00:12:50,220 --> 00:12:52,260 लेकिन मैं इसे इस तरह देना चाहता था तो क्या? 318 00:12:52,260 --> 00:12:55,640 >> खैर, यह मैं जा रहा हूँ, पता चला है , structs.h यहाँ नामक एक फ़ाइल खोलने 319 00:12:55,640 --> 00:12:57,090 और आप वास्तव में ऐसा कर सकते हैं. 320 00:12:57,090 --> 00:12:58,290 और हम अब इस कर रही शुरू करने जा रहे हैं. 321 00:12:58,290 --> 00:13:01,490 और पी सेट तीन के हुड के नीचे, आप पहले से ही अब यह कर रहा हूँ. 322 00:13:01,490 --> 00:13:05,920 एक छ रंगरूट के रूप में ऐसी कोई बात नहीं है या प्रोग्रामिंग भाषा सी में एक छ अंडाकार 323 00:13:05,920 --> 00:13:10,570 >> स्टैनफोर्ड में लोग उन कार्यान्वित यहां इस दृष्टिकोण का उपयोग करके डेटा प्रकार, 324 00:13:10,570 --> 00:13:13,900 अपने स्वयं के नए आंकड़ों की घोषणा एक नए कीवर्ड का उपयोग प्रकार 325 00:13:13,900 --> 00:13:16,744 कहा जाता संरचना और एक अन्य एक बुलाया typedef. 326 00:13:16,744 --> 00:13:19,660 और वास्तव में, भले ही वाक्यविन्यास सामान से थोड़ा अलग दिखता है 327 00:13:19,660 --> 00:13:23,550 हम में, पहले देखा है सिद्धांत, यह सुपर आसान है. 328 00:13:23,550 --> 00:13:25,297 >> यह सिर्फ "एक प्रकार परिभाषित मतलब है." 329 00:13:25,297 --> 00:13:27,255 यह एक होने जा रहा है संरचना, और एक संरचना 330 00:13:27,255 --> 00:13:29,400 सिर्फ एक कंटेनर की तरह है कई बातों के लिए. 331 00:13:29,400 --> 00:13:31,780 और उस संरचना जा रहा है नाम नामक एक स्ट्रिंग है, 332 00:13:31,780 --> 00:13:33,210 और एक स्ट्रिंग घर बुलाया. 333 00:13:33,210 --> 00:13:37,520 और चलो बस सुविधा के लिए, कहते हैं, इस पूरे डेटा संरचना छात्र. 334 00:13:37,520 --> 00:13:40,320 >> तो पल आप को मिल अर्धविराम, तुम अब 335 00:13:40,320 --> 00:13:43,280 अपने खुद के डेटा बनाया प्रकार बुलाया छात्र 336 00:13:43,280 --> 00:13:46,420 कि अब, पूर्णांक के साथ खड़ा है और नाव, और चार, और स्ट्रिंग, 337 00:13:46,420 --> 00:13:50,270 और जी रंगरूट, और जी अंडाकार, और किसी भी संख्या अन्य बातों के लोगों का आविष्कार किया है. 338 00:13:50,270 --> 00:13:53,340 >> इसलिए इस बारे में उपयोगी क्या है अब मैं वापस जाने के लिए अगर यह है कि 339 00:13:53,340 --> 00:13:57,430 0 struct और इसे खत्म करने के लिए मैंने लिखा जो कार्यान्वयन, 340 00:13:57,430 --> 00:14:02,080 यहाँ अग्रिम में, सभी कि नोटिस अपरिहार्य messiness की कि 341 00:14:02,080 --> 00:14:05,490 मैंने कहा कि के रूप में शुरू हो रहा है के बारे में था फोन नंबर और Twitters और सभी 342 00:14:05,490 --> 00:14:07,370 करने के लिए इन अन्य चीजों एक छात्र की परिभाषा, 343 00:14:07,370 --> 00:14:11,810 अब इसे संक्षेप में लपेटा है छात्रों का सिर्फ एक सरणी के रूप में. 344 00:14:11,810 --> 00:14:15,500 >> और उन छात्रों में से प्रत्येक अब इसके अंदर कई चीजें हैं. 345 00:14:15,500 --> 00:14:16,930 तो यह है कि सिर्फ एक सवाल छोड़ देता है. 346 00:14:16,930 --> 00:14:19,700 आप कैसे नाम पर मिलता है, और घर, और आईडी, 347 00:14:19,700 --> 00:14:21,640 और जो कुछ है छात्र के अंदर? 348 00:14:21,640 --> 00:14:22,930 सुपर सरल, के रूप में अच्छी तरह से. 349 00:14:22,930 --> 00:14:25,730 नई वाक्य रचना, लेकिन एक साधारण विचार. 350 00:14:25,730 --> 00:14:29,239 >> सरणी में आप बस सूचकांक हम पिछले हफ्ते और इस रूप में किया था. 351 00:14:29,239 --> 00:14:31,030 और क्या स्पष्ट रूप से है वाक्यविन्यास का नया टुकड़ा? 352 00:14:31,030 --> 00:14:32,590 353 00:14:32,590 --> 00:14:35,880 बस., जिसका अर्थ है "अंदर जाओ संरचना और क्षेत्र कहा जाता हो 354 00:14:35,880 --> 00:14:39,030 नाम, घर बुलाया क्षेत्र मिलता है छात्र बुलाया क्षेत्र मिलता है. " 355 00:14:39,030 --> 00:14:41,940 >> तो पी सेट तीन में, आप कर रहे हैं अब भी उस पर काम कर रहे, 356 00:14:41,940 --> 00:14:44,020 अभी और बहुत सारे लोगों को , आप के रूप में पता है कि कर रहे हैं 357 00:14:44,020 --> 00:14:46,130 की तरह चीजों का उपयोग शुरू जी rects और जी ovals 358 00:14:46,130 --> 00:14:50,201 और अन्य चीजें नहीं लगती कि सप्ताह शून्य, एक, या दो से आते हैं, 359 00:14:50,201 --> 00:14:52,950 कि स्टैनफोर्ड क्योंकि पता है कि कुछ नए डेटा प्रकार की घोषणा की. 360 00:14:52,950 --> 00:14:56,160 >> और वास्तव में, कि वास्तव में है क्या हम करेंगे पी सेट चार में, के रूप में अच्छी तरह से करते हैं, जब 361 00:14:56,160 --> 00:14:59,880 हम चीजों के साथ सौदा करने के लिए शुरू छवियों, बिटमैप, और अधिक की तरह. 362 00:14:59,880 --> 00:15:02,882 इसलिए कि सिर्फ एक नमूना और एक है क्या आ रहा है के लिए मानसिक मॉडल. 363 00:15:02,882 --> 00:15:04,590 अब, मैं procrastinated एक बिट आज सुबह. 364 00:15:04,590 --> 00:15:09,560 मैं देखने के लिए क्या तरह के उत्सुक था माइक्रोसॉफ्ट वॉलपेपर वास्तव में 365 00:15:09,560 --> 00:15:10,310 आज की तरह लग रहा है. 366 00:15:10,310 --> 00:15:15,200 और यह 2006 में किसी को पता चला है वास्तव में लगभग ठीक करने के लिए चला गया 367 00:15:15,200 --> 00:15:19,210 उसी जगह हकीकत में तस्वीर क्या इन दिनों ऐसा लग रहा है. 368 00:15:19,210 --> 00:15:21,380 क्षेत्र अब एक छोटे से ऊंचा हो गया है. 369 00:15:21,380 --> 00:15:24,850 >> तो छवियों के अब बोल रहा है, यहाँ Daven वापस लाने 370 00:15:24,850 --> 00:15:26,890 स्क्रीन और निकोलस पर, और सिर्फ तुम्हें याद दिलाना 371 00:15:26,890 --> 00:15:30,540 कि तुम दोपहर के भोजन के लिए हमारे साथ शामिल करना चाहते हैं तो हमारे सामान्य यूआरएल के लिए इस शुक्रवार, सिर 372 00:15:30,540 --> 00:15:31,440 यहां. 373 00:15:31,440 --> 00:15:33,530 >> तो हम कहाँ सोमवार को बंद छोड़ दिया? 374 00:15:33,530 --> 00:15:35,140 हम सही, इस समस्या को पेश किया? 375 00:15:35,140 --> 00:15:37,610 यह प्रतीत होता है एक सही था स्वैप के कार्यान्वयन, 376 00:15:37,610 --> 00:15:40,460 जिससे आप, दो ints लेने एक, बी नामक एक, एक बुलाया 377 00:15:40,460 --> 00:15:44,130 लौरा यहाँ था, जैसे उन्हें स्वैप दूध और पानी के साथ मंच पर, 378 00:15:44,130 --> 00:15:46,820 एक अस्थायी उपयोग करके चर, या एक खाली कप, 379 00:15:46,820 --> 00:15:50,540 हम एक और एक में में बी डाल सकता है ताकि चीजों की एक गड़बड़ कर के बिना बी. 380 00:15:50,540 --> 00:15:51,560 हम एक चर का उपयोग किया. 381 00:15:51,560 --> 00:15:52,870 यह अस्थायी कहा जाता है. 382 00:15:52,870 --> 00:15:55,520 >> लेकिन मौलिक क्या था सोमवार को इस कोड के साथ समस्या है? 383 00:15:55,520 --> 00:15:57,700 384 00:15:57,700 --> 00:15:58,870 यहां समस्या क्या थी? 385 00:15:58,870 --> 00:16:00,106 386 00:16:00,106 --> 00:16:00,605 हाँ. 387 00:16:00,605 --> 00:16:01,970 >> दर्शक: यह अधिक स्थान लेता है. 388 00:16:01,970 --> 00:16:04,719 >> डेविड जे Malan: अधिक ऊपर ले जाता है अंतरिक्ष, मैं एक चर का उपयोग कर रहा हूँ क्योंकि, 389 00:16:04,719 --> 00:16:05,400 और वह ठीक है. 390 00:16:05,400 --> 00:16:07,300 यह सच है, लेकिन मैं कर रहा हूँ यह ठीक है कहने जा रहा. 391 00:16:07,300 --> 00:16:10,030 यह भव्य में केवल 32 बिट्स है चीजों की योजना है, तो कोई बड़ी बात नहीं. 392 00:16:10,030 --> 00:16:10,655 अन्य विचार? 393 00:16:10,655 --> 00:16:12,572 दर्शक: यह केवल स्वैप स्थानीय स्तर पर चर. 394 00:16:12,572 --> 00:16:13,571 डेविड जे Malan: बिल्कुल. 395 00:16:13,571 --> 00:16:15,090 यह केवल स्थानीय चर स्वैप. 396 00:16:15,090 --> 00:16:18,173 किसी भी समय आप एक function-- कॉल क्योंकि मैं Annenberg से ट्रे था जब 397 00:16:18,173 --> 00:16:19,840 पिछली बार, आप तल पर मुख्य है. 398 00:16:19,840 --> 00:16:23,560 जैसे ही आप नामक एक समारोह फोन के रूप में स्वैप, स्वैप एक्स और वाई नहीं मिलता है, 399 00:16:23,560 --> 00:16:24,400 मूल मान. 400 00:16:24,400 --> 00:16:26,392 क्या हम दावा किया था, स्वैप मिलता है? 401 00:16:26,392 --> 00:16:27,100 दर्शक: प्रतियां. 402 00:16:27,100 --> 00:16:28,090 डेविड जे Malan: उन की प्रतियां तो. 403 00:16:28,090 --> 00:16:31,120 तो यह आप पर है, एक और दो हो जाता है पिछली बार से उदाहरण याद करते हैं, 404 00:16:31,120 --> 00:16:34,730 लेकिन एक और दो की प्रतिलिपि कि सफलतापूर्वक बदली हैं. 405 00:16:34,730 --> 00:16:38,550 लेकिन दुर्भाग्य से अंत में, उन मूल्यों को अभी भी वही कर रहे हैं. 406 00:16:38,550 --> 00:16:41,880 तो हम साथ यह देख सकते हैं हमारे नए दोस्त, उम्मीद है कि GDB, 407 00:16:41,880 --> 00:16:45,180 आप या TFS और सीए है कि निम्नानुसार की ओर से मार्गदर्शन दिया गया. 408 00:16:45,180 --> 00:16:51,210 >> तो कोई स्वैप याद चलो like-- लग रहा है इस तरह this-- दिखता खुला. 409 00:16:51,210 --> 00:16:54,160 हम दो के लिए, एक के लिए वाई एक्स initialized. 410 00:16:54,160 --> 00:16:55,620 प्रिंट एफ का एक गुच्छा था. 411 00:16:55,620 --> 00:16:58,080 लेकिन फिर, कुंजी कॉल यहाँ, स्वैप करने के लिए किया गया था जो 412 00:16:58,080 --> 00:17:00,260 वास्तव में कोड हम है बस एक पल पहले देखा था. 413 00:17:00,260 --> 00:17:03,180 कौन सा पहली बार में सही है नज़र, लेकिन कार्यात्मक, 414 00:17:03,180 --> 00:17:06,800 इस कार्यक्रम की वजह से काम नहीं करता है यह स्थायी रूप से एक्स और वाई स्वैप नहीं है. 415 00:17:06,800 --> 00:17:10,190 >> तो, एक त्वरित गर्म है यह देखते हैं यहाँ GDB, एक ./noswap साथ. 416 00:17:10,190 --> 00:17:11,867 417 00:17:11,867 --> 00:17:15,200 भारी जानकारी का एक गुच्छा है कि मैं अब के लिए नियंत्रण एल के साथ से छुटकारा मिल जाएगा. 418 00:17:15,200 --> 00:17:17,516 और अब, मैं जा रहा हूँ आगे बढ़ो और इसे चलाते हैं. 419 00:17:17,516 --> 00:17:19,349 और दुर्भाग्य से, कि कि उपयोगी नहीं था. 420 00:17:19,349 --> 00:17:22,355 यह इस के अंदर कार्यक्रम भागा कार्यक्रम, GDB, एक डिबगर बुलाया 421 00:17:22,355 --> 00:17:23,730 लेकिन यह मेरे आसपास प्रहार नहीं जाने दिया. 422 00:17:23,730 --> 00:17:26,229 >> इसलिए मैं वास्तव में रोक सकते हैं कैसे इस कार्यक्रम के अंदर निष्पादन? 423 00:17:26,229 --> 00:17:27,410 424 00:17:27,410 --> 00:17:28,329 तो टूट गया. 425 00:17:28,329 --> 00:17:32,340 और मैं किसी पर भी तोड़ सकता है लाइन नंबर, एक, 10, 15. 426 00:17:32,340 --> 00:17:35,530 लेकिन मैं यह भी प्रतीकात्मक तोड़ सकते हैं ब्रेक के मुख्य कह कर. 427 00:17:35,530 --> 00:17:38,980 और वह एक ब्रेक सेट करने के लिए जा रहा है बिंदु, जाहिरा तौर पर मुख्य लाइन 16 पर. 428 00:17:38,980 --> 00:17:40,050 और जहां लाइन 16 है? 429 00:17:40,050 --> 00:17:42,960 के कोड को ऊपर जाने दो और noswap के लिए ऊपर जाना है. 430 00:17:42,960 --> 00:17:46,930 और वास्तव में, लाइन 16 है बहुत पहले कार्यक्रम में. 431 00:17:46,930 --> 00:17:52,130 >> तो अब, मुझे आगे जाना है और प्रकार अगर , इस समय चलाने लिखें, इसे रोक दिया. 432 00:17:52,130 --> 00:17:53,080 तो चलो चारों ओर से प्रहार करते हैं. 433 00:17:53,080 --> 00:17:55,716 क्यों एक्स शून्य है x-- प्रिंट? 434 00:17:55,716 --> 00:17:56,705 435 00:17:56,705 --> 00:17:57,830 और डॉलर के हस्ताक्षर की अनदेखी. 436 00:17:57,830 --> 00:17:59,725 यही शौक़ीन के लिए बस है कार्यक्रम का उपयोग. 437 00:17:59,725 --> 00:18:00,780 438 00:18:00,780 --> 00:18:03,140 क्यों पल में एक्स शून्य है? 439 00:18:03,140 --> 00:18:03,640 हाँ. 440 00:18:03,640 --> 00:18:07,061 >> दर्शक: यह सही से पहले रोके गए रेखा 16, नहीं वास्तव में लाइन 16 पर. 441 00:18:07,061 --> 00:18:08,060 डेविड जे Malan: बिल्कुल. 442 00:18:08,060 --> 00:18:11,630 GDB, डिफ़ॉल्ट रूप से रुका हुआ है, किया गया है बस लाइन 16 से पहले निष्पादन. 443 00:18:11,630 --> 00:18:14,820 तो यह निष्पादित नहीं किया गया है जो कुछ अज्ञात मूल्य का है एक्स का मतलब है. 444 00:18:14,820 --> 00:18:17,150 और हम यह है कि भाग्यशाली है शून्य की तरह साफ कुछ. 445 00:18:17,150 --> 00:18:20,310 तो अब मैं अगले प्रकार हैं, अब यह 16 से मार डाला. 446 00:18:20,310 --> 00:18:22,000 मुझे 17 को निष्पादित करने के लिए यह इंतज़ार कर रहा है. 447 00:18:22,000 --> 00:18:23,400 मुझे आगे और प्रिंट एक्स चलते हैं. 448 00:18:23,400 --> 00:18:24,094 यह एक है. 449 00:18:24,094 --> 00:18:25,260 मुझे आगे और प्रिंट वाई चलते हैं. 450 00:18:25,260 --> 00:18:26,176 अब मैं क्या देखना चाहिए? 451 00:18:26,176 --> 00:18:27,660 452 00:18:27,660 --> 00:18:28,560 >> दर्शक: [अश्राव्य] 453 00:18:28,560 --> 00:18:29,165 >> डेविड जे Malan: थोड़ा जोर. 454 00:18:29,165 --> 00:18:30,040 >> दर्शक: [अश्राव्य] 455 00:18:30,040 --> 00:18:30,537 456 00:18:30,537 --> 00:18:32,120 डेविड जे Malan: काफी नहीं एक आम सहमति. 457 00:18:32,120 --> 00:18:34,760 तो हाँ, हम कुछ कचरा मूल्य देखते हैं. 458 00:18:34,760 --> 00:18:37,862 अब, वाई वहाँ 134514064 है. 459 00:18:37,862 --> 00:18:39,320 खैर, यह सिर्फ कुछ कचरा मूल्य है. 460 00:18:39,320 --> 00:18:41,350 मेरा कार्यक्रम रैम का उपयोग करता है विभिन्न प्रयोजनों के लिए. 461 00:18:41,350 --> 00:18:42,350 अन्य कार्य नहीं है. 462 00:18:42,350 --> 00:18:44,040 अन्य लोगों को अपने कंप्यूटर के अंदर लिखा था. 463 00:18:44,040 --> 00:18:46,789 तो उन बिट्स के लिए इस्तेमाल किया गया है अन्य मूल्यों, और मैं क्या देख रहा हूँ 464 00:18:46,789 --> 00:18:49,470 कुछ के अवशेष है कि स्मृति के पूर्व उपयोग. 465 00:18:49,470 --> 00:18:53,350 >> तो कोई बड़ी बात नहीं, क्योंकि जैसे ही मैं अगले टाइप करें और फिर वाई प्रिंट के रूप में, 466 00:18:53,350 --> 00:18:55,640 यह करने के लिए प्रारंभ है मैं चाहता हूँ कि मूल्य. 467 00:18:55,640 --> 00:18:57,400 तो अब, चलो एक छोटे से तेजी से आगे जाने दिया. 468 00:18:57,400 --> 00:18:58,540 अगले के लिए एन. 469 00:18:58,540 --> 00:18:59,570 चलो फिर से ऐसा करते हैं. 470 00:18:59,570 --> 00:19:00,530 चलो फिर से ऐसा करते हैं. 471 00:19:00,530 --> 00:19:02,404 लेकिन मैं हिट नहीं करना चाहते यहाँ यह, क्योंकि मैं अगर 472 00:19:02,404 --> 00:19:05,110 अंदर क्या हो रहा है देखना चाहते हैं स्वैप की, आदेश क्या है? 473 00:19:05,110 --> 00:19:05,520 >> दर्शक: कदम. 474 00:19:05,520 --> 00:19:06,436 >> डेविड जे Malan: कदम. 475 00:19:06,436 --> 00:19:09,800 तो यह एक में मुझे कदम बल्कि इस पर से समारोह,. 476 00:19:09,800 --> 00:19:12,270 और अब, यह एक छोटे से गुप्त है ईमानदारी से, लेकिन यह सिर्फ है 477 00:19:12,270 --> 00:19:14,581 मैं अब लाइन 33 में हूँ मुझे बता रहा है. 478 00:19:14,581 --> 00:19:15,580 और फिर यह करते हैं. 479 00:19:15,580 --> 00:19:16,080 छापा अस्थायी. 480 00:19:16,080 --> 00:19:17,129 481 00:19:17,129 --> 00:19:20,170 कचरा मूल्य, नकारात्मक इस समय, लेकिन यह सिर्फ अभी भी एक कचरा मूल्य है. 482 00:19:20,170 --> 00:19:22,810 तो चलो आगे, प्रिंट अस्थायी करते हैं. 483 00:19:22,810 --> 00:19:27,130 यह 1 करने के लिए प्रारंभ है जो एक उर्फ ​​एक्स का मान था. 484 00:19:27,130 --> 00:19:29,110 >> अब, जहां हमारे एक हैं और से आ रही एक्स? 485 00:19:29,110 --> 00:19:32,510 खैर, हम मुख्य में नोटिस इन मूल्यों एक्स और वाई बुलाया. 486 00:19:32,510 --> 00:19:34,740 हम तो इस प्रकार के रूप में उन्हें स्वैप करने के लिए पारित किया. 487 00:19:34,740 --> 00:19:37,010 एक्स अल्पविराम वाई पहले आया था. 488 00:19:37,010 --> 00:19:40,020 और फिर, स्वैप उन्हें एक्स और वाई कह सकते हैं. 489 00:19:40,020 --> 00:19:42,630 लेकिन स्पष्टता के लिए, यह है ए और बी उन्हें बुला. 490 00:19:42,630 --> 00:19:45,970 लेकिन एक और बी अब होने जा रहे हैं क्रमशः एक्स और वाई, की प्रतियां. 491 00:19:45,970 --> 00:19:50,660 >> मैं अस्थायी वापस GDB को जाना तो अगर अब एक और एक अब एक है. 492 00:19:50,660 --> 00:19:56,130 मैं अब आगे क्या और अगर लेकिन प्रिंट करना एक, एक पर पहले से ही ले जाया गया है. 493 00:19:56,130 --> 00:20:00,030 दूध पूर्व में डाल दिया गया है संतरे का रस का गिलास, या ठीक इसके विपरीत. 494 00:20:00,030 --> 00:20:04,750 >> और मैं अब अगले फिर से करते हैं, और अगर मैं एक मानसिक स्वास्थ्य की जांच के रूप में बाहर प्रिंट, 495 00:20:04,750 --> 00:20:07,687 एक अभी भी दो है, लेकिन बी अब एक है. 496 00:20:07,687 --> 00:20:08,770 सच कहूँ तो, यह अभी भी वहाँ है. 497 00:20:08,770 --> 00:20:10,670 मैं क्या है अस्थायी परवाह नहीं है. 498 00:20:10,670 --> 00:20:16,850 लेकिन जैसे ही मैं अब टाइप के रूप में, हम कहते हैं, अब मैं अंत में हूँ, वापस जाने के लिए जारी 499 00:20:16,850 --> 00:20:17,480 कार्यक्रम. 500 00:20:17,480 --> 00:20:20,730 और दुर्भाग्य से, एक्स है अभी भी एक और वाई अभी भी दो है. 501 00:20:20,730 --> 00:20:22,272 >> तो वहाँ GDB की उपयोगिता क्या था? 502 00:20:22,272 --> 00:20:23,980 यह मुझे ठीक करने में मदद नहीं की थी समस्या से प्रति, 503 00:20:23,980 --> 00:20:26,265 लेकिन यह उम्मीद है कि मुझे मदद साकार से यह समझने 504 00:20:26,265 --> 00:20:30,000 कि हाँ, मेरा तर्क सही है, लेकिन मेरे कोड अंततः नहीं हो रही है 505 00:20:30,000 --> 00:20:31,450 एक स्थायी प्रभाव. 506 00:20:31,450 --> 00:20:34,570 इसलिए कि हम एक समस्या है अब आज हल करने के लिए जा रहा है. 507 00:20:34,570 --> 00:20:37,870 >> लेकिन इस के माध्यम से वहाँ मिलता है. 508 00:20:37,870 --> 00:20:39,230 स्ट्रिंग एक झूठ है. 509 00:20:39,230 --> 00:20:41,860 यह भी, नहीं एक डेटा प्रकार यह बात है सी में मौजूद है 510 00:20:41,860 --> 00:20:44,750 कुछ के लिए एक पर्याय हो गया कुछ और के लिए समय, 511 00:20:44,750 --> 00:20:47,300 और हम के रूप में इस प्रकार है कि प्रकट कर सकते हैं. 512 00:20:47,300 --> 00:20:53,282 >> मुझे आगे जाना है और खोलने के चलो एक कार्यक्रम तुलना -0 बुलाया. 513 00:20:53,282 --> 00:20:56,240 और यह एक प्रकार बाहर के बजाय, हम कोड के माध्यम से चलना शुरू करेंगे 514 00:20:56,240 --> 00:20:58,040 मैं पहले से ही लिखा है, लेकिन यह केवल कुछ लाइनें है. 515 00:20:58,040 --> 00:20:59,570 इसलिए इस तुलना -0 है. 516 00:20:59,570 --> 00:21:02,380 और पहली बात मैं कर रहा हूँ पाठ की एक पंक्ति हो रही है. 517 00:21:02,380 --> 00:21:05,610 >> लेकिन मैं क्या कर रहा हूँ नोटिस पहली बार के लिए कर रही है. 518 00:21:05,610 --> 00:21:07,910 क्या स्पष्ट रूप से लाइन 21 के बारे में अलग है? 519 00:21:07,910 --> 00:21:10,020 520 00:21:10,020 --> 00:21:11,402 दरअसल, एक मिनट रुको. 521 00:21:11,402 --> 00:21:12,110 यह प्रति दो है. 522 00:21:12,110 --> 00:21:13,568 यही कारण है कि यहां तक ​​कि सही कार्यक्रम नहीं है. 523 00:21:13,568 --> 00:21:14,780 सब ठीक है, बिगाड़ने चेतावनी. 524 00:21:14,780 --> 00:21:16,890 ठीक है, तो कोई बात नहीं. 525 00:21:16,890 --> 00:21:18,520 यह एक भविष्य सवाल का जवाब है. 526 00:21:18,520 --> 00:21:21,450 >> यहाँ -0 तुलना, और मैं कर रहा हूँ है पाठ की एक पंक्ति प्राप्त करने के बारे में. 527 00:21:21,450 --> 00:21:22,435 कार्यक्रम के बहुत सरल. 528 00:21:22,435 --> 00:21:23,560 तो यह स्पष्ट है. 529 00:21:23,560 --> 00:21:28,070 इस सप्ताह एक, दो सप्ताह सामान की तरह है पल में. स्ट्रिंग एस = GetString. 530 00:21:28,070 --> 00:21:29,700 अब, मैं यहाँ नीचे फिर से कहना. 531 00:21:29,700 --> 00:21:31,830 स्ट्रिंग टी = GetString. 532 00:21:31,830 --> 00:21:35,300 इस में और फिर, पिछले बात कार्यक्रम, जैसा कि इसके नाम का सुझाव है, 533 00:21:35,300 --> 00:21:37,090 मैं उनकी तुलना करने की कोशिश करने के लिए जा रहा हूँ है. 534 00:21:37,090 --> 00:21:40,709 >> तो अगर, पहली स्ट्रिंग, = टी, तो मैं कर रहा हूँ के बराबर होती है 535 00:21:40,709 --> 00:21:42,250 आप एक ही बात को टाइप कहने जा रहा. 536 00:21:42,250 --> 00:21:44,291 वरना, मैं कहने जा रहा हूँ आप अलग अलग बातें लिखें. 537 00:21:44,291 --> 00:21:45,880 तो चलो संकलन और इस कार्यक्रम चलाते हैं. 538 00:21:45,880 --> 00:21:48,481 तो शून्य तुलना करना. 539 00:21:48,481 --> 00:21:48,980 अच्छा लग रहा है. 540 00:21:48,980 --> 00:21:50,490 कोई संकलन त्रुटियों. 541 00:21:50,490 --> 00:21:52,386 >> मुझे अब आगे चलते हैं और ./compare -0 लिखें. 542 00:21:52,386 --> 00:21:55,230 543 00:21:55,230 --> 00:21:59,220 मुझे आगे जाना है और कुछ कहते हैं कि : Daven और कुछ: रोब. 544 00:21:59,220 --> 00:22:00,450 और मैं अलग अलग बातें लिखें. 545 00:22:00,450 --> 00:22:01,250 अब तक सब ठीक है. 546 00:22:01,250 --> 00:22:02,680 कार्यक्रम सही हो रहा है. 547 00:22:02,680 --> 00:22:03,880 >> लेकिन फिर इसे चलाते हैं. 548 00:22:03,880 --> 00:22:05,800 कुछ कहो: Gabe. 549 00:22:05,800 --> 00:22:07,140 कुछ कहो: Gabe. 550 00:22:07,140 --> 00:22:08,520 551 00:22:08,520 --> 00:22:09,020 ठीक है. 552 00:22:09,020 --> 00:22:10,851 शायद मैं अंतरिक्ष बार मारा या कुछ दिखलाना. 553 00:22:10,851 --> 00:22:11,600 चलो फिर से ऐसा करते हैं. 554 00:22:11,600 --> 00:22:13,020 Zamyla तो. 555 00:22:13,020 --> 00:22:13,970 556 00:22:13,970 --> 00:22:14,470 Zamyla. 557 00:22:14,470 --> 00:22:15,740 558 00:22:15,740 --> 00:22:17,330 अलग अलग चीजें हैं. 559 00:22:17,330 --> 00:22:19,430 तो क्या चल रहा है? 560 00:22:19,430 --> 00:22:23,200 >> इसलिए हम इन दो लाइनों है कोड, GetString दो बार बुलाया जा रहा है. 561 00:22:23,200 --> 00:22:25,760 और फिर, मैं बस हूँ एस और टी की तुलना करने की कोशिश कर रहा. 562 00:22:25,760 --> 00:22:28,370 लेकिन हो रहा है तो वास्तव में क्या? 563 00:22:28,370 --> 00:22:31,180 खैर, मेरी लिखावट के बारे में कुछ हद तक इस उदाहरण कसाई. 564 00:22:31,180 --> 00:22:34,630 और वास्तव में फेंक दो इस को यहाँ पर, के रूप में अच्छी तरह से. 565 00:22:34,630 --> 00:22:37,390 566 00:22:37,390 --> 00:22:45,712 >> इसलिए हम एक लाइन की तरह है स्ट्रिंग एस = GetString. 567 00:22:45,712 --> 00:22:48,295 इसलिए कि बस पहले है उस कार्यक्रम से दिलचस्प लाइन. 568 00:22:48,295 --> 00:22:49,920 569 00:22:49,920 --> 00:22:52,974 लेकिन यह सब समय के लिए किया गया है क्या हुड के नीचे चल रहा है? 570 00:22:52,974 --> 00:22:55,890 खैर, बाएं हाथ पर पक्ष स्ट्रिंग है, जो चर के कुछ प्रकार है, 571 00:22:55,890 --> 00:22:56,785 और यह कहा जाता है. 572 00:22:56,785 --> 00:23:00,019 इसलिए मैं इस स्मृति उपयोग कर रहा है कि पता है, या राम, किसी तरह अपने कंप्यूटर में. 573 00:23:00,019 --> 00:23:02,060 तो मैं सूक्ष्म रूप में करने के लिए जा रहा हूँ एक वर्ग के रूप में उस आकर्षित. 574 00:23:02,060 --> 00:23:04,820 32 बिट, यह पता चला है, लेकिन भविष्य में उस पर और अधिक. 575 00:23:04,820 --> 00:23:06,410 और फिर, क्या यहाँ पर हो रहा है? 576 00:23:06,410 --> 00:23:08,700 >> ठीक है, जाहिर GetString उपयोगकर्ता से एक स्ट्रिंग हो जाता है. 577 00:23:08,700 --> 00:23:11,360 और GetString मिला Zamyla या Gabe या Daven. 578 00:23:11,360 --> 00:23:14,640 तो चलो पहला चुनने उन की, Daven था. 579 00:23:14,640 --> 00:23:19,174 इसलिए प्रभावी रूप से, क्या GetString मिला मुझे लगता है कि पहले मामले में डी ए वी ए एन था. 580 00:23:19,174 --> 00:23:22,690 581 00:23:22,690 --> 00:23:25,045 और फिर, और क्या किया यह मुझे चुपके से दे? 582 00:23:25,045 --> 00:23:25,920 दर्शक: [अश्राव्य] 583 00:23:25,920 --> 00:23:28,720 डेविड जे Malan: हाँ, / 0 या अशक्त चरित्र. 584 00:23:28,720 --> 00:23:30,550 तो इसे प्रभावी ढंग से मुझे एक स्ट्रिंग दे दी है. 585 00:23:30,550 --> 00:23:34,550 लेकिन हम पहले से ही पिछले से पता एक स्ट्रिंग सिर्फ एक सरणी है कि लग रहा है 586 00:23:34,550 --> 00:23:37,895 वर्ण की, और यह द्वारा समाप्त कर रहा है इस विशेष प्रहरी चरित्र, / 0. 587 00:23:37,895 --> 00:23:39,220 588 00:23:39,220 --> 00:23:42,310 >> लेकिन अगर यह सच है और यह एक वर्ग है, 589 00:23:42,310 --> 00:23:44,160 यह स्पष्ट रूप से एक बहुत बड़ा आयत है. 590 00:23:44,160 --> 00:23:46,830 और वास्तव में, यह है, मैं केवल 32 बिट का दावा. 591 00:23:46,830 --> 00:23:49,500 और यह स्पष्ट रूप से 32 से अधिक है बिट्स, यह शायद इसलिए है क्योंकि 592 00:23:49,500 --> 00:23:51,583 आठ प्लस आठ प्लस आठ प्लस आठ प्लस आठ, 593 00:23:51,583 --> 00:23:53,320 सिर्फ ASCII में बाइट्स की वजह से. 594 00:23:53,320 --> 00:23:57,030 कैसे हो हम फिट करने के लिए जा रहे हैं यहाँ इस छोटे से बॉक्स में Daven? 595 00:23:57,030 --> 00:23:59,880 >> खैर, क्या वास्तव में GetString कर रहा है? 596 00:23:59,880 --> 00:24:03,680 खैर, इस ग्रिड यहां का प्रतिनिधित्व करता है मेरे कंप्यूटर की मेमोरी या राम. 597 00:24:03,680 --> 00:24:07,564 तो चलो मनमाने ढंग से अगर हम कहते हैं कि इनमें से प्रत्येक, एक बाइट का प्रतिनिधित्व करता है 598 00:24:07,564 --> 00:24:09,730 फिर हम एक के बारे में सोच सकते हैं बाइट एक पते वाले के रूप में, 599 00:24:09,730 --> 00:24:13,830 33 ऑक्सफोर्ड स्ट्रीट, या 34 की तरह ऑक्सफोर्ड स्ट्रीट, या 35 ऑक्सफोर्ड स्ट्रीट. 600 00:24:13,830 --> 00:24:16,700 >> तो घरों पते बस की तरह और इमारतों पते हैं, 601 00:24:16,700 --> 00:24:19,810 इसलिए की व्यक्तिगत बाइट्स करना स्मृति पते या नंबर हैं 602 00:24:19,810 --> 00:24:21,042 कि विशिष्ट उन्हें पहचान. 603 00:24:21,042 --> 00:24:22,000 अब, यह मनमानी है. 604 00:24:22,000 --> 00:24:25,370 लेकिन मैं जा रहा हूँ, इसे सरल रखने के लिए बस कन्वेंशन द्वारा हेक्साडेसिमल उपयोग, 605 00:24:25,370 --> 00:24:28,200 लेकिन 0x अन्य कोई मतलब नहीं है से "इस हेक्साडेसिमल है." 606 00:24:28,200 --> 00:24:31,030 और मुझे लगता है कि दावा करने के लिए जा रहा हूँ 'डी' स्मृति में बाइट एक पर समाप्त होता है. 607 00:24:31,030 --> 00:24:34,210 >> मैं और कुछ नहीं में चल रहा है स्मृति, ताकि Daven पहला स्थान मिला 608 00:24:34,210 --> 00:24:35,509 बाइट एक पर. 609 00:24:35,509 --> 00:24:36,800 यह तो, 0x2 होने जा रहा है. 610 00:24:36,800 --> 00:24:37,831 611 00:24:37,831 --> 00:24:38,705 इस 0x3 करने जा रहा है. 612 00:24:38,705 --> 00:24:39,840 613 00:24:39,840 --> 00:24:41,800 इस 0x4 होने जा रहा है. 614 00:24:41,800 --> 00:24:43,025 इस 0x5 करने जा रहा है. 615 00:24:43,025 --> 00:24:44,025 इस 0X6 होने जा रहा है. 616 00:24:44,025 --> 00:24:45,560 617 00:24:45,560 --> 00:24:48,290 >> लेकिन अगर आप एक बार में सोचना शुरू क्या कंप्यूटर के करने के बारे में 618 00:24:48,290 --> 00:24:50,710 हुड के नीचे, आप अनुमान करने शुरू कर सकते हैं 619 00:24:50,710 --> 00:24:54,960 आप कैसे हैं, कुछ साल पहले, होता खुद सी को लागू किया है. 620 00:24:54,960 --> 00:24:58,360 शायद GetString क्या है returning-- यह क्योंकि 621 00:24:58,360 --> 00:25:00,946 ऐसा नहीं है की तरह लगता है लौटने Daven, दर असल, 622 00:25:00,946 --> 00:25:03,320 वह निश्चित रूप से नहीं जा रहा है क्योंकि इस छोटे box-- में फिट करने के लिए 623 00:25:03,320 --> 00:25:05,090 तो क्या GetString शायद लौट रहा है? 624 00:25:05,090 --> 00:25:07,958 625 00:25:07,958 --> 00:25:08,920 >> दर्शक: [अश्राव्य] 626 00:25:08,920 --> 00:25:10,540 >> डेविड जे Malan: Daven का स्थान. 627 00:25:10,540 --> 00:25:12,770 और यह यह कर दिया गया है कभी एक सप्ताह के बाद से. 628 00:25:12,770 --> 00:25:16,150 क्या GetString सच है लौटने के एक स्ट्रिंग, प्रति नहीं है. 629 00:25:16,150 --> 00:25:17,780 उस छोटे सफेद झूठ में से एक है. 630 00:25:17,780 --> 00:25:22,520 यह के पते लौट रहा है स्मृति में स्ट्रिंग, विशिष्ट पता. 631 00:25:22,520 --> 00:25:24,820 Daven 33 ऑक्सफोर्ड स्ट्रीट पर रहता है. 632 00:25:24,820 --> 00:25:29,310 लेकिन अधिक संक्षेप, गेविन रहता है 0x1 में, नंबर एक का पता. 633 00:25:29,310 --> 00:25:32,280 >> तो क्या इस में डाल दिया जाता है छोटे से बॉक्स तो, स्पष्ट होना 634 00:25:32,280 --> 00:25:35,930 कि स्ट्रिंग के बस पता है. 635 00:25:35,930 --> 00:25:38,110 तो यह सब समय, इस है पर जा कर दिया गया. 636 00:25:38,110 --> 00:25:41,650 लेकिन इस पर संकेत क्या अब सब तो यह है कि 637 00:25:41,650 --> 00:25:44,710 इसके अंदर एक नंबर, कौन है आप को रोकने के लिए, प्रोग्रामर, 638 00:25:44,710 --> 00:25:47,970 में किसी भी नंबर डाल से किसी भी चर और बस कूद 639 00:25:47,970 --> 00:25:49,080 स्मृति की है कि हिस्सा करने के लिए? 640 00:25:49,080 --> 00:25:51,320 और वास्तव में, हम देखेंगे एक खतरा है कि अगले समय है. 641 00:25:51,320 --> 00:25:53,500 >> लेकिन अब के लिए, यह अपर्याप्त महसूस करता है. 642 00:25:53,500 --> 00:25:55,630 मैं कहता हूँ, तो मुझे एक मिल स्ट्रिंग, आप मुझे Daven दे. 643 00:25:55,630 --> 00:25:57,230 लेकिन क्या तुम सच में मुझे Daven देना नहीं है. 644 00:25:57,230 --> 00:25:59,310 आप मुझे दे सभी Daven की पता है. 645 00:25:59,310 --> 00:26:04,310 मैं तो निश्चित रूप से पता है कैसे जहां Daven शुरू होता है और ends-- 646 00:26:04,310 --> 00:26:07,140 कहानी के weird-- हो रही Daven शुरू होता है और समाप्त होता है जहां, 647 00:26:07,140 --> 00:26:10,435 और, अगले तब स्मृति में स्ट्रिंग शुरू होता है? 648 00:26:10,435 --> 00:26:11,520 649 00:26:11,520 --> 00:26:13,620 >> ठीक है, तुम सौंपने रहे हैं मुझे Daven की शुरुआत 650 00:26:13,620 --> 00:26:17,230 अनिवार्य रूप से, मुझे कैसे पता चलेगा उसके नाम के अंत कहाँ है? 651 00:26:17,230 --> 00:26:20,550 यह विशेष अशक्त चरित्र, जो सभी को और अधिक महत्वपूर्ण है अब 652 00:26:20,550 --> 00:26:23,040 नीचे तार अगर हुड बस पहचान कर रहे हैं 653 00:26:23,040 --> 00:26:25,820 विशिष्ट स्मृति में उनके स्थान के आधार पर. 654 00:26:25,820 --> 00:26:28,130 तो यह सब समय है, कि क्या चल रहा है. 655 00:26:28,130 --> 00:26:32,470 >> इसलिए हम अब देखो यहाँ कोड की व्याख्या 656 00:26:32,470 --> 00:26:35,790 आप लाइन 26 में बग होगा. 657 00:26:35,790 --> 00:26:39,560 क्यों Zamyla और Zamyla अलग है? 658 00:26:39,560 --> 00:26:41,330 क्यों Gabe और Gabe अलग है? 659 00:26:41,330 --> 00:26:42,154 हाँ, पीठ में. 660 00:26:42,154 --> 00:26:43,390 >> दर्शक: वे अलग पते हैं. 661 00:26:43,390 --> 00:26:45,931 >> डेविड जे Malan: बस क्योंकि वे अलग पते हैं. 662 00:26:45,931 --> 00:26:48,820 आप GetString कॉल क्योंकि जब फिर, मैं यहाँ जल्दी करूँगा जो, 663 00:26:48,820 --> 00:26:52,870 इस दूसरी लाइन, स्ट्रिंग है टी, मुझे लगता है कि कार्यक्रम में किया था, 664 00:26:52,870 --> 00:26:55,030 GetString के लिए किसी अन्य कॉल के बराबर होती है. 665 00:26:55,030 --> 00:26:56,370 666 00:26:56,370 --> 00:26:58,670 मैं फोन अगली बार GetString, मैं जा रहा हूँ 667 00:26:58,670 --> 00:27:00,190 स्मृति का एक अलग हिस्सा पाने के लिए. 668 00:27:00,190 --> 00:27:02,220 >> GetString अनुमति दी है ऑपरेटिंग पूछने के लिए 669 00:27:02,220 --> 00:27:03,800 अधिक से अधिक स्मृति के लिए प्रणाली. 670 00:27:03,800 --> 00:27:07,894 यह एक ही पुन: उपयोग करने के लिए नहीं जा रहा है छह बाइट्स हर बार. 671 00:27:07,894 --> 00:27:09,810 यह एक नया हो रहा है स्मृति का हिस्सा, जो 672 00:27:09,810 --> 00:27:12,780 टी पाने के लिए जा रहा है इसका मतलब यहाँ पर कुछ अन्य मूल्य. 673 00:27:12,780 --> 00:27:15,380 >> मैं ऐसा इसलिए जब एस = बराबर होती है टी, आप की तुलना नहीं कर रहे हैं 674 00:27:15,380 --> 00:27:17,880 यह और एक के खिलाफ के खिलाफ डी इस और इस के खिलाफ वी. 675 00:27:17,880 --> 00:27:19,588 आप इस तुलना कर रहे हैं , जो इस के खिलाफ 676 00:27:19,588 --> 00:27:24,020 स्पष्ट रूप से सुंदर useful-- useless-- है , बहुत बेकार है वास्तव में कौन है क्योंकि 677 00:27:24,020 --> 00:27:25,830 तार स्मृति में हैं जहां परवाह करता है? 678 00:27:25,830 --> 00:27:26,850 >> और वास्तव में, हम नहीं है. 679 00:27:26,850 --> 00:27:28,980 और हम नहीं जा रहे हैं विशेष रूप से ध्यान रखने लगते हैं. 680 00:27:28,980 --> 00:27:34,180 केवल कीड़े पैदा कर सकते हैं कि हद तक और सुरक्षा खतरों इच्छा पैदा कर सकते हैं 681 00:27:34,180 --> 00:27:36,100 हम वास्तव में इस बारे में देखभाल करने के लिए शुरू करते हैं. 682 00:27:36,100 --> 00:27:37,230 तो चलो इस समस्या को दूर करते हैं. 683 00:27:37,230 --> 00:27:39,650 आप सुपर बस इसे ठीक, पता चला है. 684 00:27:39,650 --> 00:27:42,600 >> और जैसा कि मैंने पहले, वास्तव में चलो फिर पता चलता है कि, क्या होगा 685 00:27:42,600 --> 00:27:47,170 एक CS50 वर्ग में यदि आप करते हैं, और आप को लागू करने के लिए किया था 686 00:27:47,170 --> 00:27:48,600 दो तार के खिलाफ एक तुलना. 687 00:27:48,600 --> 00:27:51,440 आप स्पष्ट रूप से सिर्फ एस = टी बराबर होती उपयोग नहीं कर सकते. 688 00:27:51,440 --> 00:27:54,090 लेकिन सिर्फ तार्किक रूप से, कैसे आप इस स्ट्रिंग तुलना करेंगे 689 00:27:54,090 --> 00:27:56,370 सी कोड का उपयोग कर इस स्ट्रिंग के खिलाफ? 690 00:27:56,370 --> 00:27:56,880 हाँ. 691 00:27:56,880 --> 00:27:58,780 >> दर्शक: बस करना पाश के लिए [अश्राव्य] 692 00:27:58,780 --> 00:28:00,670 693 00:28:00,670 --> 00:28:01,670 डेविड जे Malan: बिल्कुल सही. 694 00:28:01,670 --> 00:28:02,900 दर्शक: [अश्राव्य] 695 00:28:02,900 --> 00:28:03,310 डेविड जे Malan: हाँ. 696 00:28:03,310 --> 00:28:05,390 बस पाश या एक के लिए एक का उपयोग पाश या जो कुछ भी करते हैं. 697 00:28:05,390 --> 00:28:08,710 लेकिन सिर्फ बुनियादी विचार करते हैं तो उस इस स्मृति या एक सरणी का एक हिस्सा है 698 00:28:08,710 --> 00:28:11,590 और यह, पर पुनरावृति दोनों एक ही समय में. 699 00:28:11,590 --> 00:28:12,960 और बस पत्रों की तुलना करें. 700 00:28:12,960 --> 00:28:14,260 >> और तुम एक हो गया है थोड़ा सावधान, क्योंकि आप 701 00:28:14,260 --> 00:28:16,247 एक उंगली नहीं करना चाहती अन्य अतीत में जाने के लिए 702 00:28:16,247 --> 00:28:18,080 एक स्ट्रिंग है क्योंकि अन्य की तुलना में अब. 703 00:28:18,080 --> 00:28:21,380 तो आप के लिए जाँच करना चाहते करने जा रहे हैं अंत में इस विशेष मूल्य, अशक्त. 704 00:28:21,380 --> 00:28:24,017 लेकिन यह सच में, है अंत में, कि जैसे ही आसान. 705 00:28:24,017 --> 00:28:26,100 और सच कहूँ तो, हम की जरूरत नहीं है उस कार्य को दोहराने की. 706 00:28:26,100 --> 00:28:27,960 यहाँ दो संस्करण है. 707 00:28:27,960 --> 00:28:32,910 और क्या मैं यहाँ कहने जा रहा हूँ वह यह है कि बजाय एस की तुलना की, = टी के बराबर होती है 708 00:28:32,910 --> 00:28:38,964 स्ट्रिंग अगर मैं इसके बजाय, कहने जा रहा हूँ एस अल्पविराम टी की तुलना = 0 के बराबर होती है. 709 00:28:38,964 --> 00:28:40,130 अब, स्ट्रिंग तुलना क्या है? 710 00:28:40,130 --> 00:28:43,046 >> यह एक समारोह है, पता चला है कि जिसका उद्देश्य जीवन में सी, के साथ आता है 711 00:28:43,046 --> 00:28:44,650 दो तार की तुलना करने के लिए है. 712 00:28:44,650 --> 00:28:48,300 हम पढ़ और, अगर तुलना हलचल अपनी मैन पेज या दस्तावेज या CS50 713 00:28:48,300 --> 00:28:50,630 संदर्भ, यह होगा बस आपको लगता है कि हलचल बताओ 714 00:28:50,630 --> 00:28:55,730 एक नकारात्मक या तो रिटर्न की तुलना नंबर या एक सकारात्मक संख्या या शून्य, 715 00:28:55,730 --> 00:28:57,660 शून्य का अर्थ है, जहां वे बराबर हो. 716 00:28:57,660 --> 00:28:58,570 >> तो सिर्फ अनुमान. 717 00:28:58,570 --> 00:29:00,390 यह क्या अगर मतलब हो सकता है तुलना हलचल 718 00:29:00,390 --> 00:29:02,110 नकारात्मक मूल्य या सकारात्मक मूल्य है? 719 00:29:02,110 --> 00:29:02,785 720 00:29:02,785 --> 00:29:04,285 दर्शक: अधिक या कम. 721 00:29:04,285 --> 00:29:05,570 डेविड जे Malan: हाँ, से अधिक है या की तुलना में कम है. 722 00:29:05,570 --> 00:29:08,640 तो आप एक पूरे सॉर्ट करना चाहता था एक dictionary-- में तार का गुच्छा 723 00:29:08,640 --> 00:29:12,975 हम अंततः road-- नीचे के रूप में होगा सही समारोह संभावित उपयोग करने के लिए, 724 00:29:12,975 --> 00:29:15,850 यह है कि क्या करने जा रहा है क्योंकि आप के लिए तार की तुलना, और बताओ 725 00:29:15,850 --> 00:29:20,060 आप एक बी से पहले आता है, या करता है बी एक वर्णानुक्रम से पहले आते हैं. 726 00:29:20,060 --> 00:29:21,490 हम वास्तव में ऐसा कर सकते हैं. 727 00:29:21,490 --> 00:29:23,620 >> और मैं एक दूसरे को किया नोटिस इस उदाहरण में बात. 728 00:29:23,620 --> 00:29:26,870 और क्या उच्च बदल गया है इस मुख्य समारोह में? 729 00:29:26,870 --> 00:29:28,500 730 00:29:28,500 --> 00:29:29,350 चार *. 731 00:29:29,350 --> 00:29:31,150 और यह कि अन्य सफेद झूठ है. 732 00:29:31,150 --> 00:29:33,750 यह सब समय, जब आपने स्ट्रिंग लिख गया, 733 00:29:33,750 --> 00:29:38,350 हम चुपके से नए सिरे से लिखना कर दिया गया है चार के रूप में स्ट्रिंग * तो वास्तव में उस बजना 734 00:29:38,350 --> 00:29:39,270 आप को समझता है. 735 00:29:39,270 --> 00:29:42,450 >> दूसरे शब्दों में, CS50.h में और हम अंत में देखेंगे, 736 00:29:42,450 --> 00:29:45,950 हम एक पर्याय कहा जाता स्ट्रिंग बनाया कि चार * के रूप में एक ही बात है. 737 00:29:45,950 --> 00:29:49,910 और अब के लिए, केवल इतना पता है कि * इस संदर्भ में, कम से कम, 738 00:29:49,910 --> 00:29:51,286 पते का मतलब है. 739 00:29:51,286 --> 00:29:52,210 >> क्या का पता? 740 00:29:52,210 --> 00:29:56,390 ठीक है, वास्तव में मैं ने कहा कि * चार, और, * int या * नाव नहीं 741 00:29:56,390 --> 00:30:00,820 * चार का मतलब है कि एक चार का पता. 742 00:30:00,820 --> 00:30:06,770 तो यहाँ इस छोटे से बॉक्स उर्फ स्ट्रिंग, वास्तव प्रकार * चार की है, 743 00:30:06,770 --> 00:30:10,490 जो कह रही है की बस एक अच्छा तरीका है, इस बॉक्स में एक पते जाना होगा. 744 00:30:10,490 --> 00:30:12,430 और क्या उस पते का उल्लेख करता है? 745 00:30:12,430 --> 00:30:13,780 जाहिर है, एक चार. 746 00:30:13,780 --> 00:30:16,410 >> लेकिन हम पूरी तरह से कर सकता पूर्णांक * और अन्य चीजें हैं. 747 00:30:16,410 --> 00:30:20,790 लेकिन अब के लिए, चार * वास्तव में सबसे अधिक है सरल और ब्याज में से एक. 748 00:30:20,790 --> 00:30:23,310 इसलिए इस समस्या जा रहा है फिर, हालांकि, वृद्धि करने के लिए. 749 00:30:23,310 --> 00:30:24,830 >> मैं इस कार्यक्रम को खोलने मान लीजिए. 750 00:30:24,830 --> 00:30:27,670 अब हम भविष्यवाणी कर सकते हैं चलो देखते हैं अगर क्या इस कोड के साथ गलत है. 751 00:30:27,670 --> 00:30:31,140 इस कार्यक्रम में तो, कॉपी 0, मैं हूँ आगे बढ़ो और फिर फोन करने वाला 752 00:30:31,140 --> 00:30:34,190 GetString और एस में मूल्य की दुकान. 753 00:30:34,190 --> 00:30:38,800 >> और फिर, क्यों मैं यह कर रहा हूँ बस सप्ताह अतीत से एक चेतावनी के रूप में? 754 00:30:38,800 --> 00:30:40,960 हम चाहते हैं कि GetString कहा था कभी कभी शून्य देता है. 755 00:30:40,960 --> 00:30:42,793 यह क्या अगर मतलब है GetString शून्य देता है? 756 00:30:42,793 --> 00:30:45,040 757 00:30:45,040 --> 00:30:46,034 कुछ गलत हो गया. 758 00:30:46,034 --> 00:30:48,950 यह शायद स्ट्रिंग भी है मतलब बड़ा, स्मृति के कंप्यूटर के बाहर. 759 00:30:48,950 --> 00:30:51,724 यह सुपर, सुपर, सुपर होता है शायद ही कभी, लेकिन यह भी हो सकता है. 760 00:30:51,724 --> 00:30:53,890 हम इसके लिए जाँच करना चाहते हैं, और कि हम क्या कर रहे है. 761 00:30:53,890 --> 00:30:57,910 >> अगर तुम नहीं करते हम, अब देखेंगे क्योंकि बातों के लिए आदतन जाँच शुरू 762 00:30:57,910 --> 00:31:00,870 शून्य की तरह, आप कर सकते हैं वास्तव में जाने के लिए शुरू 763 00:31:00,870 --> 00:31:03,106 स्मृति में पते के लिए अमान्य है कि कर रहे हैं. 764 00:31:03,106 --> 00:31:05,980 और तुम उत्प्रेरण शुरू करने जा रहे हैं अधिक से अधिक विभाजन दोष. 765 00:31:05,980 --> 00:31:08,360 या एक मैक या पीसी, बस एक कंप्यूटर के कारण लटका करने के लिए 766 00:31:08,360 --> 00:31:10,340 या एक कार्यक्रम संभावित, फ्रीज करने के लिए. 767 00:31:10,340 --> 00:31:14,930 >> तो अब, मैं, कॉपी 0.c में दावा मुझे लगता है कि वैसे इन तारों की नकल करने जा रहा हूँ 768 00:31:14,930 --> 00:31:15,685 28 लाइन. 769 00:31:15,685 --> 00:31:16,850 770 00:31:16,850 --> 00:31:18,750 और फिर, मैं जा रहा हूँ तल पर दावा करने के लिए 771 00:31:18,750 --> 00:31:21,430 यहाँ मैं जा रहा हूँ कि उनमें से एक को बदलने की. 772 00:31:21,430 --> 00:31:22,330 >> तो इस पर ध्यान दिया. 773 00:31:22,330 --> 00:31:24,370 मैं अपने पुराने दोस्त strlen बुला रहा हूँ. 774 00:31:24,370 --> 00:31:28,960 और सिर्फ अंग्रेजी में समझाने इस लाइन 34 क्या कर रहा है? 775 00:31:28,960 --> 00:31:32,480 क्या टी ब्रैकेट 0 करता है बाईं तरफ का प्रतिनिधित्व करते हैं. 776 00:31:32,480 --> 00:31:32,980 हाँ. 777 00:31:32,980 --> 00:31:34,339 >> दर्शक: टी के प्रथम चरित्र? 778 00:31:34,339 --> 00:31:35,880 डेविड जे Malan: टी के प्रथम वर्ण. 779 00:31:35,880 --> 00:31:36,379 यह बात है. 780 00:31:36,379 --> 00:31:40,024 टी के प्रथम वर्ण, मैं चाहता हूँ अपरकेस संस्करण आवंटित करने के लिए 781 00:31:40,024 --> 00:31:41,190 टी में पहले चरित्र की. 782 00:31:41,190 --> 00:31:43,200 तो इस capitalizing है पहले अक्षर. 783 00:31:43,200 --> 00:31:46,340 और फिर, बहुत पिछले बात मैं करना इस कार्यक्रम में मैं यहाँ का दावा 784 00:31:46,340 --> 00:31:50,340 मूल, एस, और यहाँ नकल, टी. 785 00:31:50,340 --> 00:31:54,610 >> लेकिन कहानी के आधार पर हम बस तार वास्तव में क्या कर रहे हैं के बारे में बताया 786 00:31:54,610 --> 00:31:57,520 वास्तव में लाइन 28 क्या है कर रही है, और क्या है 787 00:31:57,520 --> 00:31:59,405 जा रहा है जिसके परिणामस्वरूप बग स्क्रीन पर हो सकता है? 788 00:31:59,405 --> 00:32:01,300 789 00:32:01,300 --> 00:32:03,500 >> तो सबसे पहले, पहला सवाल, 28. 790 00:32:03,500 --> 00:32:09,040 स्ट्रिंग टी = वास्तव में क्या कर रही है? 791 00:32:09,040 --> 00:32:16,430 हम बाएँ हाथ में है तो यहाँ पक्ष स्ट्रिंग टी एस =; 792 00:32:16,430 --> 00:32:19,400 कि मुझे एक बॉक्स देता है यहाँ और एक बॉक्स यहाँ. 793 00:32:19,400 --> 00:32:25,530 और, इस पते 0x लगता है के मनमाने ढंग से, इस समय, कहने 50 चलो. 794 00:32:25,530 --> 00:32:28,847 क्या स्ट्रिंग टी एस = करता है हुड के नीचे क्या है? 795 00:32:28,847 --> 00:32:30,340 >> दर्शक: [अश्राव्य] 796 00:32:30,340 --> 00:32:34,100 >> डेविड जे Malan: यह स्मृति भंडार वहाँ पता है, इसलिए 0x50 वहाँ से चला जाता है. 797 00:32:34,100 --> 00:32:37,980 अब तो, अगर मैं पहली बार के लिए जाना टी में चरित्र और यह अपरकेस, 798 00:32:37,980 --> 00:32:39,535 मैं प्रभावी रूप से एस के लिए क्या कर रहा हूँ? 799 00:32:39,535 --> 00:32:41,300 800 00:32:41,300 --> 00:32:43,450 मैं वास्तव में सही, एक ही बात कर रहा हूँ? 801 00:32:43,450 --> 00:32:47,680 क्योंकि अगर पता 0x50-- और सिर्फ मैं यहां बोर्ड पर ज्यादा जगह नहीं है, 802 00:32:47,680 --> 00:32:51,750 लेकिन, इस यहाँ नीचे 0x50 है कि मान अपने कंप्यूटर की स्मृति में कहीं. 803 00:32:51,750 --> 00:32:55,825 >> और मैं, उदाहरण के लिए, Gabe है इस तरह, यहां लोअरकेस में. 804 00:32:55,825 --> 00:32:57,120 805 00:32:57,120 --> 00:33:01,980 और जैसा कि मैंने कहा है टी ब्रैकेट 0 पूंजीकृत हो जाता है. 806 00:33:01,980 --> 00:33:04,860 खैर, टी ब्रैकेट 0 टी में पहला अक्षर. 807 00:33:04,860 --> 00:33:07,840 तो थोड़ा छ जा रहा है बन बड़ा जी लेकिन समस्या 808 00:33:07,840 --> 00:33:09,410 , क्या यह भी करने के लिए बात है करता है? 809 00:33:09,410 --> 00:33:10,300 >> दर्शक: एक ही. 810 00:33:10,300 --> 00:33:11,841 >> डेविड जे Malan: एक ही सटीक बात. 811 00:33:11,841 --> 00:33:16,342 तो शायद एक सरल व्याख्या, वाक्यविन्यास थोड़ा अजीब है, भले ही. 812 00:33:16,342 --> 00:33:17,050 तो चलो यह करते हैं. 813 00:33:17,050 --> 00:33:20,210 ./copy -0 तो कॉपी 0 बनाओ और. 814 00:33:20,210 --> 00:33:21,820 815 00:33:21,820 --> 00:33:24,110 कुछ कहो: Gabe. 816 00:33:24,110 --> 00:33:26,760 और दुर्भाग्य से, दोनों उन्हें अब पूंजीकृत किया गया है, 817 00:33:26,760 --> 00:33:29,500 लेकिन उस के लिए अंतर्निहित हम बस कर रहे हैं कि कारण 818 00:33:29,500 --> 00:33:32,350 अब पतों के साथ काम कर. 819 00:33:32,350 --> 00:33:36,470 >> तो हम कैसे शुरू करते है address-- कोई यमक intended-- 820 00:33:36,470 --> 00:33:39,270 हम पता करने के लिए शुरू करते हैं कैसे इस विशेष समस्या? 821 00:33:39,270 --> 00:33:44,400 खैर, copy1.c में, बातें जा रहे हैं एक छोटे से अधिक जटिल हो. 822 00:33:44,400 --> 00:33:49,310 लेकिन मैं एक दावा करेगा धारणात्मक सरल समाधान. 823 00:33:49,310 --> 00:33:50,852 >> पहली नज़र में मिलना बहुत मुश्किल. 824 00:33:50,852 --> 00:33:53,560 पहली के लिए आसान नहीं होने जा रहा समय तुम, शायद, यह बाहर प्रकार 825 00:33:53,560 --> 00:33:57,440 लेकिन समस्या यह है कि अगर बस टी = सिर्फ कर 826 00:33:57,440 --> 00:33:59,694 प्रतियां पता, क्या, फिर मैं तुम पर ले सकते हैं, तो 827 00:33:59,694 --> 00:34:02,110 समाधान होने जा रहा है वास्तव में एक स्ट्रिंग नकल के लिए? 828 00:34:02,110 --> 00:34:04,906 829 00:34:04,906 --> 00:34:06,770 >> दर्शक: हम शायद हूँ फिर एक पाश का उपयोग करें. 830 00:34:06,770 --> 00:34:06,890 >> डेविड जे Malan: हाँ. 831 00:34:06,890 --> 00:34:08,390 तो हम फिर से एक पाश जरूरत जा रहे हैं. 832 00:34:08,390 --> 00:34:11,800 और हम कॉपी करना चाहते हैं क्योंकि अगर एक और स्ट्रिंग में एक स्ट्रिंग है, 833 00:34:11,800 --> 00:34:14,120 हम शायद यह करना चाहते हैं चरित्र द्वारा चरित्र. 834 00:34:14,120 --> 00:34:17,199 लेकिन समस्या यह है, तो है यह मूल रूप से है है 835 00:34:17,199 --> 00:34:22,159 अब हम स्पष्ट रूप से शुरू करने की जरूरत टी के लिए स्मृति का आवंटन. 836 00:34:22,159 --> 00:34:24,320 >> दूसरे शब्दों में, चलो इस एक आखिरी बार redraw. 837 00:34:24,320 --> 00:34:28,659 इस स्ट्रिंग एस = GetString है. 838 00:34:28,659 --> 00:34:30,956 839 00:34:30,956 --> 00:34:32,455 और के रूप में अच्छी तरह से, यहाँ यह ऊपर डाल दिया. 840 00:34:32,455 --> 00:34:36,639 841 00:34:36,639 --> 00:34:37,420 इस GetString है. 842 00:34:37,420 --> 00:34:39,070 843 00:34:39,070 --> 00:34:43,860 कुछ के लिए और फिर, तस्वीर उस तरह के रूप में पहले होने जा रहा है, 844 00:34:43,860 --> 00:34:44,360 G-A-B-ई / 0. 845 00:34:44,360 --> 00:34:47,294 846 00:34:47,294 --> 00:34:48,960 यही कारण है कि इस तरह एक छोटे से कुछ लग रहा है. 847 00:34:48,960 --> 00:34:53,650 और एस इसलिए, हम इस 0x50 कॉल और कहा कि 51, 52 होने जा रहा है. 848 00:34:53,650 --> 00:34:54,409 >> तो इस 0x50 है. 849 00:34:54,409 --> 00:34:55,679 850 00:34:55,679 --> 00:34:59,690 और फिर, मैं स्ट्रिंग टी करना. 851 00:34:59,690 --> 00:35:02,450 स्मृति में, कि बस जा रहा है मुझे इस तरह एक छोटे से वर्ग दे. 852 00:35:02,450 --> 00:35:04,080 इसलिए महत्वपूर्ण कदम अब क्या है? 853 00:35:04,080 --> 00:35:09,870 मैं टी में है की नकल करना चाहते हैं, क्या रिक्त हम यहाँ में भरने की जरूरत है? 854 00:35:09,870 --> 00:35:12,050 या हम करने की आवश्यकता है एक उच्च स्तर पर करते हैं? 855 00:35:12,050 --> 00:35:14,101 856 00:35:14,101 --> 00:35:14,600 हाँ? 857 00:35:14,600 --> 00:35:16,200 858 00:35:16,200 --> 00:35:17,020 कोई है? 859 00:35:17,020 --> 00:35:17,690 हाँ. 860 00:35:17,690 --> 00:35:19,214 >> दर्शक: हम [अश्राव्य] की जरूरत है. 861 00:35:19,214 --> 00:35:21,380 डेविड जे Malan: हाँ, हम इस रिक्त को भरने की जरूरत है. 862 00:35:21,380 --> 00:35:24,340 मैं फिर कॉपी और नहीं कर सकता Gabe का नाम भुनाने 863 00:35:24,340 --> 00:35:28,120 मैं ऑपरेटिंग सिस्टम पूछने तक स्मृति का एक और हिस्सा के लिए 864 00:35:28,120 --> 00:35:30,640 कि मूल रूप में कम से कम के रूप में बड़ा है. 865 00:35:30,640 --> 00:35:32,130 इसलिए कि एक सवाल के साथ छोड़ देता है. 866 00:35:32,130 --> 00:35:36,080 >> मैं ऑपरेटिंग सिस्टम नहीं पूछ रहे हो कैसे सिर्फ एक साधारण सा pointer-- के लिए 867 00:35:36,080 --> 00:35:38,530 यह कहा जाता है, के रूप में एक पता, एक pointer-- नहीं 868 00:35:38,530 --> 00:35:40,980 एक साधारण सा बॉक्स के लिए इस तरह से एक स्ट्रिंग बुलाया? 869 00:35:40,980 --> 00:35:44,200 मैं कैसे ऑपरेटिंग पूछ रहे हो स्मृति का एक बड़ा हिस्सा के लिए प्रणाली? 870 00:35:44,200 --> 00:35:48,430 इस प्रकार अब तक, मैं केवल कि वापस मिल गया है परोक्ष रूप से GetString फोन करके. 871 00:35:48,430 --> 00:35:50,740 तो कैसे GetString है अपनी स्मृति हो रही है भी? 872 00:35:50,740 --> 00:35:53,430 >> खैर, यह है कि वहाँ पता चला है यहाँ यह अन्य समारोह 873 00:35:53,430 --> 00:35:55,160 कि हम अब उपयोग करने के लिए शुरू करेंगे. 874 00:35:55,160 --> 00:35:59,780 अब, इस तरह से अधिक गुप्त than-- लग रहा है और मैं it-- देख सकते हैं, जो केवल एक हूँ 875 00:35:59,780 --> 00:36:03,150 इस लाइन रास्ता अधिक गुप्त लग रहा है तो यह पहली नज़र में ऐसा करना चाहिए. 876 00:36:03,150 --> 00:36:04,650 लेकिन यह अलग तंग करते हैं. 877 00:36:04,650 --> 00:36:07,950 >> बाएं हाथ की तरफ, मैं चार * टी है. 878 00:36:07,950 --> 00:36:13,280 अंग्रेजी में तो, चलो तैयार करने के लिए शुरू करते हैं तकनीकी भाषा में उचित वाक्य. 879 00:36:13,280 --> 00:36:19,757 तो इस आबंटित है एक प्रकार चार के चर टी कहा जाता है *. 880 00:36:19,757 --> 00:36:21,090 अब, यह वास्तव में क्या मतलब है? 881 00:36:21,090 --> 00:36:23,881 >> खैर, इसका मतलब है कि, मैं क्या जा रहा हूँ टी कहा जाता है इस चर में डाल करने के लिए? 882 00:36:23,881 --> 00:36:24,780 883 00:36:24,780 --> 00:36:26,402 एक चार की एक पते. 884 00:36:26,402 --> 00:36:28,360 ताकि, सिर्फ आसान है अधिक उचित तरीका 885 00:36:28,360 --> 00:36:29,930 के बाईं ओर का वर्णन. 886 00:36:29,930 --> 00:36:32,890 तो यह है कि यहां केवल इस बॉक्स बनाता है. 887 00:36:32,890 --> 00:36:34,760 तो दाईं ओर, शायद, हो रहा है 888 00:36:34,760 --> 00:36:37,170 बड़ा है कि आवंटित करने के लिए स्मृति की कैसे हिस्सा? 889 00:36:37,170 --> 00:36:38,340 तो चलो इस के अलावा तंग करते हैं. 890 00:36:38,340 --> 00:36:41,131 >> यह पहली नज़र में भारी है लेकिन अंदर यहाँ क्या हो रहा है? 891 00:36:41,131 --> 00:36:43,740 सबसे पहले, malloc, वहाँ जो हमारे नए दोस्त, जाहिरा तौर पर है 892 00:36:43,740 --> 00:36:45,450 "स्मृति आवंटित." 893 00:36:45,450 --> 00:36:49,560 तो यह पारित किया जा रहा तर्क है इसे में, तो यह एक बहुत बड़ा तर्क है. 894 00:36:49,560 --> 00:36:50,970 तो चलो इस के अलावा तंग करते हैं. 895 00:36:50,970 --> 00:36:53,410 >> एस के strlen, ज़ाहिर है, का प्रतिनिधित्व करता है the-- 896 00:36:53,410 --> 00:36:54,142 897 00:36:54,142 --> 00:36:55,600 दर्शक: अक्षरों की संख्या. 898 00:36:55,600 --> 00:36:56,710 डेविड जे Malan: बस एस में पात्रों की संख्या. 899 00:36:56,710 --> 00:36:59,040 तो चलो की लंबाई, मूल स्ट्रिंग. 900 00:36:59,040 --> 00:37:00,350 तो जी एक-B-ए. 901 00:37:00,350 --> 00:37:02,320 तो यह शायद चार इस मामले में है. 902 00:37:02,320 --> 00:37:05,485 क्यों मैं के बाद +1 कर रहा हूँ एस के strlen बुला? 903 00:37:05,485 --> 00:37:06,360 दर्शक: [अश्राव्य] 904 00:37:06,360 --> 00:37:07,590 डेविड जे Malan: उसके लिए विशेष अशक्त चरित्र. 905 00:37:07,590 --> 00:37:11,260 अगर आप मुझसे पूछें की लंबाई क्या है Gabe का नाम, मैं चार कहने जा रहा हूँ. 906 00:37:11,260 --> 00:37:14,480 हुड के नीचे है, हालांकि, मैं जरूरत अशक्त चरित्र के लिए कि पांचवें बाइट. 907 00:37:14,480 --> 00:37:16,100 मैं +1 कर रहा हूँ तो इसलिए. 908 00:37:16,100 --> 00:37:21,730 >> अब सिर्फ मामले में आप इस चल रहे हैं अन्य की तुलना में एक कंप्यूटर पर कार्यक्रम, कहते हैं, 909 00:37:21,730 --> 00:37:24,610 CS50 उपकरण, जहां एक चार का आकार 910 00:37:24,610 --> 00:37:26,350 अलग हो सकती है अपना खुद का computer-- से 911 00:37:26,350 --> 00:37:30,590 मैं इस फोन कर सकते हैं कि पता चला है ऑपरेटर sizeof, बस, कंप्यूटर पूछना 912 00:37:30,590 --> 00:37:32,870 एक का आकार क्या है इस कंप्यूटर पर चार? 913 00:37:32,870 --> 00:37:37,400 >> और इस में पांच गुणा करके एक चार का आकार, द्वारा उदाहरण है जो 914 00:37:37,400 --> 00:37:40,440 अधिकांश कंप्यूटर पर होगा सिर्फ एक, malloc हो 915 00:37:40,440 --> 00:37:44,830 मुझे यह बड़ा के लिए आवंटित करने के लिए जा रहा है यहीं पर खत्म स्मृति का हिस्सा. 916 00:37:44,830 --> 00:37:47,140 और यह return-- जा रहा है यह बात है तो यह एक function-- है 917 00:37:47,140 --> 00:37:48,265 क्या मेरे पास वापस जाने के लिए जा रहे हैं? 918 00:37:48,265 --> 00:37:50,914 919 00:37:50,914 --> 00:37:51,830 दर्शक: पता? 920 00:37:51,830 --> 00:37:53,709 डेविड जे Malan: क्या का पता? 921 00:37:53,709 --> 00:37:55,250 दर्शक: स्मृति की यह आवंटित? 922 00:37:55,250 --> 00:37:56,450 डेविड जे Malan: के स्मृति इसे दिये. 923 00:37:56,450 --> 00:37:59,189 इसलिए मुझे लगता है, सच में, कोई पता नहीं जहां यह खत्म होता जा रहा है. 924 00:37:59,189 --> 00:38:01,480 मुझे लगता है कि प्रस्ताव करने जा रहा हूँ यह 0x88 में खत्म हो रहा है. 925 00:38:01,480 --> 00:38:02,770 926 00:38:02,770 --> 00:38:06,009 पूरी तरह से मनमाना, लेकिन 0x50 के अलावा अन्य कहीं, 927 00:38:06,009 --> 00:38:08,800 ऑपरेटिंग सिस्टम की वजह से, क्या विंडोज और मैक ओएस मेरे लिए क्या है, 928 00:38:08,800 --> 00:38:11,230 यह दे रही है कि यह सुनिश्चित कर लें मुझे राम के विभिन्न हिस्सा. 929 00:38:11,230 --> 00:38:14,210 >> तो यह मान यह है, जहां स्मृति का हिस्सा खत्म हो सकता है. 930 00:38:14,210 --> 00:38:16,060 तो इस 0x88, यहाँ में समाप्त होता है. 931 00:38:16,060 --> 00:38:17,480 932 00:38:17,480 --> 00:38:21,570 तो अब स्पष्ट रूप से, मैं समझ सकता हूँ यह इस रूप में ही नहीं है कि, 933 00:38:21,570 --> 00:38:23,960 वे कम से इशारा कर रहे हैं क्योंकि स्मृति के विभिन्न मात्रा. 934 00:38:23,960 --> 00:38:29,980 अब मैं वास्तव में इस की नकल करना चाहते हैं तो में, के अपने प्रस्तावित समाधान करते हैं. 935 00:38:29,980 --> 00:38:36,870 >> , चलो बस जाओ, पाश के लिए एक का निर्माण करते हैं और टी ब्रैकेट कर मैं ब्रैकेट मैं हो जाता है. 936 00:38:36,870 --> 00:38:39,760 अब मैं उपयोग कर सकते हैं क्योंकि इस सरणी की तरह अंकन, 937 00:38:39,760 --> 00:38:43,390 क्योंकि भले ही malloc बहुत सामान्य रूप से मुझे स्मृति का आवंटन, 938 00:38:43,390 --> 00:38:45,290 स्मृति बस सन्निहित बाइट्स है. 939 00:38:45,290 --> 00:38:47,240 बाइट, बाइट, बाइट, वापस वापस करने के लिए वापस करने के लिए. 940 00:38:47,240 --> 00:38:50,030 >> मैं एक प्रोग्रामर के रूप में निश्चित रूप से कर सकते हैं एक सरणी, के रूप में व्यवहार जो 941 00:38:50,030 --> 00:38:55,090 मैं यह अंत में परिचित उपयोग कर सकते हैं बस कुछ वर्ग कोष्ठक का अंकन. 942 00:38:55,090 --> 00:38:56,462 943 00:38:56,462 --> 00:39:00,020 >> तो मुझे, क्योंकि वहाँ थामने जाने यह भी, सभी एक ही बार में बहुत कुछ है 944 00:39:00,020 --> 00:39:03,530 मूल विचार संक्षिप्त करने के लिए हालांकि कि स्ट्रिंग है, यह सब समय, 945 00:39:03,530 --> 00:39:05,550 एक नए डेटा प्रकार से प्रति नहीं है. 946 00:39:05,550 --> 00:39:10,150 यह सिर्फ एक तथाकथित सूचक है एक चरित्र का एक पता, 947 00:39:10,150 --> 00:39:12,650 जो सिर्फ मतलब है कि यह एक नंबर कि मानव सम्मेलन से 948 00:39:12,650 --> 00:39:15,350 हम 0x कुछ के रूप में लिख देते हैं. 949 00:39:15,350 --> 00:39:18,590 >> लेकिन यह सिर्फ एक संख्या है 33 ऑक्सफोर्ड स्ट्रीट की तरह, 950 00:39:18,590 --> 00:39:20,530 जो होना होता है सीएस इमारत के पते. 951 00:39:20,530 --> 00:39:22,000 952 00:39:22,000 --> 00:39:23,545 इन विवरणों पर कोई सवाल? 953 00:39:23,545 --> 00:39:24,790 954 00:39:24,790 --> 00:39:25,289 हाँ? 955 00:39:25,289 --> 00:39:28,530 >> दर्शक: क्यों हम जाँच कर बराबर टी के लिए नल के लिए? 956 00:39:28,530 --> 00:39:30,740 >> डेविड जे Malan: क्यों हम करते हैं अशक्त के बराबर टी के लिए जाँच? 957 00:39:30,740 --> 00:39:33,250 हम documentation-- पढ़ें malloc के लिए महान question--, 958 00:39:33,250 --> 00:39:37,020 यह ठीक प्रिंट में कहने के लिए जा रहा है कभी कभी malloc, अशक्त वापसी हो सकती है 959 00:39:37,020 --> 00:39:38,080 बस GetString की तरह. 960 00:39:38,080 --> 00:39:41,820 और वास्तव में, GetString शून्य देता है बदले में, malloc शून्य देता है, तो 961 00:39:41,820 --> 00:39:43,130 GetString malloc का उपयोग करता है. 962 00:39:43,130 --> 00:39:46,400 >> ओएस और अगर है कि हो सकता है, मैक ओएस, विंडोज, जो भी हो, बस है 963 00:39:46,400 --> 00:39:48,130 आप के लिए स्मृति से बाहर. 964 00:39:48,130 --> 00:39:49,820 इसलिए कि वहां क्या हुआ. 965 00:39:49,820 --> 00:39:52,910 >> और मुझे एक और बात को प्रकट करते हैं कि सिर्फ अपने दिमाग उड़ा सकता है 966 00:39:52,910 --> 00:39:55,100 या पूरी तरह से बहुत दूर लाइन खत्म हो. 967 00:39:55,100 --> 00:39:59,770 लेकिन मुझे अपने आप को रोकना जाने नकल के लिए पाश के लिए एक ही है, 968 00:39:59,770 --> 00:40:05,480 जो एक क्षण पहले, याद था इस. टी ब्रैकेट मैं ब्रैकेट मैं हो जाता है. 969 00:40:05,480 --> 00:40:06,740 >> अच्छा और उपयोगकर्ता के अनुकूल है. 970 00:40:06,740 --> 00:40:09,330 फिर दो सप्ताह की तरह लगता है. 971 00:40:09,330 --> 00:40:14,920 लेकिन इस संस्करण वास्तव में हो सकता है गुप्त लग रहा है जो इस के रूप में पुन: लिखा. 972 00:40:14,920 --> 00:40:18,280 यह एक तकनीक बुलाया सूचक है गणित, पता गणित. 973 00:40:18,280 --> 00:40:19,600 लेकिन क्यों यह काम करता है? 974 00:40:19,600 --> 00:40:22,220 >> अब annoyingly, सी के लेखकों का उपयोग करने का निर्णय लिया 975 00:40:22,220 --> 00:40:25,070 विभिन्न प्रयोजनों के लिए * प्रतीक. 976 00:40:25,070 --> 00:40:29,020 हम यह पहले से ही एक बार इस्तेमाल किया देखा है जिसका मतलब है चार *, "मुझे एक चर दे 977 00:40:29,020 --> 00:40:31,210 उस होते जा रहा है एक चार का पता. " 978 00:40:31,210 --> 00:40:33,990 इस संदर्भ में तो चार * "मुझे एक चर दे मतलब है." 979 00:40:33,990 --> 00:40:40,050 >> दुर्भाग्य से, आप * बिना उपयोग करें उसके सामने एक शब्द, चार की तरह, 980 00:40:40,050 --> 00:40:41,905 यह अब कहा जाता है भिन्नता ऑपरेटर. 981 00:40:41,905 --> 00:40:43,530 और हम लंबे समय से पहले इस बात का अधिक देखेंगे. 982 00:40:43,530 --> 00:40:44,930 लेकिन यह सिर्फ "वहाँ जाना मतलब है." 983 00:40:44,930 --> 00:40:49,070 कोई मुझे सौंप अगर यह कह की तरह है कागज के एक टुकड़े पर "33 ऑक्सफोर्ड स्ट्रीट," 984 00:40:49,070 --> 00:40:53,830 मैं "* 33 ऑक्सफोर्ड स्ट्रीट," अगर इसका मतलब है कि "सीएस के निर्माण के लिए सड़क के नीचे चलते हैं." 985 00:40:53,830 --> 00:40:57,220 >> तो * सिर्फ वहाँ अगर जाने का मतलब उसके सामने कोई शब्द नहीं है. 986 00:40:57,220 --> 00:40:59,100 तो स्पष्ट होना, टी क्या है? 987 00:40:59,100 --> 00:41:03,250 टी का हिस्सा का पता है मेरे पास वापस दिया गया था कि स्मृति. 988 00:41:03,250 --> 00:41:06,650 एस, साफ होने का क्या, का पता है उदाहरण में हम चर्चा कर रहा है, 989 00:41:06,650 --> 00:41:07,500 लोअरकेस Gabe की? 990 00:41:07,500 --> 00:41:08,990 991 00:41:08,990 --> 00:41:10,005 पता है of-- 992 00:41:10,005 --> 00:41:11,585 993 00:41:11,585 --> 00:41:12,460 दर्शक: स्ट्रिंग. 994 00:41:12,460 --> 00:41:14,126 डेविड जे Malan: Gabe का मूल नाम की. 995 00:41:14,126 --> 00:41:16,660 इसलिए इसके बारे में पता है स्मृति के इस टुकड़ा. 996 00:41:16,660 --> 00:41:22,220 इसलिए मैं कहता हूँ अगर टी i-- मैं, नोटिस, हमारा पुराना दोस्त है. 997 00:41:22,220 --> 00:41:24,770 यह सिर्फ एक सूचकांक चर है उस पर शून्य से पुनरावृति है 998 00:41:24,770 --> 00:41:26,960 स्ट्रिंग है की लंबाई के लिए. 999 00:41:26,960 --> 00:41:30,367 तो यह तो शून्य, एक होने जा रहा है फिर दो, फिर तीन, चार. 1000 00:41:30,367 --> 00:41:33,200 तो चलो इन नए इकट्ठा करते हैं स्क्रैच तरह पहेली टुकड़े, अगर तुम जाएगा, 1001 00:41:33,200 --> 00:41:36,140 भले ही, फिर से, वाक्यविन्यास स्क्रैच की तुलना में कहीं अधिक रहस्यमय है. 1002 00:41:36,140 --> 00:41:39,522 तो टी एक पता है + मैं मुझे देने जा रहा है 1003 00:41:39,522 --> 00:41:42,480 एक नंबर, क्योंकि इन सभी कर रहे हैं हम हेक्स के रूप में ड्राइंग किया गया है कि संख्या. 1004 00:41:42,480 --> 00:41:43,560 लेकिन वे सिर्फ संख्या हो. 1005 00:41:43,560 --> 00:41:49,960 >> टी के पते हमने कहा तो अगर था 0x88, 0x88 प्लस शून्य क्या है. 1006 00:41:49,960 --> 00:41:51,564 1007 00:41:51,564 --> 00:41:53,980 आप आराम से नहीं कर रहे हैं यहां तक ​​कि अगर अभी तक हेक्स साथ, एक अनुमान ले. 1008 00:41:53,980 --> 00:41:54,410 >> दर्शक: मूल. 1009 00:41:54,410 --> 00:41:55,850 >> डेविड जे Malan: 0x88 फिर भी. 1010 00:41:55,850 --> 00:41:58,910 तो * क्या मतलब 0x88 करता है? 1011 00:41:58,910 --> 00:42:02,670 इसका मतलब है जो "वहाँ जाओ", इसका मतलब है प्रभावी ढंग से, "यहाँ अपनी उंगली डाल दिया." 1012 00:42:02,670 --> 00:42:06,930 और अब के दाएँ हाथ की ओर इस अभिव्यक्ति, * और फिर parens में, 1013 00:42:06,930 --> 00:42:11,586 मैं जो, एस का मतलब + यहाँ थोड़ा जी से संबोधित करते हैं. 1014 00:42:11,586 --> 00:42:16,220 एस + 0, ज़ाहिर है, जो कुछ भी है, है. 1015 00:42:16,220 --> 00:42:21,230 >> तो अब, यह * है, है जो सिर्फ * 33 की तरह ऑक्सफोर्ड स्ट्रीट पते पर जाने का मतलब 1016 00:42:21,230 --> 00:42:22,010 एस. 1017 00:42:22,010 --> 00:42:24,170 तो यहाँ इस उंगली, दाहिने हाथ है. 1018 00:42:24,170 --> 00:42:26,050 तो क्या मैं क्या में कॉपी करने के लिए जा रहा हूँ? 1019 00:42:26,050 --> 00:42:30,260 जो सही पर बात, Gabe, यहाँ पर यहाँ थोड़ा जी,. 1020 00:42:30,260 --> 00:42:32,750 >> उस की और इसलिए प्रभाव पाश की पहली यात्रा, 1021 00:42:32,750 --> 00:42:36,200 आप यह लग रहा है, भले ही प्रस्तावित कुछ से पागल अधिक जटिल 1022 00:42:36,200 --> 00:42:42,110 हम पहले देखा है बस कह रहा है यहां जाने के लिए और यहाँ कि चरित्र की नकल. 1023 00:42:42,110 --> 00:42:44,700 यह आप दोनों स्थानों के लिए एक नक्शा दे रही है. 1024 00:42:44,700 --> 00:42:46,130 >> और हम इस बात का कहीं अधिक देखेंगे. 1025 00:42:46,130 --> 00:42:50,600 लेकिन अब के लिए, आशा है कि बस के लिए है इन बुनियादी विचारों में से कुछ परिचय. 1026 00:42:50,600 --> 00:42:53,550 और वास्तव में, चलो हम देखते हैं यहाँ एक अंतिम कार्यक्रम, 1027 00:42:53,550 --> 00:42:57,480 और फिर वादा किया claymation, जो सब कुछ ठीक कर देगा. 1028 00:42:57,480 --> 00:42:57,980 ठीक है. 1029 00:42:57,980 --> 00:43:01,680 तो मुझे वहाँ हम चले up-- खोलते हैं. 1030 00:43:01,680 --> 00:43:02,850 1031 00:43:02,850 --> 00:43:05,440 हम वापस आ जाएंगे me-- तो जाने लंबे समय से पहले इस तस्वीर को. 1032 00:43:05,440 --> 00:43:08,360 मुझे यहाँ इस अंतिम उदाहरण खोल दें. 1033 00:43:08,360 --> 00:43:09,440 1034 00:43:09,440 --> 00:43:12,710 >> तो यहाँ एक सुपर, सुपर है accomplishes कि कार्यक्रम 1035 00:43:12,710 --> 00:43:15,050 निम्न है कि जीवन में कुछ भी नहीं है. 1036 00:43:15,050 --> 00:43:18,740 यह पहली बार दो चर, एक्स वाणी और इस बार संख्या नहीं हैं कि वाई,, 1037 00:43:18,740 --> 00:43:19,240 दर असल. 1038 00:43:19,240 --> 00:43:20,448 वे दर असल, पूर्णांकों नहीं कर रहे हैं. 1039 00:43:20,448 --> 00:43:22,899 वे * जाहिरा तौर पर कर रहे हैं int. 1040 00:43:22,899 --> 00:43:25,690 इसलिए किसी को भी बस, इसका मतलब क्या है अपने डेटा प्रकार हैं, अपने चर, 1041 00:43:25,690 --> 00:43:26,860 प्रकार int * सितारा की है? 1042 00:43:26,860 --> 00:43:30,240 यही कारण है कि एक पूर्णांक का पता है. 1043 00:43:30,240 --> 00:43:31,990 >> इसलिए मुझे लगता है कि यह अभी तक है जहां कोई जानकारी नहीं है. 1044 00:43:31,990 --> 00:43:35,150 यह सिर्फ ", अंततः, डाल का मतलब यहाँ एक पूर्णांक का पता. " 1045 00:43:35,150 --> 00:43:38,340 इसमें जहाँ भी 0x50, 0x88, स्मृति, एक पते वहाँ जा रहा है. 1046 00:43:38,340 --> 00:43:40,200 और कि वाई क्या है साथ ही साथ, होने जा रहा. 1047 00:43:40,200 --> 00:43:44,920 >> मैं अब कहते हैं कि एक्स = malloc (sizeof (int)), इस कह का एक अच्छा तरीका है, 1048 00:43:44,920 --> 00:43:49,000 अरे ऑपरेटिंग सिस्टम, malloc के माध्यम से, आकार के लिए मुझे पर्याप्त स्मृति दे 1049 00:43:49,000 --> 00:43:52,370 जो शायद एक पूर्णांक के 32 बिट या चार बाइट्स होने जा रहा. 1050 00:43:52,370 --> 00:43:53,680 >> तो malloc क्या वापस करता है? 1051 00:43:53,680 --> 00:43:55,250 Malloc एक पता देता है. 1052 00:43:55,250 --> 00:43:57,020 तो क्या एक्स में संग्रहित हो रहा है? 1053 00:43:57,020 --> 00:44:00,600 का हिस्सा का पता स्मृति, चार बाइट्स, कि malloc 1054 00:44:00,600 --> 00:44:03,360 अभी पूछकर मेरे लिए पाया ऑपरेटिंग सिस्टम. 1055 00:44:03,360 --> 00:44:08,240 >> अब इस बीच, रेखा यहां चार, * एक्स = 42. 1056 00:44:08,240 --> 00:44:09,990 बस, स्पष्ट होना वहाँ नीचे क्या हो रहा है? 1057 00:44:09,990 --> 00:44:11,530 बाएं हाथ की तरफ, * एक्स. 1058 00:44:11,530 --> 00:44:13,610 कि * 33 ऑक्सफोर्ड स्ट्रीट की तरह है. 1059 00:44:13,610 --> 00:44:15,523 तो * एक्स क्या मतलब है? 1060 00:44:15,523 --> 00:44:16,450 >> दर्शक: करने के लिए जाओ. 1061 00:44:16,450 --> 00:44:17,908 >> डेविड जे Malan: उस पते पर जाएँ. 1062 00:44:17,908 --> 00:44:20,466 जहाँ भी की है कि हिस्सा स्मृति इसे करने के लिए जाना जाता है. 1063 00:44:20,466 --> 00:44:21,979 और जाहिर है, वहाँ क्या रखा है? 1064 00:44:21,979 --> 00:44:22,520 दर्शक: 42. 1065 00:44:22,520 --> 00:44:23,580 डेविड जे Malan: 42. 1066 00:44:23,580 --> 00:44:25,650 सब ठीक है, * वाई, एक ही विचार है. 1067 00:44:25,650 --> 00:44:26,860 वाई में पता करने के लिए जाओ. 1068 00:44:26,860 --> 00:44:31,740 वहाँ 13 नंबर रखो, लेकिन पल में वाई क्या है? 1069 00:44:31,740 --> 00:44:33,172 1070 00:44:33,172 --> 00:44:34,630 दर्शक: कोई स्मृति y के लिए नहीं है. 1071 00:44:34,630 --> 00:44:35,710 डेविड जे Malan: वहाँ वाई के लिए कोई स्मृति है. 1072 00:44:35,710 --> 00:44:38,215 तो क्या शायद वाई करता है हम कह दिया गया है, के रूप में होते हैं? 1073 00:44:38,215 --> 00:44:38,520 >> दर्शक: कचरा. 1074 00:44:38,520 --> 00:44:39,480 >> डेविड जे Malan: कुछ कचरा मूल्य. 1075 00:44:39,480 --> 00:44:41,320 अब, कचरा मूल्य अभी भी एक संख्या है. 1076 00:44:41,320 --> 00:44:43,160 यह अभी भी एक पते के लिए गलत हो सकता है. 1077 00:44:43,160 --> 00:44:45,160 यह किसी रूप में यद्यपि है , नीचे कुछ लिखा 1078 00:44:45,160 --> 00:44:48,002 और मैं अर्थ के रूप में यह गलत व्याख्या सड़क के नीचे कुछ निर्माण. 1079 00:44:48,002 --> 00:44:50,460 और तुम बस में जाने की कोशिश तुम ही नहीं है कुछ के निर्माण, 1080 00:44:50,460 --> 00:44:53,710 या स्मृति का कुछ हिस्सा आप नहीं है दिया गया, बुरी बातें हो सकता है. 1081 00:44:53,710 --> 00:44:57,740 कंप्यूटर कुछ अन्य दुर्घटना, या हो सकता है अनिर्धारित व्यवहार हो सकता है. 1082 00:44:57,740 --> 00:45:01,310 >> तो, फिर, Binky के लिए इस पहचान है. 1083 00:45:01,310 --> 00:45:04,290 मैं अभी भी 20, याद कुछ अजीब साल बाद, 1084 00:45:04,290 --> 00:45:07,200 मैं जब मैं अंत में किया गया था जहां संकेत समझा. 1085 00:45:07,200 --> 00:45:09,520 >> आप हैं, जो कहते हैं तीन मिनट में यहाँ छोड़ 1086 00:45:09,520 --> 00:45:12,170 और मैं नहीं लगता संकेत समझने, एहसास 1087 00:45:12,170 --> 00:45:14,410 मैं 20 के लिए याद किया कुछ पागल कारण के लिए साल 1088 00:45:14,410 --> 00:45:17,140 कब और क्यों यह अंत में डूब में, मेरे शिक्षण के साथ बैठे 1089 00:45:17,140 --> 00:45:19,501 साथी, निशात मेहता में एलियट डाइनिंग हॉल के पीछे. 1090 00:45:19,501 --> 00:45:21,250 अब, मैं याद किया इस यह था क्योंकि 1091 00:45:21,250 --> 00:45:23,920 विषयों मैं, में से एक विशेष रूप से, के साथ संघर्ष किया. 1092 00:45:23,920 --> 00:45:26,470 और फिर, यह अंत में क्लिक किया, जैसे मैं विषयों की एक बहुत कहने की हिम्मत 1093 00:45:26,470 --> 00:45:27,460 अंत में होगा. 1094 00:45:27,460 --> 00:45:32,590 और अब, कि सब महसूस कराने के लिए खुश और सभी को और अधिक कायल, 1095 00:45:32,590 --> 00:45:35,360 में एक अंतिम नज़र रखना हमारे यहाँ Binky में पिछले तीन मिनट, 1096 00:45:35,360 --> 00:45:37,675 हमारे दोस्त, निक से स्टैनफोर्ड से Parlante. 1097 00:45:37,675 --> 00:45:38,910 1098 00:45:38,910 --> 00:45:41,580 >> [वीडियो प्लेबैक] 1099 00:45:41,580 --> 00:45:42,750 >> हे, Binky. 1100 00:45:42,750 --> 00:45:43,500 जागो! 1101 00:45:43,500 --> 00:45:45,960 यह सूचक मनोरंजन के लिए समय है. 1102 00:45:45,960 --> 00:45:47,012 >> कि क्या हो रहा है? 1103 00:45:47,012 --> 00:45:48,723 संकेत के बारे में जानें? 1104 00:45:48,723 --> 00:45:50,580 ओह, गुडी! 1105 00:45:50,580 --> 00:45:53,563 >> -Well, आरंभ करने के लिए, मुझे लगता है हम कर रहे हैं लगता है एक जोड़े के संकेत की जरूरत जा. 1106 00:45:53,563 --> 00:45:54,390 >> ठीक है. 1107 00:45:54,390 --> 00:45:57,930 इस कोड, दो संकेत का आवंटन जो पूर्णांकों के लिए बात कर सकते हैं. 1108 00:45:57,930 --> 00:45:58,430 ठीक है. 1109 00:45:58,430 --> 00:46:02,140 खैर, मैं दो संकेत देखते हैं, लेकिन वे कुछ भी करने के लिए इशारा कर रहा हो ऐसा नहीं लगता है. 1110 00:46:02,140 --> 00:46:02,980 >> -वह सही है. 1111 00:46:02,980 --> 00:46:05,100 प्रारंभ में, संकेत कुछ भी करने के लिए बात नहीं है. 1112 00:46:05,100 --> 00:46:08,030 वे कहते हैं को इंगित बातें pointees, और उन्हें स्थापित 1113 00:46:08,030 --> 00:46:09,370 एक अलग कदम. 1114 00:46:09,370 --> 00:46:10,220 >> ठीक है, ठीक है, ओह. 1115 00:46:10,220 --> 00:46:10,950 मैं जानता था कि. 1116 00:46:10,950 --> 00:46:12,385 pointees अलग हैं. 1117 00:46:12,385 --> 00:46:14,315 एर, तो आप कैसे एक pointee आवंटित करते हैं? 1118 00:46:14,315 --> 00:46:15,340 1119 00:46:15,340 --> 00:46:15,960 >> ठीक है. 1120 00:46:15,960 --> 00:46:18,970 खैर, इस कोड का आवंटन एक नए पूर्णांक pointee, 1121 00:46:18,970 --> 00:46:20,950 और इस हिस्से सेट एक्स यह करने के लिए बात करने के लिए. 1122 00:46:20,950 --> 00:46:22,050 1123 00:46:22,050 --> 00:46:23,230 >> हे, कि बेहतर लग रहा है. 1124 00:46:23,230 --> 00:46:25,060 तो यह कुछ कर रही है. 1125 00:46:25,060 --> 00:46:25,990 >> ठीक है. 1126 00:46:25,990 --> 00:46:30,455 मैं करने के लिए सूचक एक्स भिन्नता हूँ इसके pointee में 42 नंबर की दुकान. 1127 00:46:30,455 --> 00:46:32,830 इस चाल के लिए, मैं की आवश्यकता होगी मेरी Dereferencing की जादू की छड़ी. 1128 00:46:32,830 --> 00:46:34,130 1129 00:46:34,130 --> 00:46:36,080 >> Dereferencing की -आपका जादू की छड़ी? 1130 00:46:36,080 --> 00:46:37,357 1131 00:46:37,357 --> 00:46:38,190 That-- कि बहुत अच्छी बात है. 1132 00:46:38,190 --> 00:46:39,340 1133 00:46:39,340 --> 00:46:41,080 >> -यह कोड की तरह लग रहा है. 1134 00:46:41,080 --> 00:46:44,110 मैं सिर्फ संख्या और [पीओपी] स्थापित करेंगे 1135 00:46:44,110 --> 00:46:44,700 >> हे, देखो. 1136 00:46:44,700 --> 00:46:46,140 वहाँ यह जाता है. 1137 00:46:46,140 --> 00:46:50,980 >> एक्स इस प्रकार है पर एक भिन्नता कर -So तीर अपने pointee का उपयोग करने के लिए. 1138 00:46:50,980 --> 00:46:53,160 इस मामले में, वहाँ में एक दुकान 42. 1139 00:46:53,160 --> 00:46:57,710 अरे संख्या में स्टोर करने के लिए इसे उपयोग करने की कोशिश अन्य सूचक के माध्यम से 13, वाई. 1140 00:46:57,710 --> 00:46:58,760 >> ठीक है. 1141 00:46:58,760 --> 00:47:03,270 मैं सिर्फ वाई के लिए यहां पर जायेंगे, और 13 नंबर सेट अप मिलता है. 1142 00:47:03,270 --> 00:47:07,930 और फिर, छड़ी ले Dereferencing और बस [BUZZ] 1143 00:47:07,930 --> 00:47:08,960 >> ओह! 1144 00:47:08,960 --> 00:47:09,500 >> अरे, ओह! 1145 00:47:09,500 --> 00:47:11,090 यह काम नहीं किया. 1146 00:47:11,090 --> 00:47:15,630 Binky, मैं dereferencing नहीं लगता, बोलो क्योंकि आप जानते हैं वाई,, एक अच्छा विचार है 1147 00:47:15,630 --> 00:47:17,850 pointee की स्थापना एक अलग कदम है. 1148 00:47:17,850 --> 00:47:20,450 और मुझे लगता है हमें कभी ऐसा किया नहीं लगता. 1149 00:47:20,450 --> 00:47:21,480 >> अच्छा है बिंदु. 1150 00:47:21,480 --> 00:47:21,980 हाँ. 1151 00:47:21,980 --> 00:47:25,680 हम सूचक वाई आवंटित है, लेकिन हम कभी नहीं एक pointee को इंगित करने के लिए यह निर्धारित किया है. 1152 00:47:25,680 --> 00:47:27,190 1153 00:47:27,190 --> 00:47:28,616 >> -बहुत चौकस. 1154 00:47:28,616 --> 00:47:30,240 हे, तुम, वहाँ Binky अच्छी लग रही हो. 1155 00:47:30,240 --> 00:47:33,400 तुम इतना है कि इसे ठीक कर सकते वाई अंक एक्स के रूप में एक ही pointee करने के लिए? 1156 00:47:33,400 --> 00:47:34,000 >> -Sure. 1157 00:47:34,000 --> 00:47:36,780 मैं अपनी जादू की छड़ी का उपयोग करेंगे सूचक असाइनमेंट की. 1158 00:47:36,780 --> 00:47:38,740 >> होने जा रहा है कि -Is पहले की तरह एक समस्या है? 1159 00:47:38,740 --> 00:47:39,240 नहीं. 1160 00:47:39,240 --> 00:47:40,660 इस pointees स्पर्श नहीं करता. 1161 00:47:40,660 --> 00:47:44,450 यह सिर्फ एक सूचक परिवर्तन एक अन्य रूप में एक ही बात को इंगित. 1162 00:47:44,450 --> 00:47:45,450 >> ओह, मैं देख रहा हूँ. 1163 00:47:45,450 --> 00:47:48,200 एक्स के रूप में एक ही जगह पर अब वाई अंक. 1164 00:47:48,200 --> 00:47:48,910 तो इंतजार. 1165 00:47:48,910 --> 00:47:49,950 अब, वाई तय हो गई है. 1166 00:47:49,950 --> 00:47:51,120 यह एक pointee है. 1167 00:47:51,120 --> 00:47:54,510 तो आप की छड़ी की कोशिश कर सकते हैं 13 से अधिक भेजने के लिए फिर से dereferencing. 1168 00:47:54,510 --> 00:47:56,510 >> ठीक है, -Uh. 1169 00:47:56,510 --> 00:47:58,160 यहाँ यह जाता है. [पीओपी] 1170 00:47:58,160 --> 00:47:59,340 >> हे, कि देखो. 1171 00:47:59,340 --> 00:48:00,750 अब वाई पर काम करता है dereferencing. 1172 00:48:00,750 --> 00:48:04,991 और संकेत साझा कर रहे हैं क्योंकि एक pointee कि, वे दोनों 13 देखें. 1173 00:48:04,991 --> 00:48:05,490 हाँ. 1174 00:48:05,490 --> 00:48:06,870 शेयरिंग, जो भी हो. 1175 00:48:06,870 --> 00:48:08,820 इसलिए हम अब स्थानों स्विच करने के लिए जा रहे हैं? 1176 00:48:08,820 --> 00:48:09,440 >> ओह, देखो. 1177 00:48:09,440 --> 00:48:10,830 हम समय से बाहर रहे हैं. 1178 00:48:10,830 --> 00:48:11,570 >> -But-- 1179 00:48:11,570 --> 00:48:13,530 >> तीन सूचक नियम याद, बस. 1180 00:48:13,530 --> 00:48:16,560 नंबर एक, बुनियादी संरचना आप एक सूचक है कि है, 1181 00:48:16,560 --> 00:48:18,680 और यह एक pointee के लिए अंक. 1182 00:48:18,680 --> 00:48:20,640 लेकिन सूचक और pointee, अलग हैं 1183 00:48:20,640 --> 00:48:22,610 और आम त्रुटि एक सूचक स्थापित करने के लिए है, 1184 00:48:22,610 --> 00:48:25,000 लेकिन यह एक pointee देने की भूल करने के लिए. 1185 00:48:25,000 --> 00:48:28,170 >> नंबर दो, सूचक dereferencing सूचक पर शुरू होता है 1186 00:48:28,170 --> 00:48:31,050 और अधिक अपने तीर इस प्रकार है इसके pointee का उपयोग करने के लिए. 1187 00:48:31,050 --> 00:48:33,400 हम सभी जानते हैं, इस अगर वहाँ केवल काम करता है 1188 00:48:33,400 --> 00:48:36,270 एक pointee, जो एक तरह से नंबर एक नियम को वापस हो जाता है. 1189 00:48:36,270 --> 00:48:39,000 >> तीन नंबर, सूचक असाइनमेंट एक सूचक लेता है 1190 00:48:39,000 --> 00:48:42,320 और के लिए बात करने के लिए यह परिवर्तन एक और संकेत के रूप में एक ही pointee. 1191 00:48:42,320 --> 00:48:44,160 काम के बाद तो, दो संकेत 1192 00:48:44,160 --> 00:48:45,910 एक ही pointee के लिए बात करेंगे. 1193 00:48:45,910 --> 00:48:47,990 कभी कभी, कि साझा कहा जाता है. 1194 00:48:47,990 --> 00:48:49,740 और कहा कि वास्तव में, वहाँ यह सब है. 1195 00:48:49,740 --> 00:48:50,277 अलविदा अब. 1196 00:48:50,277 --> 00:48:51,110 [अंत वीडियो प्लेबैक] 1197 00:48:51,110 --> 00:48:52,568 डेविड जे Malan: यह CS50 के लिए है. 1198 00:48:52,568 --> 00:48:55,110 हम अगले सप्ताह आप देखेंगे. 1199 00:48:55,110 --> 00:48:56,064