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