ANDI PENG: ठीक है। खंड के चार सप्ताह के लिए आपका स्वागत है। यह एक खूबसूरत दिन है यहां न्यू हेवन में बाहर इसलिए मैं वास्तव में विरल लगता है बच्चों के बिखरने कि आज खंड के लिए मुझे शामिल हो गए, धन्यवाद। तो जल्दी, सिर्फ हम पहले आज के लिए एजेंडा शुरू करते हैं। हम एक पर जाने के लिए जा रहे हैं कुछ संक्षिप्त घोषणाओं। हम एक बहुत निराला कार्यक्रम है अगले दो हफ्तों में आ रहा या ऐसा तो हम उस पर जाने के लिए जा रहे हैं। दूसरे, मुझे पता है सभी की पसंदीदा topic-- मैं यह अपने मन पिघल यकीन व्याख्यान के दौरान, चिंता मत करो, मैं अभी भी एक तरह से यह नहीं मिलता है। यह ठीक है। यह एक मजाक था। मैं वास्तव में यह मिलता है। लेकिन मुझे लगता है कि यह सुनिश्चित करना होगा तुम लोग भी, यह मिलता है। तो हम एक खर्च करने के लिए जा रहे हैं वास्तव में, वास्तव में अच्छी रकम समय के आज सूचक के बारे में बात कर। आप देख सकते हैं, कैंडी बात आज बहुत बड़ा है। हम वास्तव में रखने के लिए जा रहे हैं हाँ that--, यह सही है। कैंडी लेने रखें। मैं अभी उनके आसपास के पारित करने के लिए जा रहा हूँ। कोई चिंता नहीं। हम वास्तव में कोशिश करने के लिए जा रहे हैं लोगों के रक्त में शर्करा रखने के लिए कि मस्तिष्क को जलाने के लिए जा रहा है, क्योंकि ऊपर कुछ ऑक्सीजन आज संकेत दिए क्योंकि वास्तव में, सच में कठिन हैं। तो फिर हम इस बारे में बात करने जा रहे हैं तरह का है, जो स्मृति प्रबंधन एक ही दायरे में। और हम स्थानांतरित करने के लिए जा रहे हैं पुनर्निर्देशन और फाइल करने के लिए पर बस वाक्य रचना कर रहे हैं जो मैं / हे, अच्छा हम के बारे में बात करनी चाहिए कि चीजें। और फिर अंत में, मैं कर रहा हूँ एक बार फिर से कोशिश करने जा रहा pset4 के लिए 10, 15 मिनट की तरह छोड़ने के लिए। यही कारण है कि हम कर रहे हैं तो कुछ दिन में होने के कारण है जा रहा वास्तव में एक तरह से आप देना कुछ सहायक संकेत अगर आप पहले से ही उस पर शुरू हो गया। कूल। ठीक। तो कुछ घोषणाओं इस आगामी सप्ताह के लिए। ग्रेडिंग। मैं वास्तव में पता नहीं है आप में से कितने इस बिंदु आदमी में वास्तव में कर रहे हैं मेरे तुम वहाँ ठीक section--? ठीक। लेकिन, आप उन लोगों के लिए मेरे भाग में जो कर रहे हैं, सिर्फ एक जोड़ी ग्रेडिंग पर टिप्पणी। टिप्पणी के पहले, बहुत अच्छा काम। आप में से जो तुम, जिन्होंने टिप्पणी नहीं करते आप शायद तुम क्योंकि कौन हो इस सप्ताह dinged कुछ शैली अंक मिला है। सिर्फ यकीन है कि सब में अपने कार्यक्रमों के एक जोड़े टिप्पणी जोड़ें। वास्तव में, शैली के लिए वास्तव में आसान है एक क्षेत्र के रूप में सही अंक मिलता है। हमारे लिए तो, बस बनाने आप की तरह कर रहे हैं सुनिश्चित करें कि सब में एक संक्षिप्त विवरण जोड़ने आप क्या कर रहे हैं के बारे में अपने कार्यक्रम। Secondly-- इस के लिए एक बड़ा मुद्दा है यह पिछले week-- TAs का एक बहुत तो सुनिश्चित करें कि आप पर अपलोड कर रहे बनाना सही ढंग से सही फ़ोल्डर नामित कार्यक्रम। और हम इस के लिए पूछना कारण है हम क्योंकि, ग्रेडिंग के पाठ्यक्रम में, वास्तव में एक पटकथा पर चलाने के लिए अपने स्वचालित रूप से डाउनलोड करता है कि कोड अपने psets के सभी चलाता है उन सभी पर शुद्धता परीक्षण, और उसके बाद अपने स्कोर अपलोड सीधे gradebook में। हालांकि, किसी भी बिंदु पर, अगर आप गलत तरीके से अपने कार्यक्रम का नाम है, पूरे तक यह शिकंजा हर किसी के लिए कार्यक्रम। और हां, तो वैध तरीके से, इस सुंदर लिपि हम करता है कि लिखा है कि हमारे लिए यह सब पूरी तरह से आप नहीं है तो दुर्घटनाओं अपने कार्यक्रम सही ढंग से नाम दिया है। तो बस सही करने के लिए अपलोड फ़ोल्डर, उन्हें सही ढंग से नाम है और फिर जीवन अच्छा है। मैं वापस अपने psets मिल करने के लिए तुम लोगों को पहले मैं जल्दी से उन्हें ग्रेड के लिए मिलता है। हाँ। ठीक। और यह भी कि हम बात करने जा रहे हैं about-- येल वास्तव में, वास्तव में एक है इन अगले दो सप्ताह में निराला अनुसूची। आप लोगों में से उन पर तो हार्वर्ड, यह लागू नहीं होता। लेकिन येल में हमारे लिए प्यारे बच्चों हमारे पास गिरावट में कुछ कहा, माफ break-- Harvard-- हमारे पास है, जहां स्कूल के बंद पांच दिन। और इस सुंदर है, जबकि यह एक तरह से हमारे pset लय को खराब करता है psets गुरुवार, शुक्रवार की वजह से कर रहे हैं। और अगर ऐसा है कि हम यहाँ नहीं हैं गुरुवार, शुक्रवार, हम आप लोगों के लिए काम नहीं कर सकते हैं गुरुवार, शुक्रवार को होने के कारण। तो क्या हम हम कर रहे है- क्या करने जा रहे हैं , इस में क्या हो रहा है 99% यकीन है कि जैसे वहाँ हो सकता है कुछ बदल लेकिन मुझे लगता है कि subtle-- हम करने जा रहे है have-- इस सप्ताह सामान्य है। इसलिए हम पर हमारे अनुभाग है मंगलवार कार्यालय घंटे के बाद सप्ताह के बाकी भर में और फिर pset4 शुक्रवार को होने वाली है। फिर, आप लोग सब जानते हैं, के रूप में मैं पिछले हफ्ते तुम लोगों को याद दिलाया हम अपने प्रश्नोत्तरी 0 बुधवार को आ रहे हैं। और हां, तो अपने आप को एक छात्र होने के नाते, मैं आप में से बहुत कुछ पता है लोगों को वास्तव में पर काम किया जाएगा अपने प्रश्नोत्तरी से पहले दो दिन pset5। तो क्या हम करने जा रहे हैं शायद कर खत्म होता है, सोमवार की रात है, कि हम जा रहे हैं वास्तव में, 5:30-07:00, एक संक्षिप्त समीक्षा विषयों पर सत्र को कवर किया। यह एक है कि अगर यह स्पष्ट नहीं सत्र या एक क्यू एंड ए की समीक्षा करें। यह समीक्षा के लिए किसी प्रकार का हो जाएगा हम कवर करेंगे, जिसमें फार्म आप लोगों के लिए प्रासंगिक कुछ विषयों। और फिर सोमवार और मंगलवार रात 8:00-11:00 है कि सप्ताह की, हम कार्यालय समय के लिए जा रहे हैं। उन कार्यालय घंटे सबसे अधिक अधिक संभावना है, बस में आ के और अधिक हो TAs के बारे में अपने सवाल पूछने आप के बारे में भ्रमित कर रहे हैं किसी भी अवधारणाओं, और वे एक तरह से आप के साथ पर जायेंगे प्रश्नोत्तरी के लिए और समीक्षा अवधारणाओं। क्विज 0, आप में कर रहे हैं सोमवार, बुधवार अनुभाग, के दौरान बुधवार को होगी कक्षा के दौरान बुधवार को class--। और आप में हैं तो यदि मंगलवार, गुरुवार अनुभाग, गुरुवार को कक्षा के दौरान भी हो जाएगा। आप वास्तव में चयन नहीं कर सकते जो एक तुम्हारे लिए जाना। आप एक सोमवार, बुधवार रहे हैं, आप बुधवार को जाना है। आप मंगलवार, गुरुवार को कर रहे हैं आप गुरुवार को जाना है। लेकिन फिर उस रात, हमें प्यारे कर्मचारी, होगा में पार्टी ग्रेडिंग एक विशाल प्रश्नोत्तरी जो हम आप के लिए वापस अपने स्कोर मिल जाएगा उस रात। किस समय? अस्पष्ट, कौन जानता है, लेकिन यह होगा 24 घंटे के भीतर वापस करने के लिए हो सकता है तो यह है कि उम्मीद है कि आप लोग शुक्रवार से कुछ प्रतिक्रिया है। और फिर हम एक वास्तव में निराला सप्ताह है। तो pset5 में से एक है साल के सबसे कठिन psets। तो माफ करना, दोस्तों। क्या हम कोशिश करने के लिए जा रहे हैं ऐसा हम के लिए जा रहे है कुछ वास्तविक समर्थन है कि सप्ताह के अंत में। क्योंकि, तुम लोगों को देख सकते हैं, के रूप में pset गिरावट को तोड़ने से पहले की वजह से है। हम समर्थन नहीं है गिरावट के ब्रेक के दौरान आप लोग और इसलिए हम वास्तव में इस तरह की वाक्यांश करना चाहते हैं इस के रूप में, चलो इसे समाप्त करते हैं, वास्तव में, वास्तव में कड़ी मेहनत करते हैं इन अगले दो सप्ताह, इस क्विज मिल और के साथ किया कि इन दो psets जोड़ने और फिर आप लोग एक अच्छा आराम है सीएस के बारे में सोच के बिना सात दिनों के लिए। उस के लिए आदेश में करने के लिए तो होता है, हम कर रहे हैं शायद मेरी खंड स्थानांतरित करने के लिए जा रहा रविवार दोपहर को। यह तो फिल्माया जाएगा कोई चिंता तुम नहीं आ सकते हैं। लेकिन ऑनलाइन फिल्मांकन होगा वहाँ और सुलभ हो तो तुम लोग रविवार है, सोमवार, मंगलवार, pset5 पर काम करने के लिए। और फिर यह गिरावट है तो तोड़ने के लिए और कोई सीएस और हम वापस आते हैं और पीस में अपनी पीठ। लेकिन यह एक होने जा रहा है गिरावट को तोड़ने के लिए प्यारा सप्ताह और हम वास्तव में तनाव के रूप में इसे बनाना चाहते हैं संभव के रूप में सभी के लिए नि: शुल्क है, जो हम क्यों चले गए pset के कारण हो रहा है बाद गिरावट को तोड़ने के बजाय पहले। मेरा मतलब है it's--, मैं एक तरह से लग रहा है क्योंकि यह होने के उद्देश्य धरा की तरह अगर वहाँ गिरावट को तोड़ने के बाद समय सीमा तय गिरावट के ब्रेक के दौरान वैसे भी कोई समर्थन नहीं। तो यह मुझे लगता है कि rather-- है हम नहीं बल्कि अब उस पर ध्यान केंद्रित था। किसी को भी सवाल है कि कार्यक्रम के बारे में? कुछ भी भ्रामक? हाँ। दर्शकों: हम अभी भी है 21 पर एक व्याख्यान? ANDI PENG: हाँ। 21 वीं पर तो, होने जा रहा है हार्वर्ड से जीना है कि एक व्याख्यान। डेविड फिल्माने है, तो मैं नहीं जानता यह या वह वास्तव में व्याख्यान देने अगर लेकिन यह उपलब्ध होने जा रहा है उपयोग करने के लिए आप लोगों के लिए ऑनलाइन। तो बस आप एक उत्कीर्ण सुनिश्चित करें गिरावट को तोड़ने में कहीं न कहीं एक घंटे बाहर तो तुम लोग पकड़ कर सकते हैं उस व्याख्यान पर। हाँ? दर्शकों: हाँ। माफ़ कीजिए। मैं यहाँ एक couple-- मिला ANDI PENG: कोई चिंता नहीं। इधर, कुछ कैंडी ले लो। दर्शकों: अरे, मुझे लगता है कि पकड़ा। तो बस कल नहीं, संक्षिप्त लेकिन करने के लिए उस के बाद बुधवार, हम एक प्रश्नोत्तरी है। ANDI PENG: सही है। दर्शकों: और यह be-- जा रहा है प्रश्नोत्तरी का स्वरूप क्या है? ANDI PENG: ओह। इसलिए हम एक ईमेल भेज देंगे कि गहराई में है कि सभी अधिक शामिल हैं। लेकिन, अनिवार्य रूप से, यह सिर्फ शामिल किया गया बुनियादी विषयों पहले से ही शामिल सेमेस्टर की पहली छमाही में। हम समीक्षा सत्र और सवाल होगा और इस बारे में तो कोई चिंता नहीं जवाब। लेकिन हम उस पर भी जा रहा हूँ। दर्शकों: यह होने जा रहा है, हम हमारे कंप्यूटर और कोड लाने there-- ANDI PENG: नहीं यह लिख तुम लोगों को होने जा रहा है और हाथ से सवालों का जवाब दे। दर्शकों: ओह। ANDI PENG: तो हम दे देंगे बाहर प्रथाओं और सामान तो तुम लोग शायद जाने के लिए चाहते हो सकता है पीठ और हाथ से मारियो को फिर से लिखना बस यकीन है कि तुम लोगों को बनाने के लिए कि कैसे करना है की एक विचार है। कभी कभी क्योंकि जब आप हाथ आप से लिखना अर्धविराम और सामान भूल और कहा कि वास्तव में बुरा है। दर्शकों: कि [सुनाई] नहीं होगा? की तरह, तुम हो रही है your-- पर अर्धविराम ANDI PENG: हाँ और नहीं। हम गहराई में अधिक बात करेंगे प्रश्नोत्तरी लेआउट है के बारे में कैसे और कैसे हम कक्षा के लिए जा रहे हैं। लेकिन अनिवार्य रूप से, बस इतना पता है कि सामान्य प्रारूप आप होने जा रहा है लोग code-- व्याख्या या तो बुनियादी सवालों का जवाब दे। मैं आप से पूछा है, एक पुस्तकालय क्या है? तुम लोगों को पता होना चाहिए कि क्या एक पुस्तकालय करता है और लगता है कि नीचे लिखें। या मैं एक कार्यक्रम में लिखते हैं, का कहना है कि हो सकता है नमस्ते विश्व स्क्रीन करने के लिए प्रिंट। मुख्य तुम लोग लिखना होगा, पूर्णांक शून्य printf हैलो दुनिया अर्धविराम। हाँ। दर्शकों: तो यह नहीं जा रहा है कहीं भी हो [सुनाई] समस्या की कठिनाई स्तर सेट? ANDI PENG: नहीं नहीं। हम हाँ won't--। की सम्पूर्णता लिखें 15 से 20 में मिनट के खेल, जाओ। नहीं, ऐसा नहीं होगा। नहीं। दर्शकों: ठीक है। तो यह है कि बुधवार है। कि सप्ताह भी हम दौरान सबसे मुश्किल समस्या का गठन किया है? ANDI PENG: नहीं तो समस्या यह कारण सेट गिरावट को तोड़ने से पहले दिन। schedule-- ईमेल वास्तव में बाहर भेजने की गई थी 20 मिनट पहले इस सब के बारे में। तो तुम लोग सिर्फ अपने ईमेल की जाँच। यह वहाँ हो जाएगा। हाँ। कोई चिंता नहीं। कूल। के बारे में किसी भी सामान्य सवाल घोषणाओं, ग्रेडिंग, क्विज़, हम सही में गोता लगाने से पहले भस्म हो जाएगा जो संकेत हमारे अनुभाग समय के बहुमत आज? कूल। ठीक है। ऐसा इसलिए किया है कि तुम लोग यह सब lovely-- घड़ी मुझे लगता है वे इसे कहते हैं क्या पता नहीं है। बात यह है कि जहां claymation खुद को विस्फोट से उड़ा दिया है क्योंकि यह सही तरीके से एक सूचक का उपयोग नहीं किया। खैर, अपने कार्यक्रम के लिए जा रहा है अगर आप शायद अपने आप को उड़ा सही ढंग से के रूप में अच्छी तरह से संकेत का उपयोग नहीं करते। इसलिए हम बनाने जा रहे हैं सुनिश्चित करें कि ऐसा नहीं होता है। हम करने जा रहे हैं आज कुछ सूचक मज़ा करते हैं। मैं चीजों पर जाने के लिए जा रहा हूँ के रूप में सुचारू रूप से मुझे लगता है कि के रूप में एक छोटे से समय सीमा में संभव है। लेकिन कवर करने के लिए सिर्फ इतना भी नहीं है मैं वास्तव में आप लोग चाहते हैं कि, आप कुछ समझ में नहीं है, न सिर्फ करने के लिए मुझे जा रहा रखने के लिए। अगर तुम नहीं करते क्योंकि कुछ समझ में, आप शायद करने के लिए नहीं जा रहे हैं मैं उस के बाद का कहना है कि कुछ भी समझते हैं। तो मुझे रोकने के लिए और एक सवाल पूछने के लिए कृपया। यह सभी प्रकार की वजह से के साथ snowballs। की तरह, संकेत में नेतृत्व अन्य बातों में स्मृति का नेतृत्व। और तो आप संकेत समझ में नहीं आता है, तो मुझे रोकने के लिए और हम यह पता लगा लेंगे और जीवन ठीक हो जाएगा। कूल। तो कैसे व्याख्यान में आप लोगों में से बहुत से, डेविड संकेत उल्लेख किया है, अपने दिमाग तरह का मुरब्बा, हे में बदल गया? हाँ। अच्छा। हम कोशिश करने के लिए जा रहे हैं डी-मुरब्बा, हे अपने दिमाग आज। हम वास्तव में व्यवस्थित करने के लिए जा रहे हैं क्या वास्तव में एक सूचक है के माध्यम से जाना है, यह करता है, और हम उन्हें कैसे उपयोग क्या। इतना सब इसलिए pointers-- सामान्य रूप से चर के साथ हम जैसे, कोडिंग में उपयोग किया गया है ऐसे पूर्णांकों या तार के रूप में चर या तैरता है, वे सभी अनिवार्य रूप से कर रहे हैं उन्हें सौंपा एक मूल्य साथ ही साथ एक पते कि मूल्य की ओर इशारा करते। इसलिए मैं यह अभी आकर्षित करने के लिए जा रहा हूँ। हम लगभग कोई चाक है, लेकिन यह ठीक है। तो उदाहरण के लिए, सामान्य रूप से हम है कि रास्ता चर का उपयोग किया गया हम बनाते है int प्रकार के चर का नाम, चलो सिर्फ कहे। यहाँ तो हम int x मिल गया है और हम कर रहे हैं से 50 कि पूर्णांक प्रारंभ कर। तो यहाँ पर स्मृति के इस ब्लॉक में हमारे कंप्यूटर हम 50 के एक नंबर संग्रहित किया है। संकेत खेलने में आते हैं जहां तो है कि आपके कंप्यूटर, यहाँ, जैसे itself-- शारीरिक रूप से हार्ड ड्राइव में मेरी computer-- की रैम में यह केवल स्मृति की एक निश्चित राशि है। तुम बस बातें भंडारण नहीं रख सकते चीजों के शीर्ष पर चीजों के शीर्ष पर और उन सब को है। तो जिस तरह से हम गतिशील आवंटित कि स्मृति हम क्या चाहते हैं स्टोर करने के लिए सक्षम होने के लिए और पहुँच यह संकेत होने से है। तो ठीक है, अपनी स्मृति अंतरिक्ष में कल्पना। इस बात का रैम है, तो आपके कंप्यूटर, तो आप इन छोटी बिट्स ब्लॉक या स्मृति के बाइट्स में या ये सिर्फ छोटी हैं which-- पर बाहर आवंटित किया गया है कि ब्लॉक आपके कंप्यूटर की हार्ड ड्राइव या राम, और उन ब्लॉकों में से प्रत्येक के भीतर आप अलग अलग चीजों को स्टोर कर सकते हैं। तो उदाहरण के लिए, एक इस उदाहरण में सरणी यहाँ है जो एक बाइट है आठ बिट से मिलकर। नंबर के आधार पर बदलता आपके कंप्यूटर के ऑपरेटिंग सिस्टम। उदाहरण के लिए, आप में से कितने है 64-बिट ऑपरेटिंग बनाम 32 बिट के बारे में सुना सिस्टम? बिल्कुल सही। इतना सब कह रहा है कि memory-- यह है कि तरीका यह है कि आपके कंप्यूटर कि स्मृति अलग है सफल हुआ है। यह सच है, यही वजह है समझने के लिए महत्वपूर्ण क्यों स्मृति में ही कार्य करता है बल्कि की तुलना में संख्या पर ध्यान देना। इसलिए हम वास्तव में परवाह नहीं है कैसे इस सरणी बड़े हम बस के बारे में परवाह करने की जरूरत है कैसे बड़े हम होना एक int की जरूरत है, कैसे बड़े Do हम एक स्ट्रिंग की जरूरत है हो सकता है, एक सूचक कितना बड़ा है? ठीक। इसलिए यह एक बहुत होने जा रहा है की भारी, घने जानकारी। मैं एक तुम लोगों को देने के लिए जा रहा हूँ यहाँ युगल हास्य राहत क्षणों। तुम लोग सब में सक्षम होना चाहिए अब इस बात को समझ। हम जानते हैं कि क्योंकि संकेत दिए गए पते हैं, और उन चर से अलग हैं। ठीक। कूल। सीएस चुटकुले हाँ, अच्छा कर रहे हैं? तो हम चलते हैं कि रास्ता एक सूचक बनाने के बारे में वाक्य रचना की एक बहुत ही विशेष प्रकार का है। किसी भी बनाने के साथ के रूप में चर का प्रकार, यह है एक विशिष्ट होने जा रहा हम इसे बनाने के लिए उपयोग सिंटेक्स। इसलिए किसी भी सूचक की घोषणा करते हैं, एक सूचक सिर्फ essentially-- है मैं महत्वपूर्ण लगता है संकेत का हिस्सा है एक चर है, जबकि कि एक मूल्य और पते दोनों, एक सूचक एक पता है। इसका मूल्य एक पता है। तो यह संग्रहीत एक पता है एक अलग पते पर। यदि इसका कोई मतलब निकले तो। हम और अधिक विस्तार में इस पर जायेंगे लेकिन लगता है कि सामान्य रूप है एक प्रिंटर भंडारित किया जाता है कैसे की why-- की। तो अगर आप एक सूचक है कि बनाने के रास्ते डेटा के जो भी प्रकार से कर रही है सूचक जा रहा है कि संदर्भित और होना then-- तो star-- और साथ सूचक का नाम है। यहाँ तो, यदि हम चाहते थे एक सूचक बनाने के लिए एक पूर्णांक की ओर इशारा किया, और हम सूचक का नाम एक्स बनना चाहता था, हम int स्टार एक्स से करना होगा। हाँ? दर्शकों: और अगर ऐसा है निम्न पंक्ति आप पूर्णांक एक्स करना होगा, पूर्णांक स्टार एक्स एक्स के स्थान का संकेत आप बाद में परिभाषित कर रहे हैं? ANDI PENG: बहुत अच्छा सवाल। हम इस में पर जायेंगे एक जोड़े को बाद में स्लाइड। हाँ। और साथ फिर वही बात चार और एक ही बात मंगाई। सिर्फ इस बात पर है कि पता हम एक सूचक बना लिया है, हम वास्तव में सेट नहीं किया है यह अभी तक कुछ भी बराबर करने के लिए। हम वास्तव में यह संदर्भित नहीं किया है। एक ही बात यहाँ जब आप एक चर बनाने के लिए, आप चर का नाम बनाया है, आप वास्तव में इसे करने के लिए एक मूल्य निर्धारित नहीं की है। इधर भी ऐसा ही है। ठीक। तो हम कैसे संकेत करने के लिए मूल्यों को निर्धारित करते हैं? यह संदर्भित और अपसंदर्भन से है। तो जिस तरह से हम संदर्भित कर सकते हैं कि एक संक्षेप में, एक सूचक varia-- हम स्मृति में पता वापस जिनमें से एक चर संग्रहित है। मैं एक pointer-- था कि अगर मैं आकर्षित करेंगे तो इस बार हम अगली स्लाइड के लिए मिलता है लेकिन सिर्फ अनिवार्य रूप से जानते हैं कि, एम्परसेंड और-- और variable-- है कि सभी आप पता बता रहा है करता है जहां की कुछ संग्रहित है। और अपसंदर्भन विपरीत है सिर्फ स्टार है जो कि, के। स्टार बस आप वास्तविक देता है उस पते पर संग्रहीत डेटा। एक तो आप पता देता है एक पते पर संग्रहीत, अन्य आप वास्तविक देता है पते पर संग्रहीत मूल्य। तो उनमें से दो देना आप अलग अलग चीजें हैं। एक बार फिर, स्लाइड्स हैं सभी ऑनलाइन तो कोई चिंता नहीं तुम लोगों को कॉपी नहीं कर सकते हैं कुछ ही समय में यह नीचे। तो चलो एक नजर डालते हैं यहाँ इस उदाहरण में। तो हम एक विशाल मिल गया है यहाँ स्मृति सरणी, है ना? हम बस के ब्लॉक है, जहां स्मृति की स्मृति, या बाइट्स, जिसमें हम अलग अलग चीजों को स्टोर कर सकते हैं। चलो बस इन कर रहे हैं हम कहते हैं स्मृति में पता अंक। तो कभी भी आपके पास - 0 x देखते हैं, सब है कि आप यह है कि कह रहा है कि एक हेक्साडेसिमल अंक है। आप लोग सब, संख्या के रूप में जानते विभिन्न ठिकानों में आधारित हो सकता है। बेस 10 कैसे हम आम तौर पर है संख्या व्याख्या। बाइनरी है जो आधार 2, वहाँ भी है। और इस मामले में, हेक्साडेसिमल 16 आधार है। यह कह रही है की सिर्फ एक अलग तरीका है 10-- को शून्य या शून्य से नौ और फिर भी ए, बी, सी, डी, ई, एफ इसके अलावा अलग नंबरों का संदर्भ। डेविड संक्षिप्त व्याख्यान में यह खत्म हो गया था। तुम लोग कर रहे हैं उलझन में, बस यह गूगल। जानने के लिए वास्तव में आसान तरीके है हेक्साडेसिमल अंकों क्या है। सब है कि वास्तव में प्रासंगिक है अभी आप के लिए है लोग है कि एक को पता है सी में हेक्साडेसिमल अंक you-- बताता है कि आम तौर पर यह एक सूचक है कि आपको बताता है। या कि एक पता है। यहाँ तो इस उदाहरण में, पूर्णांक एक्स 5 के बराबर होती है। हम एक integer-- बना रहे हैं प्रकार का खेद है, एक चर पूर्णांक और हम 5 करने के लिए इसे प्रारंभ कर रहे हैं। यहाँ तो हमारी स्मृति बोर्ड पर, हम कर सकते हैं देखना है कि एक्स 0x0 के पते पर होती है और तुम हो कि मूल्य यह 5 के अंदर संग्रहित। यह समझ में बनाना चाहिए हर किसी के लिए, है ना? ठीक। और फिर हम क्या किया है कोड की दूसरी पंक्ति में हम बनाया है वह यह है कि int प्रकार का एक सूचक। यही कारण है कि क्या पूर्णांक स्टार सूचक कर रही है। और कहा कि बराबर होती है कि एम्परसेंड एक्स यदि आप कुछ का पता दे रही है। एक्स के पते में तो इस उदाहरण 0x0 है। और इतना है कि पता किया जा रहा है कि सूचक में संग्रहीत। कि हर किसी के लिए मतलब? तो है- के बारे में सोच यहां pointers-- के बारे में सोच येल में हम एक PO बॉक्स प्रणाली है हर छात्र को एक डाक है जहां आप जा सकते हैं, जहां पता एलडब्ल्यू के तहखाने में और तुम बस जाओ और हड़पने कर सकते हैं जो कुछ भी आप उस पते से की जरूरत है। एक ही बात हो रही है यहां एक कंप्यूटर में। आप इन स्मृति बाइट्स है कि आप जानकारी में स्टोर कर सकते हैं लेकिन क्रम में पता करने के लिए जो सूचना का भाग आप को खोजने की कोशिश कर रहे हैं का मैच और, यदि आप एक सूचक जरूरत है, जहां कि कैसे वहाँ जाने के लिए आपको बताता है। तो उदाहरण के लिए, मेरे लिए, मेरे PO बॉक्स, मैं एक विशिष्ट पांच अंकों की संख्या है। यही कारण है कि मेरा पता है। तो मैं शारीरिक रूप से याद करने के लिए जा सकते हैं, मैं, पते पर देख सकते हैं मुझे लगता है कि पीओ बॉक्स के लिए जा सकते हैं और अंदर डेटा का उपयोग। कि हर किसी के लिए समझ पड़ता है आपका कंप्यूटर अनिवार्य है सटीक एक ही बात कर रही है। इतना सब सूचक कर रही है वह यह है कि यह सिर्फ एक स्मृति पैदा कर रहा है और अपनी स्मृति डेटा वास्तव में है कुछ और पता। तो फिर तुम जाओ और पाते हैं कि कर सकते हैं। हर कोई अच्छा है? अब तक मेरे साथ अच्छा सब लोग? ठीक। कूल। ठीक है। के रूप में पहले तो लगभग एक ही बात है। इसलिए हम सबसे पहले, एक चर है, कहा जाता एक्स जिसमें case-- मैं 5 को यह मान बदलने के लिए जा रहा हूँ। चलो बस का पता हम कहते हैं स्मृति में इस बात का 0x0 है। 00। अच्छा है। तो फिर, हमारे दूसरे पर कोड की लाइन है, हम कर रहे हैं एक सूचक बनाने जा पीटीआर सूचक कहा जाता है। और इस बात का पता, चलो सिर्फ इतना है कि स्मृति में 0x01 है कहना। और हम वास्तव में करना चाहते हैं एम्परसेंड store-- एक्स आप क्या था एक्स के पता देता है। और एक्स के पते 0x00 था। तो इस सूचक अब वास्तव में पता है क्या था एक्स के अपने मूल्य के रूप में जमा। अब तक मेरे साथ सब लोग? कूल। और फिर, जिस तरह कि हम चाहते हैं कि नकल होगा, हम घोषणा और हस्ताक्षर करना होता तो है int प्रकार की स्मृति का एक और ब्लॉक। है ना? यह एक पूर्णांक के लिए किया जाएगा। यह प्रतिलिपि बुलाया जाएगा। और यदि आप ऐसा get-- लिए जा रहे हैं स्टार सूचक आप देता है उस पते से वास्तविक डेटा। एम्परसेंड आप पता देता है, स्टार आप डेटा देता है। सूचक पर तो डेटा। इस सूचक 5 की ओर इशारा कर रहा है। और इसलिए इस समारोह स्टार here-- pointer-- चला जाता है, में जो कुछ भी हो जाता है इस ब्लॉक और यहाँ यह भंडार। सब जानते हैं कि कैसे हुआ पर स्पष्ट? तो दो ऑपरेटरों सही there-- एम्परसेंड और star-- सिर्फ अलग बातें करते हैं संकेत पर इस्तेमाल किया। एक है कि आप पता हो जाता है, एक आप वास्तविक मूल्य हो जाता है। तो तुम लोग कर रहे हैं, जब यह सुनिश्चित कर लें आप दो को भ्रमित नहीं है कि कोडिंग वे एकदम अलग रहे हैं। यहाँ हम एक 0x01 का एक अच्छा उदाहरण है। यह एक बहुत अच्छा है छोटी संख्या को याद करने के लिए। अपने वास्तविक कंप्यूटर में आपके पास करने के लिए जा रहे हैं कुछ तो है कि एक विशाल गधे नंबर कि नहीं अच्छा है, नहीं सुखद है। यह कुछ कचरा मूल्य होने जा रहा है। और इसलिए यह वास्तव में करने जा रहा है वास्तव में गंदगी को अपने कार्यक्रम। यह बहुत महत्वपूर्ण है अब ठीक है कि हम जैसे why-- के लिए नीचे बुनियादी बातों में, शारीरिक रूप से जब क्या हो रहा है आप कोड के उन ब्लॉकों चला रहे हैं। हाँ Everyone--? दर्शकों: int x पूर्णांक प्रतिलिपि के बराबर होती है तो? ANDI PENG: नहीं, क्योंकि इस मामले, पूर्णांक में एक्स-एक्स का मूल्य सही, 5 के बराबर होती है? और फिर पूर्णांक प्रतिलिपि 5 के बराबर होती है। तो अगर तुम थे करने के लिए उन्हें समानता के लिए एक दूसरे को वे पूर्णांकों रहे हैं क्योंकि, हाँ, वे सही करने के लिए मूल्यांकन होगा। लेकिन वे स्मृति में तार की तरह थे, डेविड उदाहरण के दौरान किया था कि एक, यह अलग बात है क्योंकि वे संदर्भित कर रहे हैं स्मृति में स्थानों के पते और वे झूठे करने के लिए समान होगा। आप कर रहे हैं, क्योंकि यह सच होगा तो यहाँ सीधे integers-- values-- की तुलना लेकिन दूसरों में आप कर रहे हैं संदर्भित अंक। एक स्ट्रिंग, एक सरणी में है, क्योंकि all-- हम इस later-- बारे में बात करेंगे लेकिन सरणी अनिवार्य रूप से सिर्फ एक है स्मृति में वर्ण का एक गुच्छा के लिए सूचक। तो उन थोड़ा अलग हैं। लेकिन इस मामले में, हाँ, आप ऐसा कर सकता है। दर्शकों: आप व्याख्या कर सकते हैं नकल का पता? ANDI PENG: हाँ। तो यह है कि just-- मैं है एक मूल्य में भर नहीं था लेकिन यह अन्य बस कुछ बेतरतीब है हम के बारे में परवाह नहीं है कि कचरा मूल्य। आप प्रोग्राम प्रारंभ क्योंकि एक बार आप हम वास्तव में नहीं है एहसास वास्तव में क्या परवाह वास्तविक पते, कर रहे हैं हम सिर्फ इतना पता करने की जरूरत है क्या पतों पर है। हाँ। दर्शकों: पर int करने के लिए अगले स्टार दूसरी लाइन, कि अलग than-- है ANDI PENG: हाँ। दर्शकों: --The dereferencing और स्टार संदर्भित? ANDI PENG: हाँ। C-- के लेखकों ताकि जो कोई भी की भाषा लिखने का फैसला किया C-- बहुत चालाक नहीं था। वे कोशिश में बहुत स्मार्ट नहीं थे हम इस करना चाहिए क्यों बाहर निकालने के लिए। अगर यह मैं था, मैं निश्चित रूप से होगा दो अलग अलग अक्षरों का उपयोग करें। लेकिन वे एक ही एक का उपयोग करने का फैसला किया। तो एक पूर्णांक के बाद स्टार, कि कंप्यूटर बताता है आप एक सूचक बनाने के बारे में कर रहे हैं। लेकिन अगर आप भिन्नता करने की कोशिश कर रहे हैं something-- दूसरे शब्दों में, पता करने के लिए जाना और पुल somewhere-- से डेटा स्टार अलग ढंग से प्रयोग किया जाता है। तो तुम लोग बस के बारे में सावधान रहना होगा न दो का उपयोग करता खिलवाड़। कूल। हाँ? दर्शकों: तो बस को दोहराने के लिए मैं following-- हूँ कि यह सुनिश्चित कर लें ANDI PENG: पूरी तरह से ठीक है। दर्शकों: के बाएं हाथ की ओर --in उस स्लाइड, हम जानते हैं कि एक बात करते हैं। हम एक पूर्णांक घोषित [अश्राव्य] 5 के बराबर हैं। ANDI PENG: हाँ। दर्शकों: ठीक है। और फिर हम एक पूर्णांक के स्टार बात है और कि ठीक है, एक तरह से हम पसंद कहना है कि, अब, एक पूर्णांक घोषित हम एक सूचक की घोषणा कर रहे हैं। ANDI PENG: सही ढंग से। सही है। दर्शकों: है ना? और हमारे सूचक पीटीआर है। ANDI PENG: हाँ। सूचक का नाम पीटीआर है। सूचक। दर्शकों: और फिर यह बस सी बताता है कि NX के बराबर होती है यह कम मूल्य का उपयोग करना चाहता है कि मूल्य कि पूर्णांक एक्स एक्स-पूर्णांक सौंपा गया था। ANDI PENG: सावधान रहें एम्परसेंड वास्तव में एक्स क्योंकि you-- कंप्यूटर बताता है कि आप एक्स क्या है की पता खींचने के लिए चाहते हैं। तो एम्परसेंड आप देता है पता, स्टार आप मूल्य देता है। दर्शकों: तो हम पता करना चाहते हैं। एक्स at-- था कहते हैं ANDI PENG: हम वास्तव में ठीक है, क्या एक्स है पता है? हम मैं कर रहा हूँ was-- कि एक्स क्योंकि मुझे पता है यह कर लेकिन चलो बस कहना है, मनमाने ढंग से, यह 0x00 था। है ना? इसलिए हम पता 0x00 है, और इसलिए हम जाने के लिए और एम्परसेंड एक्स जब, हम जानते हैं कि 0x00 करने के लिए मूल्यांकन करना चाहिए। कौन सा हम उस संग्रहीत क्यों है हमारे सूचक के मूल्य के रूप में। समझ आया? दर्शकों: हाँ। और नकल भिन्नता ptr-- को जाता है ANDI PENG: ठीक है। दर्शकों: --which है हम है कि एक सूचक हमें बताता है कि घोषित पूर्णांक x का पता। ANDI PENG: हाँ। दर्शकों: और इस एक मामले में, स्टार पीटीआर है 5 के बराबर होती है, जो एक्स के मूल्य के बराबर। ANDI PENG: सही है। दर्शकों: कूल। और कहा कि पाने के लिए एक सरल तरीका है कि या है ही way-- कि ANDI PENG: इसलिए अभी यह हमारे लिए बहुत ही तार्किक प्रतीत नहीं होता कर रही है इस समय के सभी खर्च करने के लिए इस सुपर जटिल बात जब सब हम सिर्फ दो पैदा कर रहा है किया है 5 के मूल्य के साथ पूर्णांकों, है ना? यह मतलब नहीं है। लेकिन एक बार हम पर जायेंगे स्मृति आवंटन और-- हम करेंगे यह हो सकता है क्यों खत्म हो जाना आसान और उपयोगी है पर बाद में। मुझे लगता है हम अभी नहीं है का कहना है कि जब मेरा विश्वास करो आप के लिए इन मनमाना कार्य बना हम कर रहे हैं, क्योंकि लोगों को जानने के लिए आप के साथ गड़बड़ करने के लिए कोशिश कर रहा है। वहाँ वास्तव में इन सभी के लिए उपयोग करता है बातें और हम उनके बारे में बात करेंगे। दर्शकों: बहुत बढ़िया। ANDI PENG: हाँ। दर्शकों: [अश्राव्य]। ANDI PENG: अच्छा सवाल है। दर्शकों: [अश्राव्य]। ANDI PENG: यह नहीं है। यह सच नहीं है। दर्शकों: --two चर वह भी बराबर [सुनाई]। ठीक। ANDI PENG: हाँ। ठीक। मैं आगे बढ़ने से पहले, हर कोई स्पष्ट है? मैं तुम्हें थोड़ी देर में मिल गया, टेलर पता है। यह ठीक है। यह ऑनलाइन है। आप पहले 20 देखेंगे मिनट और आप सब अच्छा होगा। ठीक। कूल। ठीक है। तो यह अनिवार्य है एक तरह से एक हम सिर्फ था कि इसी तरह की बात। यह सिर्फ एक चित्रमय रूप में है। आप क्या ट्रैक करने के लिए थे बस हो गया, पूर्णांक एक्स, 5 के बराबर होती है सब हम इस बिंदु है पर किया है int प्रकार के एक्स नामक एक चर पैदा करते हैं। हम स्टोर करने के लिए जा रहे हैं इसके बारे में 5 अंदर के मूल्य। हम नहीं है क्योंकि कोई सूचक नहीं है वास्तव में सही है, फिर भी एक सूचक बनाया? और फिर अगले में लाइन, पूर्णांक स्टार सूचक, हम वास्तव में कर रहे है कि जहां शारीरिक रूप से सूचक बनाने और हम उस स्थापित कर रहे हैं , या संदर्भित करने के लिए बराबर एम्परसेंड एक्स के सूचक,। जो जहां जहां भी है स्मृति इस किया हुआ है। मैं वास्तव में परेशान नहीं किया एक मूल्य इस समय तक बना रही है। लेकिन इस मामले में, उस बिंदु आपको लगता है कि के बराबर होगा। और फिर वहाँ नीचे, स्टार सूचक dereferencing है। हम कर रहे हैं कि जहां जानकारी खींच रहा है। तो एक्स पर कि मूल्य वास्तव में है 35 के बराबर होने जा रहा है। इस बिंदु पर तो, हम अनिवार्य है सिर्फ 35 के लिए एक्स reinitialized वास्तव में एक्स को छूने के बिना। बस सूचक के माध्यम से कि, एक्स की ओर इशारा किया गया था, हम वास्तव में था क्या एक्स बदल सकते हैं। मैं भी इस बाहर आकर्षित करने के लिए जा रहा हूँ। यहाँ तो हम बना लिया है यहाँ कुछ यादृच्छिक पता। चलो बस फिर 0x00 कहते हैं। चलो बस उस पते चलो कहते हैं। और हम एक पूर्णांक नामित एक्स बनाया है और मैं इसे करने के लिए सौंपा गया है, मूल्य 5 है। दूसरी पंक्ति में, पूर्णांक pointer-- तो अब हम है यह दूसरी बात है यहां एक pointer-- बुलाया और हम चलो बस कहना है-- जा रहे हैं यह कुछ अन्य यादृच्छिक स्मृति पता है। इसलिए हम इस सेट करने के लिए जा रहे हैं जो कुछ भी करने के लिए बराबर था। और इस सूचक जा रहा है एक्स के मान की ओर इंगित और फिर, हम बदलते हैं the-- हम स्टार सूचक करते हैं, कि जा रहा है हमारे सूचक के मूल्य। इस मामले में, यह ट्रैक करने के लिए जा रहा है इस एक्स के इस मूल्य को खत्म करने के तीर और यह 35 के लिए इसे बदलने के लिए जा रहा है। प्रभावी ढंग से, हम बस बदल एक्स छूने के बिना एक्स। सिर्फ संदर्भित संकेत के माध्यम से, हम जाकर x का मान बदल सकते हैं। समझ आया? तो इस तरह से, हम वास्तव में नाम बदल सकते हैं और rechange और पुन: असाइन मूल्यों हम नहीं था कि चीजों को वास्तव में खुद बनाते हैं। कि हर किसी के लिए मतलब? कूल। ठीक। यहां इतनी जटिल ग्राफिक। लाइन से लाइन जाओ। अनिवार्य रूप से, सिर्फ सटीक करना मैं बस किया है कि एक ही बात है। मैं आगे बढ़ने से पहले, मैं वास्तव में सिर्फ बनाना चाहते यकीन है कि हर कोई इस पर वास्तव में स्पष्ट है। यहां तक ​​तो, हम है कि कोड है पूर्णांक एक 3 के बराबर होती है, बी 4 के बराबर होती है, ग 5 के बराबर होती है। इसलिए हम नामित तीन पूर्णांकों बना लिया है ए, बी और 3, 4 और 5 के बराबर हैं कि सी। और फिर हम तीन संकेत बना रहे हैं उन चर से प्रत्येक के लिए उस बिंदु। और अब हम जा रहे हैं अनिवार्य रूप से ऊपर जाने के लिए आप उन पर काम करते हैं, तब क्या होता है। इसलिए उन्हें बाहर निकालना। मैं नहीं paper-- के एक पत्रक ले लो आप लोग सब कागज है, तो पता है, लेकिन आप उन लोगों के हो सकता है, जो नहीं है करते हैं, जो आप के उन लोगों से उधार ले। कागज की चादरों लो और लाइन से लाइन जाना। और अगर आप ऐसा है कि हर आपरेशन में, मैं तुम लोगों को वास्तव में बाहर लिखना चाहते हैं इस बिंदु पर ए, बी और सी में क्या है। पतों क्या हैं और क्या कर रहे हैं ए, बी और सी के लिए कहना है कि संकेत इस समय? और तो उम्मीद है कि इस एक तरह से तुम लोगों को कदम होगा संकेत के बारे में सोचने के लिए कैसे के माध्यम से। हम जाने के लिए नहीं जा रहे हैं उनमें से सभी के माध्यम से। शायद मैं आप five-- दे दूँगा जैसे, तीन मिनट। पहले कुछ पर शुरू हो जाओ। ओह। उफ़। दर्शकों: दूसरी पंक्ति में, क्यों स्टार [सुनाई] चर नहीं है? ANDI PENG: में याद रखें ऑपरेटरों, पहले सप्ताह में, हम कैसे के बारे में बात की थी आप प्लस बराबरी करते हैं, वह सिर्फ एक एक से अधिक ग के बराबर होती है इसका मतलब है। इस case-- में तो यह एक और है स्टार इस्तेमाल किया जा सकता है, जिसमें तरीका है। संदर्भित करने के अलावा और संकेत घोषित करने, यह भी लगता है कि यह याद रखना गुणन का मतलब है। तो इस मामले में, यह सिर्फ होता एक एक बार सी के बराबर होती हो। यही कारण है कि बस के रूप में अलग है कि लिखने का तरीका है। दर्शकों: एक एक बार सी के बराबर होती है। ANDI PENG: हाँ। दर्शकों: यह तो क्या इसका मतलब यह है यह एक एम्परसेंड पत्र कहते हैं? ANDI PENG: एम्परसेंड साधन क्या आप कर रहे that-- लिए जा रहे हैं सूचक है जगह पर जा रहे इशारा करते हुए और पता खींच रहा है। तो एम्परसेंड आप पता देता है, स्टार वहाँ आप वास्तविक मूल्य देता है। दर्शकों: हम हैं लाइन से लाइन पर निर्माण? ANDI PENG: आप कर रहे हैं लाइन से लाइन पर निर्माण। तो बस में एक लाइन जाना एक समय और then-- आप के बारे में चिंता करने की जरूरत नहीं है पूरी बात खत्म। के माध्यम से प्राप्त करने की कोशिश करते हैं शायद दो, तीन लाइनों और फिर हम बुलाई और यह पूरा करेंगे। तुम लोगों को खो रहे हैं, तो यह पूरी तरह से ठीक है। यह एक बहुत कठिन अवधारणा है। तुम लोगों को वर्ग चिंतित हैं कि अगर डेविड कह रहा था जैसे इस तरह है, यदि ऐसा नहीं होता। हम तक पहुंच रहे हैं कठिनाई के वैचारिक शिखर और फिर यह जा रहा है नीचे की ओर झुका हुआ हो। तो तुम लोग लगभग देखते हैं। हम कैंडी के बहुत से प्राप्त करने के लिए है कूबड़ के माध्यम से तुम लोग। मैं पतन के बाद बहुत ज्यादा लगता है हम कूबड़ खत्म हो जाएगा तोड़ने और जीवन फिर से ठीक हो जाएगा। सब पर तो कोई चिंता नहीं। ठीक है। मैं तुम लोगों को 20 दे दूँगा अधिक सेकंड लपेट। ठीक। ठीक है। चलो इस पर एक चाकू ले चलो। आप लोगों के रूप में, मुझे जवाब दे मैं बस में उन्हें टाइप करने के लिए जा रहा हूँ। और उम्मीद है कि we-- मैं कर सकता हूँ? मैं वास्तव में यह नहीं लिख सकते हैं। मैं यह बोर्ड पर आकर्षित करेंगे। यहाँ तो यह पहली पंक्ति में हम एक बी स्टार ग के बराबर होती है। इसके अलावा इलियट लाया एक वास्तव में, वास्तव में अच्छी बात है। मैं करने के लिए इसके अलावा में भूल गया कि क्योंकि दो तरीकों से हम स्टार प्रतीक का उपयोग कर सकते हैं, एक तीसरा रास्ता वास्तव में नहीं है। गुणन। और तो सिर्फ इसलिए उलझन में नहीं मिलता एक सितारा है कि उपयोग करने के पहले तरीका है। यह सिर्फ कंप्यूटर बता रहा है मैं एक सूचक बनाने के बारे में हूँ कि। ऐसा करके दूसरा तरीका अपने सूचक का सितारा, कि आप चाहते हैं कि सूचक बताता है कि सूचक पर डेटा का उपयोग करने के लिए। और फिर, ज़ाहिर है, वहाँ सिर्फ साधारण गुणा दो संख्याओं के बीच आपको बताता है कि मैं दो गुणा करने के लिए चाहते हैं। इसलिए तरीके का एक बहुत कुछ है हम स्टार प्रतीक का उपयोग कर सकते हैं। उलझन में नहीं मिलता। जरा सोचो कि तुम लोग समझते हैं कि यह सुनिश्चित कर लें वास्तव में क्या उन तीनों को कर रहे हैं। , इस पहली पंक्ति में तो एक ख बार सी के बराबर होती है। तो चलो के माध्यम से चलते हैं क्या ए, सी क्या है, ख क्या है? और एक के सूचक, क्या है ख के लिए सूचक, और ग के लिए सूचक? बराबरी उन सब क्या कर रहे हैं? ठीक। एक 3 के बराबर होती है तो के साथ हम शुरू, बी 4 के बराबर होती है, और सी सही, 5 के बराबर होती है? कर सकते हैं, कि पहली पंक्ति के बाद तो किसी को क्या एक है मुझे बताओ? हाँ। सिर्फ उत्तर बाहर चिल्लाओ करने के लिए स्वतंत्र महसूस हो रहा है। 20। अच्छा। बी क्या है? दर्शकों: 4। ANDI PENG: सी क्या है? दर्शकों: 5। ANDI PENG: याय। अच्छा। देहात, पंजाब, और पीसी क्या हैं? दर्शकों: 000001 और 002? ANDI PENG: हाँ। एक चाल सवाल की इतनी तरह लेकिन वास्तव में नहीं क्योंकि यहाँ मैं वास्तविक यादें बाहर खींचा। लेकिन, क्योंकि एक उदाहरण के लिए, हम नहीं करते वास्तव में उन लोगों की संख्या क्या कर रहे हैं, हम सिर्फ एम्परसेंड कह सकते हैं। मैं भी नहीं जानता कि यदि मैं एक एम्परसेंड आकर्षित कर सकते हैं। यह like-- है कि आप इसे कैसे करते हैं? दर्शकों: एक आठ ड्राइंग की तरह। ANDI PENG: एक आठ की तरह। उस तरह। ठीक। दर्शकों: बिंगो। ANDI PENG: यह हत्या। तो एक एम्परसेंड, आप कर सकते हैं बस। हम वास्तव में नहीं है क्योंकि परवाह क्या इस बात का मूल्य है, और यह कुछ लंबा है गधा मूल्य वैसे भी, हम सिर्फ giong उपयोग कर रहे हैं एम्परसेंड एक कहने के लिए। तब पीबी क्या है? दर्शकों: [अश्राव्य]। ANDI PENG: हाँ। कूल। ठीक है। आसान पहली पंक्ति। वी गॉट दिस। सूचक आसान कर रहे हैं। यह ठीक है। दूसरी पंक्ति। और तो स्टार के बराबर होती ही है एक कहावत के रूप में बात एक बार सी के बराबर होती है। यह लेखन का सिर्फ एक आसान तरीका है। इसलिए हम बनाने की कोशिश नहीं कर रहे हैं एक बिंदु या यहाँ कुछ भी। तो पहली पंक्ति के साथ किया। एक दूसरी लाइन पर क्या है के बाद आप एक बार ग के बराबर होती है ऐसा? दर्शकों: 100? ANDI PENG: यह 100 है। अच्छा। कैसे ख के बारे में? दर्शकों: [अश्राव्य]। ANDI PENG: कैसे सी के बारे में? दर्शकों: [अश्राव्य]। ANDI PENG: और कैसे संकेत के बारे में? ठीक है, एक ही they-- हैं? ठीक। अब तीसरी लाइन। थोड़ा पेचीदा मामला। बी स्टार देहात के बराबर होती है। किसी को पहला, मुझे बता सकते हैं, क्या स्टार देहात बराबर करता है? दर्शकों: यह मूल्य है कि एक पर संग्रहीत किया जाता है। ANDI PENG: बिल्कुल। और मूल्य क्या है कि एक पर संग्रहीत किया जाता है? दर्शकों: 100। ANDI PENG: ठीक है। तो एक के बाद क्या होगा कोड की है कि लाइन को क्रियान्वित? दर्शकों: [अश्राव्य]। ANDI PENG: ख के बारे में क्या? दर्शकों: 100। ANDI PENG: हाँ। और फिर सब कुछ है बहुत ज्यादा अपरिवर्तित, है ना? हम इसे छुआ तक नहीं था क्योंकि। कूल। चौथी लाइन। थोड़ा और अधिक जटिल है। तो pc-- एक बार फिर, पीसी सूचक है कि देहात के बराबर होती है c-- की ओर इशारा किया। क्या है एक? दर्शकों: 100। ANDI PENG: ख क्या है? दर्शकों: 100। ANDI PENG: सी क्या है? दर्शकों: 5। ANDI PENG: देहात क्या है? दर्शकों: एक एम्परसेंड। ANDI PENG: पंजाब? दर्शकों: एम्परसेंड बी। ANDI PENG: और मुश्किल, पीसी अब क्या है? दर्शकों: एक एम्परसेंड। ANDI PENG: याय। वू हू। तुम लोग देखते हैं? यह सब ठीक है। यह भी बुरा नहीं है। यह सब नहीं है, तो हम और अधिक कैंडी ठीक है, लेकिन मैं यह सब ठीक है। और हम सिर्फ एक पर जाने के लिए जा रहे हैं हम कठिन वाले हिट से पहले और अधिक। जवाब मैं यहाँ तक है। मूलतः, यह पता है कि सिर्फ इस बात पर गणित की तरह। आप एक तरह सरल समीकरण है जब इसके अलावा बी, एक बार सी, ऐसा करने के लिए आसान है। और तुम पर विस्तार शुरू करने के समय यह सिर्फ कार्रवाई के आदेश जाओ। पहले की तरह ही बात है। ट्रैक की यदि रखें अपने स्टार कुछ सामने है। यही कारण है कि आप मूल्य बताता है। आप एक और पहले है, तो कुछ है, तो यह आपको पता बताता है। और अगर आप आवंटित करना चाहिए या तो संकेत या कि मूल्य। तो चलो इस पर चलें पिछले एक असली जल्दी। नहीं यह पिछले एक, माफ करना। असल में, तुम लोगों को चुन सकते हैं। जो एक तुम लोग जाना चाहते हो शेष तीन से बाहर के ऊपर जो हमारे पास है? मुझे लगता है हम कर सकते हैं बस नहीं लगता हम सिर्फ लाइन पर कूद नहीं कर सकते हैं। ठीक। तुम लोग, एक विकल्प नहीं है एक पिछले करने के लिए यह सिर्फ तीसरी है। स्टार पीसी बी बार सी के बराबर होती है। दर्शकों: स्टार पीबी? दर्शकों: स्टार PB। ANDI PENG: क्षमा करें? दर्शकों: स्टार PB। ANDI PENG: स्टार PB। मेरी गलती है। स्टार पंजाब ख बार सी के बराबर होती है। मैं तुम लोगों को 10 सेकंड देने के लिए जा रहा हूँ। बस जल्दी से लगता है। यह हम ऐसा है कि अब तक, क्या हम बाद क्या होता है सही है कि वहाँ पांचवें लाइन पर अमल? ठीक। क्या है एक? दर्शकों: 100। ANDI PENG: 100। बी अब क्या है? दर्शकों: 500। ANDI PENG: अच्छा। किसी को समझाने के लिए चाहता है मुझे करने के लिए 500 क्यों है? मुझे लगता है हम की तरह नहीं लग रहा है वास्तव में कभी ख को छुआ। हम कैसे बदलने के लिए प्रबंध किया था ख को छूने के बिना ख का मूल्य है? हाँ? दर्शकों: क्योंकि स्टार पीबी pb-- पर मूल्य का मतलब ANDI PENG: बिल्कुल। दर्शकों: --which ख है। ANDI PENG: बिल्कुल। तो यहाँ हमारे चित्र में, हमारे सूचक पंजाब वास्तव में यह सही करने के लिए इशारा कर रहा है यहां, जो वास्तविक भौतिक ख है। और तो तुम जाओ और यदि आप स्टार पीबी करते हैं, वह है, अपने सूचक के अपने तीर निम्नलिखित और शारीरिक रूप से ख के मूल्य बदल रहा है। तो यह है कि हम करने के लिए बदल ख क्यों है वास्तव में ख को छूने के बिना 500। और फिर बाकी सब रहता है हम चाहते हैं कि छुआ तक नहीं था क्योंकि एक ही है। यही कारण है कि ख है। कूल। और फिर-- दर्शकों: मैं सिर्फ एक सवाल है। ANDI PENG: हाँ? दर्शकों: चूंकि we've-- एम्परसेंड ग वहाँ नहीं रह गया है, कि एम्परसेंड एक मतलब होता है अब एक ही बात पर रीडायरेक्ट? ANDI PENG: हाँ। So-- दर्शकों: तो तीर एक तरह से सिर्फ और-- चलता है ANDI PENG: तो essentially-- दर्शकों: हम access-- नहीं कर सकते --now ANDI PENG: --when हम मैं जालसाज on-- भिन्नता सी। वह क्या था? तीसरी लाइन? चौथा। चौथी लाइन। सभी हमने किया, अनिवार्य रूप से किया गया था, इस तीर को बदल और यह एक के बजाय की ओर इशारा किया है। दर्शकों: तो हम अब और सी का उपयोग नहीं कर सकते हैं। ANDI PENG: यदि आप इस किया था, तो सटीक नंबर, आप इसे उपयोग कर सकता। लेकिन कोई नहीं। हम एक सूचक नहीं है अब और ग की ओर इशारा करते हुए। अगर तुम चाहते थे, मुझे लगता है , आप इसे पहुँच के लिए फिर से एक और पैदा होगा ग को बताया कि फिर सूचक या इस dereferenced और पीठ की ओर इशारा किया। तो, नहीं, अभी के रूप में, तीन संकेत दिए गए, उनमें से कोई भी ग को इंगित। हर कोई अच्छा है? जवाब ऑनलाइन कर रहे हैं। , अनुभाग के बाद, ऊपर जाने के लिए स्वतंत्र महसूस पिछले दो और परीक्षण अपने आप को। एक ही अवधारणाओं, सिर्फ एक थोड़ा पेचीदा मामला। बस के तर्क के माध्यम से पालन क्यों बातें अलग बातें हैं। और संकेत, संकेत दिए गए हैं हम प्यार करते हैं कि एक विषय वे कर रहे हैं, क्योंकि क्विज़ पर कवर करने के लिए धारणा बहुत चुनौतीपूर्ण। तो मैं आपको सुझाव है कि लोग सब इस चार्ट की समीक्षा या इसी तरह की अवधारणाओं को स्लेश यह आपकी प्रश्नोत्तरी से पहले अगले हफ्ते। दर्शकों: मुझे माफ करना। ANDI PENG: हाँ? दर्शकों: [अश्राव्य] अंतिम one-- [सुनाई]। ANDI PENG: 50,000? मैं नीचे इसे वापस का पालन करने की आवश्यकता होगी। लेकिन मुझे लगता है कि लाइन somewhere-- इससे पहले, आप विशाल ग मूल्य बनाया। सी इस विशाल बात के बराबर होती है जो 100 गुना 500 है। नहीं। दर्शकों: [अश्राव्य]। ANDI PENG: हाँ। 10,000 है, जो 100 गुना 100। जो 10,000 है। तो वापस नीचे वहाँ आप कर रहे हैं बी और सी गुणा। B-- को इंगित करता है सूचक तो 500-- समय का मूल्य जो है एक-- दर्शकों: [अश्राव्य]। ANDI PENG: हो सकता है कि गलत है। दर्शकों: नहीं, नहीं, ऐसा नहीं है। [अश्राव्य] ग में सूचक अब एक-- पर इशारा कर रहा है ANDI PENG: हाँ। वह सही है। दर्शकों: --it एक बराबरी पर अपने पर है एक गुना यह ग का मूल्य है। ANDI PENG: आप एक छोटे से कह सकते हैं कि थोड़ा जोर से तो हर कोई आप सुन सकते हैं? दर्शकों: सेल्सियस पर तो सूचक अब बताते हैं एक का सूचक बात करने के लिए क्या इस्तेमाल करने के लिए है-- और अभी भी does-- लेकिन उनके द्वारा इंगित ठीक है, एक है, जो एक ही बात है? मूल्य एक, तथापि यह नव परिभाषित किया गया है। और उस की शुरुआत में आप कर रहे हैं एक पहले 100 बार कह रहा था 500 है, जो बी पर मूल्य। और इतना है कि हालांकि ज्यादा है कि है। 50,000। वे तुम्हें करने के लिए कि फिर नियत कर रहे हैं क्या ग पर स्मृति अंतरिक्ष सेल्सियस पर सूचक है- एक है जो करने के लिए इशारा कर रहा है। तो अगर आप 50,000 होने के लिए एक पुनर्परिभाषित कर रहे हैं। ANDI PENG: वह कर सकती थी मेरे लिए खंड सिखाने। अगली बार यह सब तुम्हारा है। यहां. यहाँ उस के लिए अधिक कैंडी है। तुम उस के लिए कैंडी के लायक हो। दर्शकों: मैं लगभग कि पकड़ा। ANDI PENG: आप लगभग कि पकड़ा। यह सब ठीक है। हाँ। लेकिन वह बिल्कुल सही था। तो तुम्हें क्या करना है क्या मुझे लगता है हमें लगता है कि that-- है इस तथ्य का पालन किया है संकेत है कि अब विभिन्न मूल्यों की ओर इशारा करते। तो value-- क्षमा करें, ग का सूचक एक को repointed। और इसलिए हमारे संख्या के सभी स्थानांतरित कर दिया गया है। आप का उपयोग और है कि जब, क्यों है मूल्य यह अलग है, वहाँ जमा। समझ आया? ठीक। कूल। अच्छा हर कोई, मैं आगे बढ़ने से पहले? दर्शकों: आप जा रहे हैं जब the-- करता है बाएँ स्तंभ में पंक्तियों नीचे, पहली पंक्ति दूसरी पंक्ति को प्रभावित करता है और उसके बाद की तरह, यह all-- second-- है ANDI PENG: हाँ। तो यह है कि मैं सिर्फ टाइप जहां कोड है कल्पना एक ख बार सी के बराबर होती है, एक स्टार ग के बराबर होती है। बस मैं सोच भी है कि सिर्फ इस कोड भागा और मैं बाहर प्रिंट नहीं था क्या इन सब बातों के थे। अगर मैं थे सिर्फ पहला मुद्रित करने के लिए शीर्ष पर बात, यह यहाँ हो जाएगा। मैं के सभी भाग गया के बाद तो कोड के उन लाइनों, क्या इन मूल्यों चाहिए अंत में होना है। इसलिए मैं वास्तव में यहाँ एक कार्यक्रम में लिखा है। मैं सब कुछ किया नहीं है गुणन। लेकिन सिर्फ कल्पना। तो यहाँ मैं सिर्फ एक है कार्यक्रम संकेत बुलाया। मैं तुम्हें ठीक guys-- यदि ज़ूम करने के लिए जा रहा हूँ। इसलिए मैं चर ए, बी, और सी बना लिया है। मैं करने के लिए उन्हें बराबर निर्धारित किया है 3, 4, 5 और मैं उनके इसी संकेत बनाया। और फिर यहाँ मैं बस जा रहा हूँ क्या है कि बाहर मुद्रित करने के लिए। तो मुझे लगता है कि चलाते हैं। तुम लोगों को see-- बकवास मत करो। आप लोग कैसे एक देख रहे हो, बी और सी उन मान रहे हैं लेकिन उनके संकेत इस विशाल हैं हम के बारे में परवाह नहीं है कि कचरा मूल्य है? इसलिए मैं वास्तव में प्लग करने के लिए गए थे सभी गुणन में और उसके बाद के सभी पुनर्मुद्रण यही नहीं, इसे बाहर अमल होगा कि तल पर है क्या करने के लिए। तुम लोगों को चारों ओर खेलना चाहते हैं तो वास्तव में शारीरिक रूप से कोडिंग के साथ, तुम लोगों को बस में उन सभी के प्लग कर सकते हैं। कोड ऑनलाइन और फिर अपने होगी मूल्यों बाद में करने के लिए कि प्रिंट चाहिए। और फिर आप कैसे सूचक देखेंगे पतों वास्तव में फिर नियत किया है। तो आप देखेंगे कि कैसे ग का पता वास्तव में हो जाता है एक का पता था जो कुछ भी बराबर करने के लिए। और वे मैच हूँ जो कुछ भी कि बड़ी संख्या है। अच्छा प्रश्न। हर कोई सब ठीक है? प्रश्नों के लिए एक आखिरी कॉल। ठीक। ठीक है। तो अपने मन को तैयार उड़ा एक से थोड़ा अधिक काटा। सारणियों वास्तव में सिर्फ संकेत दिए गए हैं। यही कारण है कि वे कर रहे हैं सब है। और तार क्या कर रहे हैं, याद है? उन्होंने यह भी सरणियों कर रहे हैं। तो तार वास्तव में क्या कर रहे हैं? वे करने के लिए संकेत की तरह हो अधिक वर्ण की एक चार की शुरुआत। तो यह है कि शुरू में सिर्फ अवधारणाओं है एक दूसरे के शीर्ष पर निर्माण करने के लिए। तो यह है कि why-- तुम हो व्याख्यान में याद, डेविड, वह उस तुलना था जब पूर्णांक स्ट्रिंग माँ की फिर कुछ और है एक और स्ट्रिंग माँ और आप एक दूसरे से दो समकक्ष करने के लिए कोशिश करते हैं, वे आप विभिन्न मूल्यों दे। यह तार क्योंकि खुद को मान नहीं हैं। वे कर रहे हैं सभी स्मृति पते हैं char-- वे वर्ण और सारणियों की सरणियों हैं सिर्फ संकेत दिए गए हैं। तो, संक्षेप में, जब डेविड comparing-- था मैं इस सब को मिटा अगर यह ठीक है? तब दाऊद ने व्याख्यान में जब था माँ बराबर हमें करने के लिए है कि एक ही बात लगती है। है ना? लेकिन, नीचे कंप्यूटर में डाकू, वास्तव में क्या हो रहा है कि इस स्ट्रिंग है, सभी यह है कि एक सरणी है। एक ampersand-- के साथ या, माफ करना, अंत में एक अशक्त टर्मिनेटर के साथ। है ना? Backslash 0। गलत बैकस्लैश। इतना सब वे सब were-- इन दोनों के तार were-- आकार चौकों की सरणी के साथ कर रहे हैं माँ और माँ का पत्र। लेकिन क्या सरणियों रहे हैं वास्तव में बस रहे हैं स्मृति में एक विशिष्ट स्थान के लिए संकेत कि आप अपने सरणी शुरू करने के लिए कहता है। तो इस मामले में, यह सब था बस कुछ कचरा मूल्य था, कुछ बेतरतीब सूचक। और यह सब किया गया था कुछ अन्य कचरा मूल्य। चलो बस 0x200 कहते हैं। और तो आप बराबर करने की कोशिश में उन्हें एक दूसरे के लिए दो, क्योंकि वे झूठी का मूल्यांकन संकेत addresses-- वे were-- कि अलग थे। आप कर रहे हैं, तो यह अलग है जबकि वास्तविक पूर्णांकों की तुलना करने की कोशिश कर रहा है। आप compare-- करना चाहते थे जैसे कि अगर पिछले example-- पूर्णांक एक बी करने के लिए, वे मूल्यांकन होगा सच करने के लिए इलियट ने कहा कि के रूप में वे थे क्योंकि संग्रहीत किया गया है कि पूर्णांकों और तुम सिर्फ मूल्यों का मूल्यांकन कर रहे हैं। इधर, क्योंकि तार सरणियों हैं और सभी सरणियों संकेत कर रहे हैं, वे नहीं कर रहे हैं यही कारण है कि एक दूसरे के बराबर। तो एक तरह से, कि ग्राफिक भ्रामक। लेकिन हम सिर्फ कल्पना करते हैं। हम आकार की एक सरणी बना दिया है 2-- 0 से 0 से सूचकांक के साथ 3, 1 के मूल्यों के साथ 1, 2, 2, और 3 उन में संग्रहीत। सभी सरणी सच चलो बस, चलो यहाँ does-- मैं एक सूचक पैदा कर रहा हूँ कहना है कि उस सरणी के लिए पर मूल्य तक पहुँचने इस सरणी के पहले सूचकांक। यहाँ तो यह शून्य होगा। है ना? हर किसी को समझ में कैसे करता है पहली पंक्ति का मूल्यांकन किया है? अच्छा है। और तो आप को प्रारंभ करना चाहते थे उस के बाद अतिरिक्त मान, सब हम फिर नियत कर रहे हैं। तो 0, 1, 2, 1। तो एक बार इस सूचक था कि यहाँ की ओर इशारा करते, सब हम कर रहे हैं यह नीचे जा रहा है। यही कारण है कि प्लस 1 क्या कर रहा है है। और फिर हम वहाँ दो डाल सकते हैं। हम एक में 3 डाल करना चाहते थे तो बाद में, हम इस सूचक मिटाना होगा, वहाँ में 3 डाल दिया। कि मतलब हर कोई करता है? हाँ। आप में एक सवाल है? दर्शकों: यह [सुनाई] है है एक सवाल है, मैं यह भी कहूँगा। मैं यह वास्तव में एक नहीं लगता है अंग्रेजी में but-- सवाल, सरणी 1 के बराबर होती समझ में आता है। हम, ठीक है, पहले की तरह बात कर रहे हैं। लेकिन चीजें 0 सूचकांक रहे हैं [अश्राव्य] सरणी 0 के बराबर होती है पहले स्थान इंगित करने के लिए। ANDI PENG: हाँ। तो क्या वास्तव में मैं कर रहा हूँ यहाँ है जब मैं पहली बार सूचकांक पहुँचने नहीं कर रहा हूँ। सभी मैं, तो सब से पहले doing-- था स्टार सरणी क्या करता है मुझे बता सकते हैं? एक सूचक से पहले एक सितारा क्या करता है? दर्शकों: यह एक सूचक इंगित करता है। यही कारण है कि आप एक सूचक की घोषणा कर रहे हैं। यह de-- ANDI PENG: यह जो साधन dereferences यह हो जाता है और वास्तव में मूल्य हो जाता है। है ना? इस मामले में तो, आप प्राप्त करना चाहते हैं मूल्य यहाँ और है कि 1 के लिए निर्धारित किया है। हाँ? इसलिए मुझे लगता है मैं नहीं actually-- नहीं कर रहा हूँ वास्तव में इस के सूचकांक के बारे में परवाह है, मैं क्या कर रहा हूँ सब सिर्फ नीचे पुनरावृति है सरणी नीचे मेरी सूचक को ले जाकर। और फिर अंत में मैं ठीक है, इसे रोकने के लिए है? और मुझे लगता है कि रोक रास्ता मैं मारा जब मामले में है एक स्ट्रिंग, एक अशक्त टर्मिनेटर की। मैं देख रहा हूँ कि अगर मैं एक back-- मारा अगर मैं, ओह, पता है बैकस्लैश 0, मैंने सोचा कि मैं इस के साथ कर रहा हूँ और मुझे लगता है कि मैं सिर्फ पता कर सकते हैं के माध्यम से पुनरावृति को रोकने के। बहुत अच्छा सवाल। और हम वास्तव में आगे जाना होगा यह अगले सप्ताह में गहराई में क्योंकि जा रहा है कि टुकड़ा संकेत के उपयोग का एक बहुत कुछ शामिल है। लेकिन बस अभी पता चला है कि, कि सिर्फ एक अलग more-- है उस के लिए सिर्फ एक अलग तरीका है कंप्यूटर, अनिवार्य रूप से लिखने के लिए हम क्या कर रहा है। डेविड में कहा , जिस तरह से व्याख्यान कि हम एक सरणी कर रही द्वारा बस है का उपयोग सरणी 0, ब्रैकेट 0, अगर हम सिर्फ पहले मूल्य का उपयोग करना चाहता था। सभी कंप्यूटर बदल रहा है कर रही है उस में और खुद पुनरावृति कि। इसलिए हम वाक्यात्मक इसे कहते हैं बस है जो चीनी उपयोगकर्ता के अनुकूल कह का एक अच्छा तरीका कार्यक्रम के लिए कैसे जानने के लिए हमें के तरीके। लेकिन कंप्यूटर नीचे, यह क्या कर रहा है, यह वास्तव में सिर्फ आ रहा है समायोजन है कि एक सूचक। लेकिन हम यह लिखते हैं कि जिस तरह से, यह हमारे लिए आसान है क्योंकि के मामले में चीजों के बारे में सोचने के लिए बक्से और बक्से नीचे स्थानांतरित करने के लिए कैसे, कोष्ठक होने से है। क्षमा करें, कि, वास्तव में था वास्तव में खराब हाँ but--। कैसे तो होगा: दर्शकों आप दो तार की तुलना वे एक दूसरे के बराबर हैं, तो देखने के लिए? ANDI PENG: तो दाऊद ने लिखा व्याख्यान में इस कार्यक्रम तो मैं बस जाने के लिए जा रहा हूँ जल्दी और संक्षिप्त पर। तुम करोगे रास्ता कि आप वास्तव में होता है जाओ और तुलना की जरूरत है addresses-- या मान संकेत से प्राप्त की। तो आप कैसे करते हैं, याद यहां मूल्य प्राप्त? मैं यहाँ पते के बारे में परवाह नहीं है। मैं वास्तव में कैसे मिलता है जो कुछ भी मूल्य यहाँ है? दर्शकों: [अश्राव्य]। ANDI PENG: बिल्कुल। तो आप स्टार की तुलना यहाँ स्टार बनाम। उन बराबर हैं। और फिर आप नीचे जाना। यहां स्टार हैं और यहां बराबर स्टार? ठीक। वे बराबर कर रहे हैं। और तुम बस नीचे जा रहा रखने आप दोनों के अंत मारा है जब तक। और उन सभी को तो बराबर हैं, यदि आप अपने स्ट्रिंग बराबर है। और सी वास्तव में है एक समारोह में बुलाया लिखा स्ट्रिंग कंप्यूटर अनुप्रयोग, जो वास्तव में सिर्फ आप न तो 'आप के लिए ऐसा करता है यह अपने आप को लिखने के लिए है। हाँ? दर्शकों: मैं व्याख्यान में लगता है हम तुलना जब है। हम वास्तव में एक की जरूरत नहीं गड़बड़ी की तरह काउंटर, है ना? ANDI PENG: क्या तुम नहीं हम वास्तव में परवाह नहीं है क्योंकि कितने बक्से हम के माध्यम से दोहराया है। हम परवाह सब हम करने जा रहे हैं वह यह है कि मैं रोकने के लिए जब तक आप जानते रख रहा है। और आप जब रोकने के लिए पता संकेत के कुछ प्रकार है आप एक अशक्त टर्मिनेटर पर कर रहे हैं कि। हाँ। So-- दर्शकों: [अश्राव्य]। ANDI PENG: हाँ। तुलना करने के मामले में तो तार, मैं वास्तव में नहीं है कितने पत्र परवाह मैं तुलना करने की जरूरत है are-- वे सच है या झूठ, अगर कर रहे हैं वे एक दूसरे के बराबर कर रहे हैं। मैं कितने पत्र परवाह नहीं है उनमें से प्रत्येक में, सही कह रहे हैं? मैं सिर्फ यह है कि परवाह इस और एक के साथ मेल खाता है मैच और एक के बाद के बाद अंत में जब तक सभी तरह से मेल खाता है। है ना? समझ आया? इसलिए मैं वास्तव में, कितने पत्र परवाह नहीं है मैं सिर्फ परवाह पत्र के सभी कि मैच। हाँ। ठीक। मैं इस से आगे बढ़ने कर सकते हैं? अच्छा है। हम कम पर एक छोटे से चला रहे हैं समय तो मैं बस आप अनुमति देने के लिए जा रहा हूँ लोग संक्षेप में इस पर ध्यान देने की। अपने आईडी यदि इसे चलाने के लिए तुम लोगों को उत्सुक हैं। और तुम लोग क्या देख सकते हैं इस बाहर मुद्रण किया जाएगा। ठीक। हम भी एक पर स्पर्श करता हूँ तो यह है कि कुछ बिट सूचक अंकगणित का विचार है। कौन सा है, यह है, सब है बल्कि एडजस्ट करने से संग्रहित है क्या के मूल्यों अपने सूचक के पते पर, यह सिर्फ वास्तव में बदल रहा है पता ही है। तुम इंसान चाहता था के रूप में तो अगर स्वयं अपने सूचक को समायोजित करने के लिए, यदि आप ऐसा होगा जिस तरह से बस है सूचक के n बार आकार करते हैं। है ना? तो एक इंट। एक int-- कितने बाइट्स स्मृति में एक पूर्णांक है? यह ठीक है, चार है? अगर मुझे पता है इसलिए मैं सभी की एक सरणी है ints और मैं इसे एक को इंगित करना चाहते हैं बाद में, मैं मैं तो बस करना है पता था ठीक है, चार बाइट्स मेरी सूचक नीचे ले जाने? और इसलिए n बार आकार सूचक बाइट्स की लेकिन कई बाइट्स है आप बस रहे हैं द्वारा अपने सूचक नीचे स्थानांतरित करने के लिए जा रहा है। तो उदाहरण के लिए, हम में से एक सरणी है ints, पहले एक, चलो बस कहना है 0x00 रूप में जमा है। आप अगले एक पर होने जा रहा है पता है 0x04 कि चार बाइट्स बाद में है, क्योंकि। और कहा कि एक के बाद एक होने जा रहा है 0x08 और इतने पर और आगे जाना है। और हां, एक आदमी, एक नज़र रखना। आप यहाँ क्या कर रहे सभी है आप एक सूचक y है कि और आपको लगता है कि जोड़ रहे हैं अपने स्मृति आप नीचे ले जा सकते हैं, इसलिए है कि स्मृति के ब्लॉक आवंटित किए। एक उच्च स्तर की अवधारणा की तरह। तुम लोग की जरूरत नहीं होगी इस सप्ताह के लिए पता करने के लिए लेकिन लगता है कि यह वहाँ नीचे कर रहा है सब है। ठीक। एक और मजाक का समय है। दो तार एक बार में चलना। एक मैं एक रम चाहते हैं, कहते हैं, और कोक कचरा मूल्यों। अन्य आप माफ करना होगा कहते हैं, मेरे दोस्त, वह अशक्त समाप्त नहीं कर रहा है। तुम लोग यह मिलता है। माफ़ कीजिए। यह मैं अपने आप को रखने के लिए कैसे मैं अनुभाग के लिए तैयार करने जा रहा है जब मैं एक दो मजाक स्लाइड्स सम्मिलित है। वैसे भी। ठीक। मैं on-- बढ़ने से पहले इसलिए, अनिवार्य रूप से, हम है कवर सभी वैचारिक संकेत से संबंधित मुद्दों। और फिर हम आगे बढ़ talk-- लिए जा रहे हैं महत्वपूर्ण है कि क्यों इस बारे में अधिक, बात करते हैं और उस में फिट बैठता है स्मृति प्रबंधन का विचार है। लेकिन मुझे आगे बढ़ने से पहले, किसी को भी सवाल है सूचक उपयोग के बारे में, क्या हो रहा है आप संकेत पैदा कर रहे हैं पर जब, कैसे प्रत्येक संदर्भित कर रहे हैं दूसरे, वे कैसे अपसंदर्भन कर रहे हैं? के बारे में किसी भी सवाल मैं आगे बढ़ने से पहले कि? ठीक। अच्छा है। तो यह इस में हमें लाता बड़े उच्च स्तर की अवधारणा एक पूरे के रूप में स्मृति प्रबंधन की। तो, मूलतः, में आपके कंप्यूटर नहीं है, स्मृति के दो बुनियादी प्रकार या जो स्मृति में क्षेत्रों में जमा है। आप क्या कहा जाता है यहाँ है ढेर और आप नीचे यहाँ है क्या हो चुकी है कहा जाता है। और हम के बारे में बात करने जा रहे हैं ढेर पहला यह है क्योंकि अधिक finagley एक है कि आप एक तरह से धारणात्मक के लिए है क्या हो रहा है समझते हैं। इतना सब हो चुकी है के बारे में सोच है- यह स्मृति का एक शारीरिक ढेर के रूप में आप स्मृति का एक ब्लॉक है जहां कि अपने कार्यक्रम के लिए अलग सेट है यह चल रहा है, जबकि। और यह सब, अनिवार्य रूप से, जहां है की अपनी स्थानीय चर जमा हो जाती है। तो यह सिर्फ एक तेजी से बढ़ी है कि ढेर की तस्वीर में। वहाँ नीचे हो चुकी है, मैं कर रहा हूँ बस थोड़ा और अधिक में zooming। तो, मूलतः, एक ढेर में है अपने कार्यक्रम में समारोह का एक गुच्छा। तो चलो बस वापस जाओ सप्ताह में दो उदाहरण के लिए हम अपने मुख्य समारोह था जहां साथ ही साथ एक घन समारोह के रूप में हम एक समारोह बनाने की कोशिश की है कि जहां इनपुट के रूप में मानकों ले लिया है कि cubed--, उन्हें cubed और लौटे उन्हें वापस मुख्य करने के लिए। तो यह है कि उस तरह से स्मृति में संग्रहीत किया जाता है आप अपने मुख्य समारोह के लिए किया है यहाँ तल पर। और उसके बाद प्रत्येक अतिरिक्त समारोह के साथ कि आप कॉल और उस के शीर्ष पर जोड़ने के लिए, स्मृति सिर्फ शीर्ष पर ढेर। एक भौतिक ढेर के रूप में इसके बारे में सोचो। और तो आप के सभी मुख्य है अपने मुख्य कार्यों में से चर, यहाँ पर जा रहा है कि सब कुछ, संग्रहीत। और फिर आप जब कहा जाता है घन, यह हो जाता है और यह उन सभी की प्रतियां बनाता है मापदंडों और यह उन्हें भंडार एक अलग जगह में ऊपर। और इसलिए हम क्यों परवाह करते हैं? हम परवाह कारण यह है कि हम अभी नहीं कर सकता है उपयोग के मापदंडों चर here-- here-- और हम हम उम्मीद करते हैं, उन्हें बदलने उन्हें यह भी सही है, यहाँ बदला जा करने के लिए? विचार है कि वे बच रहे हैं वह यह है कि स्मृति में विभिन्न स्थानों में इसलिए, कि आप अलग अलग पहुँच रहे हैं जब काम करता है, तुम क्या हो रहा है क्या सोचते हैं वास्तव में, क्योंकि ऐसा नहीं हो रहा है स्मृति बिट्स परस्पर नहीं कर रहे हैं। और तो वास्तव में सवाल है कि हमें एक तरह से समझने के लिए महत्वपूर्ण क्या है, हम चला रहे हैं, यदि एक कार्यक्रम में एक समारोह का आकार इसलिए शारीरिक रूप से, कैसे frame-- ढेर ज्यादा स्मृति हम इसे देने के लिए क्या है? शायद यह एक विशाल समारोह तो हम है यह है कि बहुत स्मृति देना है। यह छोटे थे लेकिन अगर हम चाहते हैं एक छोटे से छोटा सा की आवश्यकता है। तो विचार है कि हम चला रहे हैं, जब कि है एक प्रोग्राम है कि समारोह का आकार कितने पर निर्भर है चर और चर के प्रकार हम इसे देने के लिए चाहते हैं। लेकिन क्या संख्या के यदि variables-- और उनके आकार, कि नहीं चुना गया है आपके द्वारा एनकोडर लेकिन वास्तविक द्वारा निर्धारित किया जाता है अपने कार्यक्रम के उपयोगकर्ता। मैं एक समारोह बनाना चाहता था तो अगर कि उपयोगकर्ता से तार ले लिया लेकिन मैं वास्तव में कैसे बड़े पता नहीं है उन स्ट्रिंग्स यह मेरे लिए मुश्किल है, कर रहे हैं विशिष्ट आवंटित करने का स्मृति की मात्रा की जरूरत है। है ना? अगर यह function-- क्योंकि अगर इस यूजर को एक विशाल स्ट्रिंग आदानों, यह एक त्रुटि पैदा करने के लिए जा रहा है अनिवार्य रूप से क्या कहा जाता है की आप से परे जाना है, जहां अतिप्रवाह हो चुकी है आपको लगता है कि स्मृति की सीमा। और इतना तो हम क्या करें? हम सिर्फ इस विशाल नहीं बना सकते हैं कि सब कुछ बचा सकते हो चुकी है, हम उस समस्या को हल करने के लिए क्या करते हैं? इसलिए हम पर और बात आगे जा रहे हैं स्मृति के इस दूसरे प्रकार के बारे में और फिर हम कैसे के बारे में बात कर सकते हैं हम दोनों एक साथ उपयोग कर सकते हैं उस सवाल का हल करने के लिए। तो अब हम ऊपर ले जाने के लिए जा रहे हैं स्मृति का एक अलग हिस्सा करने के लिए हमारे कंप्यूटर में। यही कारण है कि ढेर कहा जाता है। इतना सब ढेर एक पूल है के उपलब्ध स्मृति कि गतिशील रूप से आवंटित किया जा सकता है। तो यह है कि जबकि बदल सकते हैं अपने कार्यक्रम चल रहा है। और हां एक क्षेत्र की कर सकते हैं कि अप्रयुक्त स्मृति हो सकता है कि allowed-- होना समारोह के साथ आवंटित कहा जाता malloc, या स्मृति आवंटन। तो, मूलतः, जब आप एक कार्यक्रम चला रहे हैं आप गतिशील से स्मृति बना सकते हैं ढेर और है कि यहाँ सब नीचे का उपयोग करें। और अपने कार्यों का इतना तो सभी यहां ढेर उपयोग कर सकते हैं। और तो malloc, यह विचार है कि डेविड एक तरह से जल्दी से, संक्षेप में पर भुला व्याख्यान में, के लिए सिर्फ एक ही रास्ता है आप अपनी स्मृति को नियंत्रित करने के लिए। की तरह, जब तुम सिर्फ पैदा कर रहे हैं अगर आप अभी कर रहे हैं, कार्यों ढेर अपने मुख्य समारोह होने अपने यादृच्छिक कार्यों के साथ, आप बच्चों के रूप में उनमें से लगता है कि बस आप उनके साथ काम कर रहे थे जब दूर भाग गया। वे वास्तव में बुरा बच्चे थे। आप उन्हें आप बनाते हैं, उन्हें कुछ सिखाने, और फिर जब आप चाहते हैं वे कर रहे हैं फिर उन तक पहुँचने वहाँ नहीं अपने क्योंकि स्मृति अभी दूर भाग गया। लेकिन malloc, या ढेर, एक रास्ता है की, जहां बेहतर होने के बच्चों आप की तरह बना सकते हैं उन्हें, उन्हें मान असाइन, वास्तव में लग रहा था कि them-- उपयोग तुम चाहते थे हालांकि bad-- उन्हें इस्तेमाल करते हैं, लेकिन उसके बाद नियंत्रण करने में सक्षम होना उन्हें और उसके बाद स्मृति मुक्त आप उन्हें जब भी जरूरत है। तो फिर, आप के साथ कर रहे हैं जब आपके समारोह, बच्चों को आप वापस आने के लिए और आप अभी भी वहाँ है कि डेटा है। इसलिए हम malloc, या बना है कि जिस तरह से, स्मृति समारोह शून्य स्टार से है बाइट्स में malloc आकार। तो यह है कि सिर्फ प्रोटोटाइप है हम ऐसा क्यों है। तो एक उदाहरण है कि हम एक सूचक बनाने के लिए है के इंट स्टार pointer-- बराबरी int-- टाइप पूर्णांक के malloc आकार। हम आकार ऐसा कारण है तो की और न सिर्फ एक number-- जैसा कि हम सभी जानते हैं कि क्योंकि एक पूर्णांक के चार बाइट्स है, right-- लेकिन एक पूर्णांक के केवल चार है कुछ ऑपरेटिंग सिस्टम पर बाइट्स। हमारे लिए विचार के रूप में प्रोग्रामर है कि हम उस कोड बनाने के लिए कर सकते हैं चाहते हैं सभी कंप्यूटरों पर नहीं बस चलाने हमारे सरल कंप्यूटर। हम उपयोग करना चाहते हैं और यही कारण है इसलिए कि के आकार और नहीं सिर्फ चार नंबर। कि हर किसी को मतलब? इतना सब of-- आकार यह एक सी है समारोह या ऑपरेटर कि स्मृति करता है की कितने बाइट्स आपको बताता है चर के एक खास प्रकार ले। तो इस मामले में एक पूर्णांक के आकार के चार है। चार बाइट्स। और malloc मुक्त करने के लिए जा रहा है अपने ढेर में चार बाइट्स अप, तो आप तो अपने मुख्य में उपयोग कर सकते हैं समारोह स्मृति स्टोर करने में सक्षम होने के लिए। हर किसी को अब तक उस पर स्पष्ट है? हाँ? दर्शकों: मैं स्पष्ट कर रहा हूँ लेकिन सिर्फ clear-- खत्म हो जाए ANDI PENG: ठीक है। पूरी तरह से ठीक है। दर्शकों: --size की है [सुनाई] वास्तव में यह कर सकते हैं [सुनाई] और यह वास्तव में करना होगा हम यह चाहते हैं कि बात है। यह कुछ pseudocode नहीं है। ANDI PENG: नहीं दर्शकों: यह एक असली thing-- की तरह है ANDI PENG: यह वास्तविक कोड है। दर्शकों: --we इसका इस्तेमाल कर सकते हैं। यह वास्तविक है। कूल। ANDI PENG: के आकार सी के साथ आता है दर्शकों: यह मेरे जीवन खुशहाल बनाता है। ANDI PENG: हाँ। आप एक आलसी प्रोग्रामर रहे हैं तो अगर जैसे मैं एक तरह से कभी कभी हूँ, मैं याद रखना पसंद नहीं है एक int का क्या आकार , मैं याद रखना पसंद नहीं करते है एक नाव के आकार के साथ है। बस के आकार आपको बताता है क्या यह और है कि एक बहुत आसान है। ठीक है। इसलिए एक महत्वपूर्ण बात आप लोग सब चाहते हैं कि आप कर रहे हैं जब मन में रखने के लिए malloc का उपयोग कर हमेशा के लिए आप यह है कि यह शून्य है देखने के लिए जाँच करने के लिए है। की तरह तो मैं वापस करने के लिए कहा ढेर की उस तस्वीर। ढेर सिर्फ इस विशाल है तुम मिल गया है कि स्मृति की हो चुकी है। और अगर आप हिस्सा लेने के लिए सक्षम होना चाहता हूँ और इसमें से स्मृति का अधिकार है, इसका इस्तेमाल? लेकिन अगर आप कोई क्या है, तो उस ढेर में और अधिक स्मृति? क्या मैं पहले से ही सभी का उपयोग किया है और इसके बारे में मैं और अधिक malloc की कोशिश की? यही कारण है कि अस्तित्व में नहीं है। आप क्यों कर रहे हैं ठीक है, कि एक त्रुटि प्राप्त करने के लिए जा रहा है। आप गलती SEG तक जा रहे हैं। आप जा रहे हैं जहां आप एक विभाजन गलती है की वहाँ नहीं कर रहे हैं कि चीजों का उपयोग करने के लिए प्रयास करें। और तो जिस तरह से हम करते हैं कि और तरीका है कि हम कि हम जांच यह है कि रोकने के सूचक के अशक्त देखने के लिए। तो अगर मैं कुछ malloc के लिए गए थे और मुझे लगता है, कोई और अधिक स्मृति था कि क्योंकि एक त्रुटि प्रिंट होगा सूचक तुम सिर्फ रिक्त है करने के लिए लौट आए। और तो जिस तरह से हम है- करना यह सिर्फ महान डिजाइन है सिर्फ है- कि किसी भी है याद बार जब आप कुछ भी malloc करने की कोशिश, आप की जरूरत करने जा रहे हैं यह शून्य है देखने के लिए जाँच। आप करने की कोशिश क्योंकि जब भी ढेर से स्मृति प्राप्त है, आप हमेशा बनाने के लिए है आप स्मृति है कि सुनिश्चित करें। यही कारण है कि यह सब है। इसलिए बहुत ज्यादा उन तीन कोड की लाइनों, याद। हर बार जब आप malloc, में उन्हें खटखटाने। आप उन्हें जरूरत के लिए जा रहे हैं। मैं तुम्हें गारंटी है, क्योंकि हम जा रहे हैं एक मामला है और आप अपने कंप्यूटर पर परीक्षण करने के लिए आप कर रहे हैं, क्योंकि विस्फोट करने के लिए जा रहा है है कि स्मृति का उपयोग करने की कोशिश करने के लिए जा रहा वहाँ नहीं और बातें करने के लिए जा रहे हैं दुर्घटना और यह अच्छा होने के लिए नहीं जा रहा है। तो बस अपने दिमाग में है कि ड्रिल। Malloc, अशक्त। अच्छा। ठीक है। तो फिर इस begets क्या होता है का सवाल हम चाहते हैं कि स्मृति का उपयोग कर रहे हैं के बाद। पूरे विचार क्योंकि malloc होने का था हम ले जा सकते हैं कि इस ढेर है कि से स्मृति और उसके बाद हम इसका इस्तेमाल कर सकते हैं। है ना? और फिर हमारे पास क्या याद करने के लिए हम इसके साथ कर रहे हैं, कि है, के बाद हम तो यह मुक्त कर सकते हैं। जाने दो। हम उसे जाने दिया जा सकता है। वरना आप भी लीक करने के लिए जा रहे हैं स्मृति और अधिक बुरा होगा। अनिवार्य रूप से, जब भी आप स्मृति छू रहे हैं, बुरी बातें आप तो क्या होगा सही ढंग से काम नहीं करते। तो आप पहली बार देखने के लिए जाँच करने के लिए है, आप स्मृति उपलब्ध है तो। आप कर रहे हैं के बाद और फिर, आप करना चाहते हैं यह मुफ़्त है और अपने ऑपरेटिंग सिस्टम की अनुमति इसे वापस लेने के लिए। तो हम ऐसा तरीका है कि बस समारोह में, शून्य मुक्त, और सूचक स्मृति की है कि ढेर करने के लिए। तो उदाहरण मुक्त सूचक है। यह सरल, बहुत आसान है इसे भूल नहीं करना चाहते हैं। तो यह शून्य है, तो मुक्त, देखने के लिए जाँच। हर कोई अच्छा है? तो एक बार फिर, कोड है कि आप लोग एक तरह से जल्दी पर एक नज़र ले जा सकते हैं। मैं यह नई वाक्य रचना का एक बहुत जानते हैं और आप आह, पसंद कर रहे हैं, अगर यह सब ठीक है कि फिर क्या मतलब है? कोई चिंता नहीं। यह सब प्रदर्शित कर रहा है होना चाहिए था एक एक्शन, कैसे इन सब बातों का एक साथ इस्तेमाल किया जा सकता है। तो यह है कि एक साथ रखा है अतीत का एक झुंड की तरह स्लाइड हम बस गया था के माध्यम से एक कार्यक्रम में। दर्शकों: एक तरह से हम actually-- सकते हैं ANDI PENG: एक तरह से है कि हम वास्तव में उपयोग कर सकते हैं। आप अपने आईडी में है कि खटखटाने जा सकता था आप इसे चला सकते हैं और यह काम करेगा। दर्शकों: ठीक है। तो यह है कि असली है? ANDI PENG: यह असली है। हाँ। मैं तो इसे बनाने की कोशिश फोंट बहुत अलग हैं मैं वास्तविक प्रकार है कि जब भी कोड फ़ॉन्ट कोड है और मेरी चिट्ठी कोड अलग है कि लेकिन कि वास्तव में काम करता है, तो मैं नहीं जानता। दर्शकों: नहीं मुझे लगता है कि-- ANDI PENG: ठीक है। दर्शकों: --sometimes [अश्राव्य] और मैं कर रहा हूँ जैसे कि, वास्तव में प्यारा होगा यह वास्तव में एक प्रयोग करने योग्य बात थी लेकिन तब यह एक प्रयोग करने योग्य बात नहीं है। मैं यह एक प्रयोग करने योग्य बात यह है कि पसंद है। ANDI PENG: ठीक है। हाँ। मैं भी साथ कि पारित करेंगे। दाऊद की तरह हो, बच्चों को वास्तव में कर रहे हैं दुख की बात है आप नकली कोड लिखना है। ठीक है। हाँ? दर्शकों: तो यहाँ पीटीआर वास्तव में एक सूचक नहीं है यह स्मृति का एक ब्लॉक है? ANDI PENG: तो आप के बारे में बात कर रहे हैं पहली पंक्ति या यहाँ नीचे एक? आप यहां इस बारे में बात कर रहे हैं? दर्शकों: पीटीआर है in-- अलग अलग बातें ANDI PENG: ठीक है, यहाँ तक इतने क्या मैं वास्तव में doing-- रहा हूँ, चलो बस यहाँ के माध्यम से चलते हैं। संबंधों के इस प्रकार में अच्छी तरह से अवधारणाओं के सभी। यहाँ तो हम पूर्णांक स्टार पीटीआर है। तो सूचक int, कि कहाँ है हम वास्तव में बना रहे हैं एक पूर्णांक के लिए बताते हैं कि एक सूचक। खैर, यह एक पूर्णांक के लिए बात करने के लिए जा रहा है। और हम malloc करने जा रहे हैं, या इसे देने के लिए पर्याप्त स्मृति आवंटित एक पूर्णांक स्टोर करने के लिए। तो इस मामले में चार बाइट्स। और फिर उस null-- के बराबर होती है, तो हम मुद्रित करने के लिए जा रहे हैं null-- बराबर होती है। ओह, आप एक त्रुटि क्योंकि है आप स्मृति से बाहर रहे हैं, है ना? अन्यथा लौटने से एक है, कि सिर्फ अपने कार्यक्रम बताता है कि आप एक त्रुटि मिल गया है। और फिर अगर आप ऐसा करेंगे यह है, कि स्मृति है जो भी मिलता स्टोर करने के लिए जा रहा पूर्णांक स्थान में आप देता है और सूचक के मूल्य के रूप में यह निर्धारित किया है। तो यह वास्तव में करने जा रहा है शारीरिक रूप से इस मूल्य को मिटा और पूर्णांक रिटर्न मिलता है जो कुछ भी डाल दिया। और फिर आप करने जा रहे हैं वे प्रवेश किया जो कुछ भी प्रिंट। दर्शकों: और है कि ढेर में होने जा रहा? ANDI PENG: यही हो रहा है ढेर में किया जाना है। दर्शकों: और तो यह है कि सुलभ हो जाएगा। ANDI PENG: बिल्कुल। अच्छा लगा। अच्छा। दर्शकों: तो हम इस पर पीटीआर मुक्त जब अंतिम चरण में, हम सूचक मुक्त कराने रहे हैं या हम ब्लॉक मुक्त कराने रहे हैं? ANDI PENG: हाँ। इसलिए हम pointer-- मुक्त कराने रहे खैर, स्मृति के ब्लॉक मुक्त। इतना ही तरीका है कि हम का उपयोग भी कर सकते हैं स्मृति सूचक होने से है। आप सूचक नहीं है, तो आप कर रहे हैं यह वह जगह है जहाँ की तरह, ओह, मैं नहीं जानता, है ना? आप इसे मुक्त तो, अगर आप अनिवार्य रूप से कर रहे हैं कि पूरे ब्लॉक को मुक्त कराने के। फिर अपने कंप्यूटर ओह, जानता है, प्रयोग करने योग्य कुछ भी नहीं है, यहाँ है मैं सिर्फ कचरा डाल सकते हैं मूल्यों इसे वापस में फिर से। दर्शकों: पूर्णांकों उस पर मौजूद नहीं है तो? ANDI PENG: पूर्णांकों अस्तित्व है? माफ़ कीजिए। आप अपने सवाल rephrase कर सकते हैं? दर्शकों: आप मुक्त करने के बाद मैं, मतलब सूचक, आपको मिलता है कि पूर्णांक, कि अभी भी मौजूद होगा? ANDI PENG: नहीं, यह नहीं होगा। या कम से कम उस में मौजूद होगा अपना स्मृति के लिए अपने कंप्यूटर करता है इससे पहले इसके साथ जो कुछ भी है, लेकिन वहाँ है आप के लिए कोई रास्ता नहीं है कि पाने के लिए। आप सूचक को मुक्त कर दिया है। यह अब है, जहां आप नहीं जानते। हाँ। मैं यहाँ पर स्थानांतरित करने के लिए जा रहा हूँ। ओफ़्फ़। इसलिए हम वैचारिक का एक बहुत माध्यम से कर रहे स्मृति प्रबंधन की कठिनाइयों और हम बस जा रहे हैं अनिवार्य रूप से खर्च करने के लिए जा 5, 10 मिनट वाक्य रचना बातों पर कि उपयोगी और आप लोगों के लिए उपयोगी हो जाएगा, लेकिन बहुत धारणात्मक वहाँ से बाहर कुछ भी नहीं है। ठीक। इसलिए हम पूरी तरह से यहां गियर बदल रहे हैं। स्मृति प्रबंधन, मुश्किल। सूचक, मुश्किल। हाँ। यह वास्तव में मुश्किल है, वास्तव में है। पूरी तरह से ठीक है। अपने टुकड़ा है यही कारण है कि वास्तव में मुश्किल होने जा रहा। लेकिन तुम जाओ और करते हैं हम कर रहे हैं कि चीजों को क्या करना चाहिए, बनाना यकीन है कि चीजें, अशक्त हैं बातें कर रहे हैं, तो जाँच करने के लिए सुनिश्चित करें अशक्त, मुक्त स्मृति के लिए सुनिश्चित करें, यकीन है कि चीजें नहीं कर रहे हैं बनाने लीक, आप अच्छा हो जाएगा। आप सेट हो जाएगा। ठीक है। इसलिए हम इस में स्थानांतरित करने के लिए जा रहे हैं पुनर्निर्देशन का पूरी तरह से नई अवधारणा। और इसलिए अब से पहले, हम है कि मुख्य रास्ता के साथ बातचीत की गई हमारी कार्यक्रमों के मानक इनपुट के माध्यम से है और मानक आउटपुट। है ना? उपयोगकर्ता इनपुट के रूप में हम बातें और कंप्यूटर हमें वापस करने के लिए टर्मिनल में यह spits। लेकिन दूसरे देखते हैं हमें बातचीत करने के लिए तरीके साथ कंप्यूटर के साथ हमारे सिर्फ मेरे नहीं हैं कि कार्यक्रमों शारीरिक रूप से टाइपिंग बातें मैं के लिए प्रेरित कर रहा हूँ जब में। और हम ऐसा रास्ता है एक से अधिक गाजर के माध्यम से और पाइप प्रतीक। इसलिए हम भी पढ़ सकते हैं और उस का उपयोग कर फाइल करने के लिए लिखें। इसलिए हम यह करते हैं कि जिस तरह से है अधिक से अधिक गाजर की तुलना में, यह सब कर रही है लिख रही है जो कुछ भी अपने फ़ाइल एक अलग फाइल करने के लिए किया है। उदाहरण के लिए, यदि ऐसा है तो मैं हैलो दुनिया को चलाने के लिए चाहता था और मैं करने के लिए उत्पादन करना चाहता था एक और फाइल में बचाया जा और सिर्फ मुझे, मैं करने के लिए बाहर मुद्रित नहीं सिर्फ गाजर की तुलना में अधिक से अधिक कर सकते हैं, output.txt। इसलिए कर रहा है कि सभी लेने है मेरी hello.world कार्यक्रम, उत्पादन जो कुछ भी है, यह है output.txt नामक एक फाइल में बचत। डेविड था कि इतना रास्ता छात्रों के नाम के साथ .csv, यह तुम लोगों को क्या कर सकते हैं कि एक ही है। और क्या विशेष रूप से है उपयोगी यहां अधिक से अधिक कर रहे हैं दो गाजर की तुलना में अधिक से अधिक than-- आप एक उत्पादन करने के लिए संलग्न कर सकते हैं जो संकेत आप जिसका अर्थ है कि फ़ाइल, सिर्फ यह की चोटी पर जोड़ सकते हैं। तुम बस में जोड़ने से रख सकते हैं प्रत्येक अतिरिक्त बात की output.txt कि तुम क्या कर रहे हैं। या, यदि आप अधिक में शुरू हो रही है, तो जटिल प्रोग्राम, दो से अधिक गाजर की तुलना में, कि सिर्फ प्रिंट त्रुटि संदेश बाहर। तो अगर आप एक विशाल का कहना है कि त्रुटि संदेश की राशि और आप पढ़ना चाहते हैं उन्हें और आप सभी के माध्यम से स्क्रॉल करने के लिए नहीं करना चाहते हैं अपने टर्मिनल के माध्यम से, आप वास्तव में सिर्फ कर सकते हैं output.txt से अधिक से अधिक और इसे बचाने के लिए जा रहा है अपनी त्रुटियों के सभी एक फ़ाइल में है कि output.txt बुलाया आप के माध्यम से जाने के लिए और पढ़ सकते हैं। दर्शकों: कहाँ पाठ फ़ाइल सहेजा जाता है? ANDI PENG: यह वही में बचाया है अपने कार्यक्रम है कि निर्देशिका। तो अगर आप अभी वापस जाने के लिए और यह देखने के लिए। और एक ही बात है कि हम इनपुट के लिए क्या कर सकते है हम वास्तव में ले जा सकते हैं कुछ फाइल की सामग्री और हम निवेश कर सकते हैं हमारे कार्यक्रम में कि। तो बजाय कमांड करने के लिए होने से जहां आप शारीरिक रूप से लाइन तर्क चीजों को टाइप करने के लिए हर बार, आप वास्तव में सिर्फ नामक एक फाइल हो सकता है कि input.txt बस में यह सब कहते हैं। और फिर पाइप क्योंकि विशेष रूप से शांत है यह एक कार्यक्रम के उत्पादन में ले सकते हैं और इनपुट के रूप में उपयोग एक अन्य कार्यक्रम के। तो उदाहरण के लिए, अपने लोग 'Vigenere में, कोड की इस पंक्ति है कि वहाँ आप लोग शायद शायद आपको लगता है कि चल रहे हैं वास्तव में यह doing-- क्या था पता नहीं था इस ./generate 1000 पाइप ./42। है ना? इतना सब कर रहा है कि, अगर हम सिर्फ इस कदम से कदम पर एक नज़र रखना, ./generate, कि मैं कर रहा हूँ इसका मतलब मेरे कार्यक्रम उत्पन्न चल रहा है। यही कारण है कि अपने निवेश पर 1,000 में ले जा रहा है। तो मैं बिना सोचे समझे 1,000 पैदा करना चाहते संख्या और मैं पाइप के लिए जा रहा हूँ that-- या मैं that-- उत्पादन का उपयोग करने के लिए जा रहा हूँ मिल बुलाया अपने कार्यक्रम के लिए निवेश के रूप में। और मैं में से 42 खोजने की कोशिश करने के लिए जा रहा हूँ उन 1,000 से उत्पन्न संख्या संख्या। कोड की है कि लाइन बनाता है हर किसी को समझ में? इस तरह से हम बचत कर रहे हैं तो खुद कदम की एक टन। हम उत्पन्न चलाने की जरूरत नहीं है, को बचाने के फ़ाइल और फिर मिल में डाल दिया। हम एक पंक्ति में यह सब करते हैं, बस कर सकते हैं। तो, जो भी outputting है उत्पन्न मिल में इसे सही वापस खटखटाने। हाँ? दर्शकों: और आदेश के संदर्भ में कि that-- लाइन तर्क है, तीन कमांड लाइन तर्क? यह कोई find--, four-- उत्पन्न है 1000, खोजने के लिए और 42 उत्पन्न? या the-- है ANDI PENG: पाइप करता है तो वास्तव में नहीं है एक कमांड लाइन तर्क के रूप में गिनती संकलक या क्योंकि टर्मिनल कि पाइप जानता है, ओह, मैं मैं से पहले विचार करना चाहिए पता है कि कि क्योंकि पाइप मेरी उत्पादन है और मैं के बाद विचार करना चाहिए पाइप कि अपने इनपुट है, क्योंकि। तो यह that-- जानता है ./generate और 1000, उन दो आदेश तो बहस कर रहे हैं सिर्फ पहला कार्यक्रम के लिए। और फिर ./find 42 दो कमान कर रहे हैं दूसरा कार्यक्रम के लिए लाइन तर्क। हाँ। हर कोई इस पर अच्छा है? तो बस जल्दी असली, क्या करना है कोड के इन तीन लाइनों करते हैं? काफी सरल। किसी ने मुझे बता करना चाहते हैं पहली पंक्ति क्या करता है? दर्शकों: [अश्राव्य]। ANDI PENG: just-- के रूप में सोचो एक से अधिक गाजर क्या करता है? दर्शकों: यह कुछ कहते हैं अगली पंक्ति में। ANDI PENG: तो क्या है उस के विपरीत? दर्शकों: यह अगले डालता पहली बात में बात। ANDI PENG: हाँ। इसलिए कर रहा है कि सब आप कर रहे है एक कार्यक्रम चल रहा .hello-- आप हैलो नाम का एक कार्यक्रम चल रहे हैं। आप इसे देने के लिए जा रहे हैं एक इनपुट input.txt बुलाया। है ना? यह वजह से बस के रूप में लगता है शारीरिक रूप से नमस्ते में जा रहा है। और फिर आप को बचाने के लिए जा रहे हैं एक फ़ाइल में उत्पादन output.txt बुलाया। कैसे दूसरी पंक्ति के बारे में? मुझे बताओ कि क्या करना चाहते हैं दूसरी पंक्ति करता है? दर्शकों: [अश्राव्य]। ANDI PENG: क्षमा करें। दोबारा कहना। इलियट। दर्शकों: यह डालता है तो एक मिल में नंबरों की सूची। ANDI PENG: हाँ। इतने में, याद है, मिल आदेश आप पाते हैं चलाने के लिए आप खोज रहे हैं, जहां पता करने की जरूरत है। और यह कर रहा है, ताकि सभी कि यहाँ यह है कि आप दे रही है वह यह है कि एक पूर्व के सेट आबंटित संख्याओं, तो जा रहा है मिल 42 की संख्या के लिए उन खोज करने के लिए। और फिर 15। याद रखें, आप लोगों को दौड़ा इस जब आप अपने कोड का परीक्षण किया। अब आप यह कर रहा था क्या समझते हैं? दर्शकों: यह रख रहा है निर्देश के सेट एक तीन से के माध्यम से [सुनाई] को तीन the-- खेल को जीतने के लिए मिलता है। ANDI PENG: हाँ। दर्शकों: यह उन आदानों कार्यक्रम में निर्देश। ANDI PENG: बहुत सुंदर। तो टिल्ड CS50। / Pset3 / 3x3, यह सब कर रहा था कि हम एक पाठ बनाया गया था कि था कि फ़ाइल सभी आप लोगों के लिए तैयार खिताब। अपने खेल को खेलने के लिए और हां, तो आप just-- हम सिर्फ अपने कार्यक्रम में डाल दिया है कि। इसलिए हम बनाया था इस बोर्ड और फिर हम कर रहे हैं अपने कार्यक्रम में कहा कि बोर्ड डाल कि यह भाग गया और तीन में से एक टाइल बनाया तीन से। यही कारण है कि यह कर रहा था कि सभी को है। और तो वास्तव में जादू नहीं थी पर्दे के पीछे चल रहा है तुम लोगों को नहीं था कि हम प्रोग्राम किया कि कार्यक्रम। लेकिन अब आप लोग समझ क्यों हम तो यह सब अच्छा है ऐसा ही किया। ठीक है। पुनर्निर्देशन एक बहुत ही है तो, जबकि उपयोगी, सी एक सामान्य तंत्र है पढ़ने और लिखने के लिए अपनी खुद की फ़ाइलें। कुछ भी नहीं धारणात्मक मैं कर रहा हूँ तो यहाँ मुश्किल बस के माध्यम से जाना जा रहा है वास्तव में, बहुत जल्दी। यह सब कुछ याद है और यकीन है कि तुम लोगों को बनाने वाक्य रचना से इसे सही ढंग से उपयोग कर रहे हैं। हम ऐसा होता है कि जिस तरह से है फाइल करने के लिए एक संदर्भ बनाने, हम तो हम फ़ाइल को खोलने, और होता सभी पढ़ने और लिखने के लिए करना होगा और फिर फ़ाइल को बंद करें। जब बात है कि तुम लोग मन में रखने के लिए है चाहता हूँ क्योंकि, जबकि यह कर कि हम, बंद करने और फ़ाइलों को खोल रहे हैं उन आदेशों की सभी शामिल हैं मानक standard-- में आई / ओ पुस्तकालय। तो आप कर रहे हैं, जब भी सुनिश्चित कर लें आप included-- है कि यह कर मानक आई / ओ डॉट ज included-- #। जल्दी तो असली। एक कदम, आप बनाना चाहते हैं उस फ़ाइल के लिए एक संदर्भ। और हम कर संकेत दिया है कि अब, आप लोग मुझे बता सकते हैं कि क्या कोड की है कि लाइन कर रहा है। है ना? यह एक पैदा कर रही है कर रहा है कि सभी, सूचक प्रकार फ़ाइल का नाम दिया है। आप यह जा रहा है कि क्योंकि मुझे पता है एक फ़ाइल को इंगित करें और आप कर रहे हैं करने के लिए फ़ाइल को खोलने के लिए जा रहा है। तो फिर तुम च open-- सभी कर रहे हैं यह फाइल को खोलने करता है। इस फ़ाइल का नाम है। और आप कर सकते हैं तीन बातें की। आप पढ़ने, लिखने या संलग्न कर सकते हैं। अधिकांश आम तौर पर, आप लोग पढ़ने या लिखने की जाएगी आप या तो होना करने के लिए जा रहे हैं, क्योंकि एक फ़ाइल इनपुट या एक outputting। इसलिए बहुत ज्यादा अनुसंधान और डब्ल्यू दो हैं चीजों को आप सबसे अधिक उपयोग किया जा रहे हैं। तो इस मामले में, मैंने किया है सब है फ़ाइल नामक एक फाइल करने के लिए एक सूचक पैदा करते हैं। मैं इसे खोल रहा हूँ और मुझे लगता है मैं कर रहा हूँ reading-- हूँ file.txt नामक इस फ़ाइल खोलने और मैं इसे पढ़ रहा हूँ। यही कारण है कि मैं इस बिंदु पर कर रहा हूँ सब है। और फिर इन बस में कार्य कर रहे हैं आप अलग अलग चीजें हैं जो पढ़ सकता है या अलग अलग बातें लिखने या अलग-अलग स्थानों को छोड़ जहां आप देखना चाहता हूँ। इन सब के सब ऑनलाइन कर रहे हैं। इन सब के सब आप सिर्फ गूगल कर सकते हैं। कोई ज़रूरत नहीं है उन्हें याद करने के लिए। वे सिर्फ वहाँ रहे हैं, अपने उपयोग के लिए डिस्पोजेबल यदि आप करना चाहते हैं उन का उपयोग करने में सक्षम हो। तो मैं सिर्फ पढ़ने के लिए चाहते थे कि अगर एक समय में एक चरित्र में, मैं फ़ाइल fgetc करना होगा। मैं चाहता था या फिर अगर की एक पंक्ति में पढ़ने के लिए एक समय में पाठ, मैं fgets करना होगा। और इस प्रकार आगे भी। इन सब के सब सिर्फ अलग करना बातें तुम लोगों का प्रयोग कर सकते हैं। और फिर अंत में, के बाद मैं कर रहा हूँ पढ़ने या लिखने से किया है, मैं सिर्फ इतना है कि फ़ाइल fclose करने के लिए जा रहा हूँ। और यह एक है, याद उन लोगों के लिए, कृपया याद वरना आपकी फ़ाइल ऐसा करते हैं या काम करने के लिए नहीं जा रहा है। हमेशा से पहले एक फ़ाइल को खोलने के पढ़ने या पढ़ने, आप हमेशा के लिए है आप इसे खोलते हैं तो उसे बंद करें। स्मृति के साथ एक ही बात है, है ना? तुम हमेशा लेने के लिए है स्मृति और यह मुफ़्त। यहाँ आप हमेशा एक खोलने के लिए है इसे पढ़ने के लिए प्रयास करने से पहले दाखिल और आप हमेशा के लिए है आप इसे खोलने के बाद इसे बंद कर दें। तो यह ऑनलाइन भी है। मैं करने के लिए तुम लोगों को चुनौती देने के लिए जा रहा हूँ एक तरह से है कि प्रिंट एक प्रोग्राम लिखने एक फाइल करने के hello.world। यह वास्तव में आसान है। यह अनिवार्य रूप से सिर्फ शामिल कोड की कुछ लाइनों कि सिर्फ पहले से लिखा गया था। आप उन्हें डाल करने के लिए जा रहे हैं एक साथ और कहा कि लिखें। तो कुछ महत्वपूर्ण बातों को ध्यान में रखने के लिए जब तुम लोग इस का उपयोग करने की कोशिश कर रहे हैं। यह सब बहुत उपयोगी है अपने pset इस सप्ताह के लिए, fopen एक फ़ाइल सूचक है कि बनाता है। यह वास्तव में भौतिक फ़ाइल नहीं है। सभी इसे करने के लिए इशारा कर रहा है आप खोलना चाहते हैं फ़ाइल। और आप अनिवार्य कर रहे हैं, जब भी आप अन्य कार्यों के किसी भी उपयोग कर रहे हैं fread या fwrite की तरह या fgetc या fgets है, तुम सिर्फ इस के आसपास गुजर रहे हैं कि उन कार्यों के सभी के लिए सूचक। तो अगर आप वास्तव में है कि नहीं ले रहे हैं फ़ाइल और अपने कार्यों के लिए उपयोग कर, तुम सिर्फ सूचक ले जा रहे हैं और उन कार्यों के लिए इसे लगाने आप का उपयोग कर सकते हैं। और तुम पास करने के लिए भूल जाते हैं आपकी फ़ाइल आप इसे उपयोग करने के बाद, अपने कार्यक्रम में स्मृति का रिसाव हो रहा है। मूलतः, यह सब साधन बुरा होगा कि है और अपने कार्यक्रम होगा सही ढंग से कार्य नहीं। और तो pset पर शुरुआत में, मुझे लगता है कि वह explained-- जहां एक छोटी वहाँ नैट वेलग्रिंड क्या था explained--। वेलग्रिंड है सभी के लिए आप के लिए एक रास्ता है आप स्मृति लीक नहीं कर रहे हैं सुनिश्चित करें। तो तुम लोग बनाना चाहते सुनिश्चित करें कि आप कम है कि घड़ी कि यह बताते हैं क्योंकि वास्तव में अच्छी तरह से क्या होता है। ठीक। इसलिए मैं वास्तव में उस के माध्यम से चला गया वास्तव में जल्दी से मैं सच में, क्योंकि के बारे में बात करने के लिए प्राप्त करना चाहते हैं pset तुम लोगों को छोड़ने से पहले। किसी को भी धारणात्मक सवाल है? ज्यादातर यह सब सिर्फ वाक्य रचना है कि आप फ़ाइलों को पढ़ने या लिखने के लिए उपयोग कर सकते हैं। अंत में, सभी की पसंदीदा। अब हम pset के बारे में बात करने के लिए जा रहे हैं। तो, हाथों के शो, कितने तुम लोग इस सप्ताह कल्पना पढ़ा है? ओह, यह आधा है। यह अच्छी बात है। तो यह वास्तव में वास्तव में एक है इस अर्थ में वास्तव में मजा pset आप एक तरह लग रहा है कि जासूसी आप कर रहे हैं, क्योंकि इन सब वास्तव में अच्छा बातें कर रही है आप क्या कर सकता है कि पता नहीं था कि लेकिन अब यह वास्तव में अच्छा है आप उन्हें क्या कर सकते हैं। और यह वास्तव में एक बहुत कुछ है तुम लोगों को लगता है की तुलना में आसान। की तो बुनियादी हिस्सों इस कार्यक्रम के लिए आप कर रहे हैं स्रोत कोड डाउनलोड करने के लिए जा रहे हैं या वितरण कोड हमारे द्वारा लिखित। और अगर आप एक फ़ोल्डर लिए जा रहे हैं कहा जाता बीएमपी और अन्य फ़ोल्डर जेपीजी बुलाया। अपने बीएमपी के भीतर, आप कर रहे हैं तीन कार्यक्रमों के लिए जा। उनमें से एक पहले से ही आप के लिए लिखा है। तो copy.c एक कार्यक्रम है हम पहले से ही लिखा है आप के लिए आप डाउनलोड करने के लिए जा रहे हैं। करता है कि सभी एक तस्वीर इनपुट के रूप में ले रहा है और आउटपुट के रूप में इसके बारे में एक प्रतिलिपि बनाता है। यही सब है कि फाइल कर रही है। लेकिन आप के लिए क्या करना चाहते हैं whodunit-- तो आप में से कितने लोग पांचवीं कक्षा या maybe-- में याद आप शायद तीसरी कक्षा younger-- रहे तुम लोगों को गुप्त संदेश था और जब आप इस पर एक कागज का टुकड़ा डाल दिया था संदेश को डिकोड करने के लिए? हाँ? तो यह है कि हम क्या कर रहे है एक कंप्यूटर के लिए इस बार छोड़कर। तो हम आपको इस सुंदर छवि दिया है। की तरह नहीं लगती नीचे कुछ भी लेकिन यह आपकी मदद करने के लिए जा रहा है कि एक संकेत है सवाल का जवाब देने के साथ हम आप से पूछना। अनिवार्य रूप से आप क्या चाहते हैं फ़ाइल है कि इनपुट है करने के लिए, आसपास कुछ बातें tweak, शायद रंग को समायोजित, , बातें बदलाव तो यह है कि जो कुछ भी संदेश के माध्यम से आ सकता है। तो वहाँ के अंदर छिपा कर रहे हैं पिक्सल और जानकारी कि आप सही ढंग से अपने कोड लिखने यदि समझाना और आपको बताने जा रहा है इस सुराग है क्या। और तो कुछ सहायक संकेत के रूप में कैसे करने के लिए आप इस बारे में आ जाना चाहते हैं। तुम सच में परिचित करना चाहते हैं फ़ाइल के साथ मैं खुद / हे हम से पढ़ रहे हैं, क्योंकि फ़ाइलें और फाइल करने के लिए लेखन। है ना? और इसलिए हम जब भी ऐसा कि, कि शामिल मैं / हे फ़ाइल। आप यहां जा रहे हैं खुद को परिचित करना है साथ, आप कैसे चित्रों फाइलों को खुला है? कैसे आप चित्र के रूप में फाइल करने के लिए लिख सकता हूँ? कैसे आप उन चीजों के सभी करते हैं? यही कारण है कि वास्तव में उपयोगी होने जा रहा है। दूसरे, आप कैसे हैं बदलने के लिए सक्षम होने के लिए जा रहा इस तस्वीर स्पष्ट है कि रंग? यह शायद शामिल करने के लिए जा रहा है अपने पिक्सल या अपने आरजीबी मूल्यों का समायोजन कहीं अनिवार्य रूप से, वहाँ में। कोई सही तरीका का नहीं है आप के रूप में के रूप में लंबे समय से इस सुलझाने जब तक आप यह कर सकते हैं प्रकार के रूप में can-- इसे बनाने के लिए उन पिक्सल समायोजित आप के बारे में परवाह है कि कुछ की तरह लग रही है। यही कारण है कि हम के रूप में अच्छी तरह से देखभाल के बारे में सब है। तो यह करने के लिए कई तरीके है। बस जब तक यह आसपास के साथ खेलने आप काम करता है कुछ मिलता है। और तुम सच में होगा कोड के लिए आश्चर्य है कि कैसे कुछ पंक्तियां आप वास्तव में यह करने की जरूरत है। मैं तीन तरह बात कर रहा हूँ कोड कुल की तर्ज आप लिखने की जरूरत है कि ऐसा करने के लिए। आप अपने आप को मिल तो अगर 40 लेखन, कोड की 30 लाइनों, आप शायद यह गलत कर रहे हैं। तुम्हें क्या करना है सभी तरह की है रंगों के साथ खेलने के आसपास और कहा कि बाहर कैसे काम करता है। तो फिर हम एक बिट में सिर एक समस्या के कठिन करने के लिए। यहाँ हम आकार है जहां हम आप पूछ रहे हैं है-- हम इनपुट के रूप में आप दे रहे हैं एक तस्वीर और अपने आकार बदलने कुछ में इस छवि बड़ा हो या छोटा कुछ हम आपको दे आयामों पर निर्भर करता है। तो व्याख्यान में याद डेविड जल्दी है कि कैसे जानकारी पर नजर अपने कंप्यूटर से पता चला है यह फाइल का एक प्रकार है मतलब है। तो एक वर्ड फ़ाइल विशेष है उस के सामने पात्रों यह एक वर्ड फ़ाइल है जो आपके कंप्यूटर बताओ। एक जेपीईजी साथ वही बात। इस मामले में हम जा रहे हैं आप एक JPEG फ़ाइल देने के लिए। हम सभी जानते है कि है जेपीईजी फ़ाइल सही, एक तस्वीर है? लेकिन कंप्यूटर को दूसरों से अलग बहुत विशिष्ट मायनों में यह। की शुरुआत में तो किसी भी जेपीईजी फ़ाइल, आप कर रहे हैं बिटमैप क्या कहा जाता है के लिए जा जानकारी शीर्षक और बिटमैप फ़ाइल शीर्षक। सभी लोग कर रहे हैं डेटा के विभिन्न टुकड़ों कि, अरे, अपने कंप्यूटर बताओ सुनो, एक JPEGs के लिए आ रहा है और इन आयामों हैं या कि जेपीईजी की विशेषताओं। तो तुम लोग वास्तव में जानना चाहते हैं क्या जानकारी के अंदर संग्रहित है उन हेडर की और उनमें से आकार क्या है। आप चला रहे हैं क्योंकि जब अपने कार्यक्रम के माध्यम से, यदि आप चाहते करने के लिए जा रहे हैं उस राशि पर छोड़ें। है ना? आप परवाह नहीं है क्योंकि हैडर को संशोधित करने के बारे में, आप के बाद क्या संशोधित करने के बारे में परवाह है। है ना? तो यकीन है कि तुम लोगों को पता करना कैसे बड़े उन बातें कर रहे हैं। दूसरे, इससे पहले कि आप शुरू अपनी छवि को आकार बदलने के लिए कोशिश कर रहा है, आप शायद चाहते करने जा रहे हैं मूल के आयामों को बचा लो। है ना? मैं इस तस्वीर आपको बता क्योंकि अगर 100 पिक्सल द्वारा 100 पिक्सल है और मैं आप बनाना चाहते हैं यह चार गुना बड़ा, क्या आप जानते हैं कि चार से उन आयामों गुणा। तो फिर तुम एक आउटपुट फाइल चाहते हैं उदाहरण के लिए 400 पिक्सल द्वारा 400। तो यह करने के लिए आप लोगों के लिए वास्तव में उपयोगी है मूल के आयामों को बचा लो। और फिर बाद में, के बाद आप आकार कर रहे हैं, आप के साथ नए हेडर लिख सकते हैं आकार बदलने के बाद उन नए आयाम। और वैसे भी है कि आप शारीरिक रूप से बड़े पिक्सल में बना सकते हैं आप लिख सकते हैं नई RGB--, आरजीबी याद सभी हरे, लाल है के लिए खड़ा है कि, और एक बाहर फाइल करने के लिए blue-- पिक्सेल। और आप चाहते हैं करने के लिए जा रहे हैं क्या अलग-अलग मात्रा में है हम गद्दी कहते हैं। सभी padding है रिक्त स्थान हैं पहले और तस्वीरों के बाद कि अनिवार्य कि your-- बताओ कैसे बड़े यह अपनी तस्वीर बता चाहिए ले जा रही हो। इस का एक बहुत के लिए बहुत सार है आप pset कल्पना नहीं पढ़ी है, तो लेकिन यह होने जा रहा है जब के लिए बहुत उपयोगी आप वास्तव में इसे माध्यम से पढ़ रहे हैं। ओह, हाँ, यह समझ में आता है, जैसे आप कर रहे हैं। मुझे ऐसा क्यों करना पडेगा? समझ में आता है। अंत में, यह शायद में से एक है सबसे ज्यादा निराशा कार्यक्रमों कभी सिर्फ तुम नहीं कर सकते क्योंकि यह काम कर रहा है या नहीं, तो बताओ। ठीक सभी इस कार्यक्रम है, कर रही है कि, ठीक से चलाने के लिए, यह अचानक करने में सक्षम होना चाहिए 50 छवियों को ठीक है कि हमारे हार्ड ड्राइव पर खो गए थे। इस कार्यक्रम के साथ और इसलिए समस्या आप वास्तव में यह परीक्षण नहीं किया जा सकता है या तो आप बरामद क्योंकि उन्हें या तुम नहीं किया। और तो आप की तरह बस इसके साथ चारों ओर खेलने के लिए है, और अपने कार्यक्रम है, तो ठीक से, आप करेंगे काम कर अचानक में देखना है कि आपने अपनी निर्देशिका की एक विशाल राशि मिल गया अब देखते हैं कि चित्रों। तो मैं कैसे दृष्टिकोण होगा इस समस्या को हम कर रहे हैं, है क्या तुम्हें देने के लिए जा रहा एक card.raw फ़ाइल बुलाया। मूलतः, वह है, सिर्फ एक भ्रष्ट फ़ाइल सभी तस्वीरें कि संग्रहीत साथ आप से उबरने की जरूरत के लिए जा रहे हैं। तो आप शायद चाहते करने के लिए जा रहे हैं इनपुट अपने card.raw, या खोलने के लिए, अपने card.raw फ़ाइल और आप कर रहे हैं हेरफेर करने के लिए चाहते हो जा यह JPEGs स्टोर करने में सक्षम होने के लिए। इसलिए मुझे लगता है पर नज़र रखने और भंडारण के द्वारा शुरू होगा प्रत्येक व्यक्ति जेपीईजी आप इसे खोजने के रूप में। आप व्यक्तिगत रूप से सभी के लिए नहीं जा रहे हैं अचानक बस के सभी 50 JPEGs पैदा करते हैं। आप रखना चाहते हैं करने के लिए जा रहे हैं आप खोलने जा रहे हैं कि कितने का ट्रैक। और फिर आप करना चाहते हैं आप कर रहे हैं, जब यह सुनिश्चित कर लें एक buffer-- के लिए लिख आप लोग मैं के बारे में बात कर रहा हूँ पता चल जाएगा आप spec-- पढ़ एक बार आप करना चाहते हैं आप एक अहस्ताक्षरित उपयोग कर रहे हैं कि यह सुनिश्चित कर लें चार बफर। और फिर आप से पूछना चाहता हूँ खुद का सवाल है, एक में कितने बाइट्स हैं CF-- एक कार्ड फ़ाइल में हैं? यही कारण है कि आप करने जा रहे हैं कि कितने है अपने बफर में पढ़ना चाहते हैं। आपको यह सुनिश्चित करना चाहते करने के लिए जा रहे हैं दो संरेखित तो आप क्योंकि यादृच्छिक स्मृति बाहर लीक नहीं होगा। आप वास्तव में कितने जानते बाइट्स आप की जरूरत है और कितने आप उन्हें करना चाहते हैं कि बाइट्स। और फिर अंत में, आप करना चाहते हैं कहा जाता है एक समारोह का उपयोग sprint-- प्रिंट कस्टम फ़ाइल उत्पन्न करने के लिए f-- आप को लगता है कि हर नए जेपीईजी के लिए नाम। तुम बनाने के रूप में तो और आपके कार्ड में JPEGs मिल जाए, यदि आप चाहते करने के लिए जा रहे हैं उन्हें दुकान और उनके नाम। है ना? और तो आप करने जा रहे हैं उस समारोह का उपयोग करना चाहते हैं नाम बनाने के लिए है कि अपने JPEGs के सभी स्टोर कर सकते हैं। और अंत में, बंद करने के लिए मत भूलना प्रत्येक जेपीईजी आप कर रहे हैं के बाद। आप क्या कर रहे हैं क्योंकि क्या करने जा रहे हैं आप है शायद लिए किया जा रहा एक पाश किसी प्रकार का है कि अपने JPEGs के सभी के माध्यम से दोहराता। आप एक जेपीईजी लिखने जा रहे हैं आप इसे खोजने के रूप में है और यह नाम बदलें। लेकिन आप कर रहे हैं के बाद हर एक जेपीईजी के साथ आप शुरू कर सकते हैं तो आप इसे बंद करने की जरूरत है से अधिक है और अगले चित्र पर चलते हैं। और तो कुछ है कि हम क्या करना पसंद है कि सच में मज़ा, यह वह जगह है, क्योंकि इस तरह एक अजीब समस्या सेट लेकिन यह भी एक अजीब तरह से संतोषजनक समस्या सेट है, सभी चित्रों का है कि हम आप ठीक ढंग से ठीक हो, तो आप के लिए है, सभी चित्रों की तस्वीरें हैं अपने अद्भुत शिक्षण स्टाफ, दोनों हार्वर्ड की, पर here-- और यहां येल में। और आप के लिए होता है इन सभी चित्रों को ठीक और कर्मचारियों की पहचान उन कार्ड में सदस्यों, और हमें तो साथ selfies लेने आप परिसर के आसपास हमें लगता है हर तस्वीर आप हमें करने के लिए प्रस्तुत करने के लिए, हम करेंगे आप ड्रॉपबॉक्स अंतरिक्ष के एक गीगाबाइट दे। तो चलो यहाँ गणित करते हैं। 50 चित्रों और अगर वहाँ 50 शिक्षण स्टाफ के सदस्यों, आप सभी 50 के खोजने के लिए होता है, तो हमें, कि, ड्रॉपबॉक्स के 50 गीगाबाइट है असल में, हम तुम लोगों को देने होंगे। इसलिए कुछ अतिरिक्त जोड़ा प्रोत्साहन तुम लोगों को नहीं था, तो बस खो छवियों उबरने के बारे में परवाह है। कुछ जोड़ा प्रोत्साहन भी है। यह एक मजेदार समस्या सेट है। यह सचमुच में है। यह एक तरह से निराशा होती है, लेकिन तब यह आप का एहसास जब वास्तव में मजेदार हो जाता है, वाह, यह अब मैं काम कर रहा है और है इन चित्रों के सभी है कि मैं सिर्फ खुद के द्वारा बनाई गई है। Pset पर कोई सवाल? किसी के लिए जो पहले से ही है शुरू कर दिया, यदि आप प्रश्न हैं, मैं एक दो मिनट के बाद के लिए यहाँ हो जाएगा खंड तुम मुझसे बात करना चाहते हैं। अच्छी तरह से किया दोस्तों। मैं माफी चाहता हूँ, मैं जानकारी आप लोगों पर फेंक दिया। सूचक वास्तव में, वास्तव में कर रहे हैं चुनौतीपूर्ण और निराशा होती। और मुझे लगता है कि वास्तव में खुश हूँ आप लोग मेरे साथ रहे। हम गहराई में अधिक बात करेंगे अगले सप्ताह के बारे में हम हैश तालिकाओं शुरू कर रही है के रूप में और उन्हें शामिल करना है कि अधिक कार्य करता है। हाँ। किसी को भी किसी भी है तो सवाल है, मैं चारों ओर हो जाएगा। आ रहा है और अधिक लेने के लिए धन्यवाद कैंडी अधिक कैंडी है क्योंकि वहाँ। कूल।