[थीम संगीत] अध्यक्ष 1: हाय, सब लोग. अनुभाग के लिए वापस स्वागत है. , मैं हूँ यही वजह है कि लवली दिन out-- सुनिश्चित करें, यहां केवल चार आप की कर रहे हैं और नहीं हमारे सामान्य पैक. मैं इस सप्ताह के अंत बीमार कर दिया गया है. इसलिए मैं आप लोगों के लिए स्टारबर्स्ट नहीं है. और मैं खाँसी शुरू हो सकता है बहुत इस दौरान. तो बस मेरे साथ सहन. मैं वास्तव में प्रयास करने के लिए जा रहा हूँ और, पहले इस के माध्यम से प्राप्त हालांकि, इससे पहले कि मैं एक खाँसी का दौरा किया है. लेकिन अभी मुझे एक पर आसान हो कि bit-- थोड़ा मैं पूछना सब है. तो today-- के लिए हमारे एजेंडा सिर्फ एक reminder-- अपने प्रश्नोत्तरी अगले सप्ताह है. मैं यह तो आप यह पिछले सप्ताह कहा था तुम गार्ड से पकड़ नहीं होगा. तो मैं तुम्हें फिर से याद दिलाता हूँ. अगले हफ्ते की अपनी प्रश्नोत्तरी. कि अंत करने के लिए अगले हफ्ते खंड बहुत अधिक हो जाएगा of-- मैं कोशिश करते हैं और कुछ समीक्षा में काम करेंगे. तुम लोग कर सकते थे तो अगर मुझे भेज कर मेरी मदद आप आराम कर रहे हैं कि चीजें , आप के बारे में चिंतित हैं कि, साथ आप के लिए करना चाहते हैं कि विषयों मुझे लगता है कि बहुत अच्छा होगा, कवर करने के लिए. तो मैं कोशिश करते हैं और उन्हें काम कर सकते हैं हमारे अनुभाग अगले सप्ताह में या आप अतिरिक्त सामग्री या प्रस्तुत करने का भेजें आप कहीं और नहीं मिल सकता है. हाँ! अधिक लोग आ रहे हैं! मैं मैं बुरी तरह पिछले ऐसा क्यों किया, सोचा सप्ताह, कोई भी वापस आना चाहती है कि? मुझे डर लग रहा है. अन्य तीन चीजें इतनी हम पर जाने के लिए जा रहे हैं कि हैं पुनर्निर्देशन, फ़ाइल मैं / हे, और फिर संकेत और गतिशील स्मृति. मैं आप सभी के बारे में सुपर उत्साहित कर रहे हैं यकीन pointers-- हर किसी का पसंदीदा विषय है, समझने के लिए इतना आसान. मैं तुम लोगों को सब ठीक है, मिल गया है कि यकीन है? तो सबसे पहली बात, redirection-- यह मूल रूप से सिर्फ एक रास्ता है कैसे आप इनपुट को नियंत्रित करने के लिए अपने कार्यक्रम में बातें, कैसे अपने कार्यक्रम से तुम उत्पादन बातें. मुख्य तरीके कि तुम लोग इसके साथ बातचीत के दौरान किया गया है सिर्फ मानक के माध्यम से बाहर है यहाँ अपने प्रिंट स्क्रीन के साथ. लेकिन वहाँ तरीके हैं हम यहाँ देख pipe-- हमारे words-- तरह से एक है पाइप कि जानकारी की या एक फ़ाइल से एक फाइल में है कि डेटा. यह सिर्फ अलग अलग तरीकों से है अपने कार्यक्रम में बातें हो रही और अपने कार्यक्रम से बाहर है, बजाय बस इस स्क्रीन को उन्हें मुद्रण या बातें inputting कमांड लाइन से. तो सबसे पहले एक छोटी सी है कैरेट से अधिक. यह सिर्फ उत्पादन प्रिंट output-- तो बजाय अपनी स्क्रीन की एक फाइल करने के लिए. आप मुद्रित कि कुछ था तो अगर "नमस्ते, दुनिया!" स्क्रीन करने के लिए, आप के बजाय इसे डाल , output.text कि करने के लिए output.text नामक इस फ़ाइल बनाता है. जब आप इसे खोलने और, यह हूँ "नमस्ते, दुनिया!" कहते हैं वहाँ में. इस सुपर उपयोगी हो सकता है आप त्रुटियों की एक टन है अगर वास्तव में, हम इस एक में देखते हैं. आप दो कैरट करते हैं, यह हूँ त्रुटि संदेश मुद्रित. आप के साथ एक समस्या हो रही है तो संकलन, यह त्रुटियों की एक बहुत कुछ है और आप कोशिश में फंस गया हो रही है अपने आदेश पंक्ति में स्क्रॉल करने के लिए उन सभी के माध्यम से, आप कर सकते हैं सिर्फ एक फाइल करने के लिए उन्हें प्रिंट, इतना है कि उस फ़ाइल को खोलने आप उन के माध्यम से आसान स्क्रॉल कर सकते हैं. मैं वास्तव में एक है कि इस्तेमाल किया बहुत जब मैं डिबगिंग गया था मशीन सीखने के लिए मेरे 181 psets. तो यह बाद में सुपर उपयोगी हो सकता है. आप एक प्रोग्राम है, तो यह भी उपयोगी है हो सकता है कि एक पुस्तकालय पैदा कर रहा है या कुछ सेट सृजन तार का, और आप देखना है कि सक्षम होने की जरूरत यह उन्हें ठीक से पैदा कर रहा है. यह तरीका है कि है. तो तुम, एक फाइल करने के लिए आप उन्हें प्रिंट अगर अधिक उन्हें आसानी से जांच कर सकते हैं, है ना? स्क्रॉल करने के लिए कोशिश कर रहा बनाम अपने कमांड लाइन के माध्यम से. और फिर एक बात नोट करने के लिए कि बस अधिक से अधिक के साथ है कैरट से, आप लिख रहे हैं पहले से ही exists-- कि एक फाइल करने के लिए इसलिए हम इस पहले भाग गया जैसे अगर समय, हम, output.text करने के लिए रखा और फिर हम एक दूसरे कार्यक्रम था कार्यक्रम दो के रूप में यह मुद्रित कि और, output.text करने की तुलना में एक अधिक से अधिक किया यह तो that-- ऊपर लिख देगा में कभी था क्या अधिलेखित उस फ़ाइल के साथ शुरू करने के लिए. आप संलग्न करना चाहते हैं तो एक फाइल करने के लिए, हम यहाँ देखते हैं, तुम सिर्फ लक्षण दो से अधिक नहीं है. और यह करने के लिए संलग्न करेंगे. यह इसके ऊपर लिखना नहीं होगा. आप कई चलाने की जरूरत है तो अगर कार्यक्रमों तरह से रखने के लिए और उन सभी को क्या कर रहे हैं का ट्रैक एक फ़ाइल में आप की ओर लौटने, कि यह करने के लिए एक रास्ता है. आप परवाह नहीं करते, तो आपकी फ़ाइल में क्या है और यह ओवरराइट करने के लिए अनुमति दी है आप बस से एक भी अधिक से अधिक उपयोग कर सकते हैं. कि हर किसी को मतलब? दर्शक: जैसा डॉट अधिक नमस्कार स्लेश उत्पादन डॉट पाठ से, जैसे दो बार, यह बस केवल उत्पादन पर दिखाता हूँ डॉट पाठ एक दूसरे time-- अध्यक्ष 1: ठीक है. तो यह अभी पूरी तरह से मूल रूप से होगा साथ शुरू करने के लिए वहां गया था क्या अधिलेखित. यहाँ, इस फाइल तो पहले से ही output.text आप फोन मूल रूप से जो कुछ मौजूद है, कि फिर से एक भी अधिक से अधिक के साथ आप अभी इसके बारे में सोच सकते हैं की तुलना जैसे ही यह फ़ाइल बदल दिया. आप एक पद बचत कर रहे हैं जैसे जब आप के रूप में बचा है दस्तावेज़ और, और आप एक ही नाम रखना, और यह पूरी तरह से it-- लिख देगा इस बात की ही तरह है. किसी को भी इस पर कोई प्रश्न हैं सिर्फ एक फाइल करने के लिए outputting? बहुत बढ़िया. तो जाहिर है, आप रिवर्स अगर दिशा तीर, यह निवेश कर सकते हैं. तो तुम लोगों को था जब सीज़र या Visioneer की तरह और आप इनपुट कुछ करने के लिए था, आप एक कमांड लाइन तर्क था यह कि वास्तव में इनपुट. यह ऐसा करने के लिए एक और तरीका है. तो बजाय इंतजार कर के एक कमांड प्रॉम्प्ट के लिए, आप के लिए कहा है जब की तरह अपने सीज़र या Visioneer में संदेश, आप एक पाठ फ़ाइल था कि, अपने संदेश था आप सिर्फ इतना है कि में टाइप कर सकते हैं. इस डॉट की तरह थे तो अगर सीज़र स्लेश 3 तीर इनपुट पाठ, की तुलना में कम है, जो अपने संदेश यह है कि, बस ठीक चला जाएगा. जब आपके सीजर कार्यक्रम वास्तव में उपयोगकर्ता से इनपुट के लिए कहा, यह पहले से ही है क्योंकि यह होगा आप इस फ़ाइल में टाइप किया है. वह सिर्फ एक और तरीका है. Output-- की बस एक रिवर्स अपने डेटा के लिए सिर्फ इनपुट. और फिर पिछले एक पाइप है. तो यह एक बहुत अच्छा. यह करने के लिए आपको अनुमति देता है एक के उत्पादन में ले कार्यक्रम और रूप में रख दिया एक अन्य कार्यक्रम के लिए इनपुट. मैं आप में से अगर किसी को पता नहीं है समझने के साथ खेला कि CS50 हो सकता है यह होगा तुम्हें दे दिया, लेकिन आप कुछ नमूना लेने की अनुमति , फ़ाइल आपके एन्क्रिप्शन में टाइप करें, और फिर वहाँ से टाइप अपने डिक्रिप्शन में कि बनाने के लिए यकीन है कि यह एक ही निकला. तो यह एक तरह से तीन तरह पाश की तरह है. इसके लिए जाओ. दर्शक: एक कार्यक्रम हैं एकाधिक आदानों है जो इनपुट यह बताने के लिए एक रास्ता है के लिए पाठ फ़ाइल या उत्पादन का उपयोग करने के लिए? अध्यक्ष 1: यह कई जानकारी है. यह बात जब अपने input-- फाइल जो कुछ भी इनपुट के लिए पहली बार है कि पूछ रही है, यह बात है यह जा रहा है, मुझे लगता है, कल्पना करने के लिए पूरी फ़ाइल में पाइप के लिए जा रहा. आप कई जानकारी है, तो आप कर रहे हैं तो एकाधिक फ़ाइलों में पाइपिंग होने जा रहा. तो अगर आप संदेशों के लिए पूछ रहे हैं अपने कोड में तीन बार, तुम डाल करने जा रहे हैं तीन अलग अलग फ़ाइलों में. और यह पागल हो जाता है. और अगर तुम नहीं करना चाहिए अभी उस के बारे में चिंता है. लेकिन उस विचार है. तो हाँ, पाइप से एक की सिर्फ उत्पादन है कार्यक्रम अन्य में इनपुट का उपयोग करता है. हर कोई वहाँ अच्छा? कूल. ठीक. आप शायद नहीं होगा इसके साथ बहुत अधिक करने की. लेकिन आप को समझना चाहिए तरीके आप इस का उपयोग कर सकते हैं. और कुछ मामलों रहे हैं कि आप इसका इस्तेमाल करना चाहते हो सकता है. इसलिए मैं / O-- मैं आप क्या कर रहे हैं पता फाइल saying-- हम से पढ़ने के लिए इस्तेमाल कर रहे हैं और वहाँ हमारे स्क्रीन के लिए लेखन, जिसमें मानक और बाहर मानक है. और कहा कि तुम लोग कर दिया गया है क्या है यहां कक्षा की शुरुआत के बाद से कर रहे हैं. लेकिन आप भी पढ़ सकते हैं और फ़ाइलों को लिख सकते हैं, मैं / O-- तो इनपुट फ़ाइल सभी फाइल है, जो यह उत्पादन के लिए खड़ा है. तो यह मूल रूप से इसका मतलब है कि अब आप अपने डेटा स्टोर कर सकते हैं. आप बस करने के लिए इसे प्रिंट जब स्क्रीन, यह मूल रूप से, सही हो गया है? जैसे ही आप हैलो "बनाने के रूप में दुनिया "और भागो" हैलो दुनिया " यह स्क्रीन करने के लिए "नमस्ते विश्व" प्रिंट. लेकिन आप वास्तव में ऐसा नहीं कर सकते वहाँ से इसके साथ कुछ भी. आप एक पाठ में दुकान फ़ाइल, फिर अचानक आप आप की अनुमति दी हो कि इस डेटा है हेरफेर या एक फाइल में डाल दिया, या बाद में एक कार्यक्रम में डाल दिया. कारणों में से एक क्यों हम करते हैं यह सिर्फ है बाद में उपयोग के लिए डाटा स्टोर करने के लिए एक रास्ते के रूप में. मैं यहाँ कदम की एक जोड़ी है सिर्फ मानक के माध्यम से चलने मैं / हे. एक कदम में, आप एक संदर्भ बनाने की जरूरत सभी के साथ फाइल करने के लिए टोपियां सितारा फ़ाइल. इसलिए कि एक फ़ाइल के लिए एक संकेत बनाता है. तो फिर आप इसे खोलना चाहते हैं. और तुम, सचमुच, कहना सिर्फ फ़ाइल fopen के बराबर होती है. और यह एक वापसी करने जा रहा है आप अभी खोला फ़ाइल के लिए सूचक. मैं आप में से एक जोड़े को देखा कार्यालय समय में दोस्तों. लेकिन चीजों में से एक remember-- संकेत है सही कुछ पता या अशक्त, हो सकता है? हम कभी एक मामले जहां है, तो कुछ, अशक्त लौट सकते हैं हम क्या करना है क्या हम कभी भी इसका इस्तेमाल से पहले? हम अगर जांच की जरूरत यह शून्य या नहीं, सही है? आप में से कुछ था हो सकता है क्योंकि मुद्दा जहां जो भी वस्तु ब्रेकआउट में लौट जा रही थी शून्य था. आप प्रदर्शन करने की कोशिश की इस पर कुछ कार्य करते हैं. और आपके कंप्यूटर साइट गलती. है ना? मैं आप की एक जोड़ी शर्त कि मुद्दा था हो सकता है. Fopen के साथ तो, fopen या तो फ़ाइल के लिए एक संकेत लौटने, या कुछ गलत हो जाता है, यह शून्य वापस जाने के लिए जा रहा है. तो आप हमेशा की जांच की जरूरत यह शून्य वापस नहीं आया है कि आप कुछ और करने के लिए प्रयास करने से पहले. यह एक मानक प्रतिमान की तरह है आप यहां जरूरत जा रहे हैं कि. एक मौका कभी अगर वहाँ कि कुछ, अशक्त लौट सकता है यकीन है कि यह सुनिश्चित करने के लिए जाँच आप आगे बढ़ना नहीं करता है पहले. अन्यथा, आप जा रहे हैं प्यारा साइट दोष पाने के लिए. और कोई भी उन लोगों के साथ निपटने के लिए पसंद करती है. हम यहाँ देखते हैं, पहला तर्क तो फ़ाइल को बस मार्ग है. उस फ़ाइल मौजूद नहीं है, यह है कि फाइल बनाने के लिए जा रहा है. और यह सिर्फ रिक्त होने जा रहा है. और फिर दूसरा तर्क आप चाहते हैं कि विधा है. हम इस फ़ाइल से पढ़ने के लिए चाहते हैं? आप इसे से लिखना चाहते हैं? आप संलग्न करना चाहते हैं? इसलिए वास्तव में मैं सिर्फ said-- क्या फ़ाइल मौजूद नहीं है और आप से पढ़ने की कोशिश कर रहे हैं यह, यह एक त्रुटि फेंक करने के लिए जा रहा है. फ़ाइल अगर पसंद name-- हैं file.text अभी तक अस्तित्व में नहीं है और आप लिखना चाहते हैं यह करने के लिए, यह बनाएगा आप के लिए file.text नामक एक खाली फ़ाइल. और आप संलग्न करना चाहते हैं, आप एक ही बात करना चाहिए. कि मतलब? आप से पढ़ने की कोशिश कर रहे हैं अभी तक मौजूद नहीं है कि एक फ़ाइल, यह एक त्रुटि फेंक देंगे. अन्यथा, यह फाइल बनाएगा के लिए क्या आप यह चाहते हैं कि क्या करना है. कूल. अब हम फ़ाइल से पढ़ सकते हैं. और यह सिर्फ जा रहा तरह की है विभिन्न कार्यों के माध्यम से हम फ़ाइल मैं / ओ के लिए है. इस वसीयत इस सप्ताह के pset में आवश्यक हो अगर मुझे सही याद. हां, यह बिल्कुल हो जाएगा इस सप्ताह के pset में आवश्यक. तो fgetc अगले चरित्र देता है. सिर्फ पाठ की एक पंक्ति रिटर्न fgets. यह करने के लिए कुछ भी वापस आ जाएगी एक नई लाइन, और यह टूट जाएगा. तो fread एक निश्चित पढ़ता बाइट्स और स्थानों उन की संख्या एक सरणी, में जो कुछ तुम हो सकता है फिर से size-- साथ करना चाहते हैं उपयोगी हो सकता है. कितने लोग पढ़ लिया है वैसे pset कल्पना,? ठीक. [अश्राव्य] अध्यक्ष 1: ठीक है. ठीक है. यह एक मजेदार pset है that-- निश्चित रूप से पढ़ा. आप हटाई स्मृति ठीक करने के लिए मिलता है यह काम करता है जब वास्तव में रोमांचक card--. लेकिन निश्चित रूप से, कि पढ़ना शुरू. मुझसे बात आओ आप अगर इसके बारे में सवाल हैं. ठीक है, के रूप में तो मैं कह रहा था, fread बाइट्स की एक निश्चित संख्या में पढ़ता है. यही कारण है कि कुछ मनमाना संख्या है आप स्थापित करने के लिए जा रहे हैं. और फिर बस चाल fseek एक निश्चित स्थान के लिए. तो शायद आप परवाह नहीं है अगले 10 बाइट्स के बारे में. आप बस आगे छोड़ना चाहते. आप उन लोगों के बारे में परवाह नहीं है. आप बाइट 11 पर शुरू पढ़ना चाहते हैं. fseek आप ऐसा करने की अनुमति देता है. तो यह आप चयनात्मक होना करने की अनुमति देता आप क्या पढ़ रहे हैं के बारे में. Fgetc, fgets, और fread पढ़ें क्योंकि फ़ाइल में एक निश्चित स्थान से. इस बारे में सोचने के लिए एक तरह से यह तो है हमारे फ़ाइल है, आप पहली बार इसे खोलते हैं, आप फाइल में यह स्थिति है कि शुरुआत में शुरू होता है. जब भी आप फोन fgetc, fgetf, या fread, इसमें से शुरू हो रहा है इस स्थिति मार्कर. तुम सिर्फ पढ़ने के लिए कहना चाहते हैं यहाँ पर स्मृति के इस टुकड़ा. तुम बस फोन नहीं कर सकते. आप यहाँ पर तलाश करनी और फिर वहाँ से पढ़ा या पढ़ा है, हो जाता है, या जीइ टीसी, क्या आप चाहते हैं पर निर्भर करता है. तो बस आपको अनुमति देता है तलाश स्मृति के कुछ भागों को छोड़. और कहा कि केवल है आप चीजों को छोड़ सकते हैं रास्ता अपने बफर में उन्हें पढ़ने के बिना. कि हर किसी को मतलब? जाहिर है, वहाँ एक समानांतर here-- की बहुत हमारे उत्पादन, या इनपुट पुनर्निर्देशन, आप पढ़ना और लिखना है. तो fputc सिर्फ लिखता है एक फ़ाइल में चरित्र. fputs एक पंक्ति लिखता है. Fprintf एक प्रारूपित उत्पादन प्रिंट. आप टैब है, तो या अंतरिक्ष, या whatnot. और फिर fwrite कुछ लिखता है एक फाइल करने के लिए बाइट्स की सरणी. तो यह उसी तरह है fwrite और fread अनुरूप हैं opposites-- fgets, fputs, और फिर fputc और fgetc-- बहुत सारे की पागल, जल्दी बातें. बस की तरह इस handy-- रखना आप अलग अलग समय के लिए होगा जहां शायद आप बस चाहते हैं एक समय में एक चरित्र. शायद तुम एक पूरी लाइन चाहते हैं. अपने शब्दकोश pset-- साथ जो दो psets में है, मुझे लगता है हम तुम एक पूरी दे, पर विश्वास एक पाठ प्रारूप में शब्दकोश जो हर शब्द है एक लाइन से अलग कर दिया. आप पढ़ने के लिए चाहते थे तो अगर एक समय में एक शब्द में, आप पढ़ रहे हैं आप क्या उपयोग हो सकता है और वे सभी, नई लाइनों पर अलग हो रहे हैं और आप सिर्फ एक समय में एक शब्द चाहते हैं? दर्शक: fgets अध्यक्ष 1: ठीक है. Fgets-- कि रिटर्न क्योंकि जो कुछ भी एक लाइन पर है. और हर शब्द अपने अगर अपनी लाइन, हम fgets उपयोग कर सकते हैं. कूल. कि भावना, हर कोई है? कूल? हाँ, हम करने के लिए ले जा रहे हैं संकेत के साथ मज़ा हिस्सा बहुत जल्द ही, जहां आप कुछ गणित करने के लिए मिलता है. और यह बहुत अच्छा होगा. अपनी फाइल को बंद step-- पिछले. यहां तो कई चीजों के साथ, हमारे मानदंड में से एक यह वापसी कर सकते हैं यदि है शून्य, शून्य के लिए जाँच करें. आप कुछ खोलते हैं, क्या आप बेहतर बंद होगी. आप कर रहे हैं जब तक ठीक है, तो आप कर नहीं रहे आप इसे बंद कर दिया है जब तक किया. एक तरह से यह खत्म नहीं हुआ है जैसे मोटी औरत गाती है जब तक. यही कारण है कि अपनी फ़ाइल को बंद करने की तरह है. यह यहां, कहते हैं बस हमेशा दोहराना तुम से पहले अपने फ़ाइल को खोलने पढ़ने या इसे करने के लिए लिख. आप इसे खोल दिया है और अगर हमेशा इसे बंद. ठीक है? कूल. यहाँ तो एक उदाहरण है. मैं नहीं जानता कि tiny-- तो तुम अगर लोग बहुत अच्छी तरह से देख सकते हैं. केवल हम बढ़ सकते हैं किसी भी तरह चमक. अगर मैं कर सकता मुझे वास्तव में यह करते हैं. ठीक है, तुम लोग नहीं कर सकते हैं वास्तव में आपको लगता है कि सब पर कर सकते हैं देखते हैं? ठीक है, हम तो ऐसा करने के लिए जा रहे हैं. [अश्राव्य] मैं यह देखने के लिए ज्यादा बेहतर है मान. किसी को भी देख सकते हैं जहाँ मेरी प्रश्न माउस चला गया है? आह, वहाँ यह संघर्ष क्या is--! ठीक. असल में, तुम लोगों को तरह होना चाहिए क्या इस का एक विचार की कोशिश कर रही है. यह सही नहीं है. खर्च की तुलना लेकिन मैं नहीं बल्कि यह समझाना चाहते हैं अधिक समय ठीक से यह प्रारूप की कोशिश कर रहा. असल में, आप यहाँ देख, हम फ़ाइल खोलने के साथ शुरू करते हैं. और हम कुछ है हम कर रहे हैं कि डेटाबेस फ़ाइल कि खोलने यह हमारे छात्रों का कहना है. और हम यह करने के लिए लिखने जा रहे हैं. तो ज़ाहिर है, अशक्त वापसी. तो हम अशक्त के लिए जाँच करने के लिए है. और ऐसा नहीं है तो अगर अशक्त, हम के माध्यम से जाना. आप देखते हैं और, जैसा कि हम कर रहे हैं यहाँ के माध्यम से पाशन. छात्रों रहे हैं. छात्रों को तीन के रूप में परिभाषित हैश है. और क्या हम कर रहे हैं हम कर रहे है ठीक है, फाइल करने के लिए मुद्रण? तो क्या हम अपने फ़ाइल को बाहर मुद्रण कर रहे हैं? दर्शक: स्कोर सरणी में है कि कर रहे हैं? अध्यक्ष 1: हाँ. में हैं कि स्कोर बिल्कुल array--. इसलिए हम इस खोल रहे हैं डेटाबेस फ़ाइल, जो मुझे लगता है किसी प्रकार का है ग्रेड डेटाबेस की. और हम बस से बाहर मुद्रण कर रहे हैं उस फ़ाइल के लिए प्रत्येक छात्र के स्कोर. कूल? अच्छा है. बहुत बढ़िया. ठीक. To-- वापस पाने के चलो दर्शक: मैं एक त्वरित सवाल है. पाश के लिए printf नहीं में है? वह सिर्फ अगर पाश में है? अध्यक्ष 1: नहीं, यह पाश के लिए में है. मैं यहाँ बहुत अच्छी तरह से अपने माउस नहीं देख सकता. तो मैं करने के लिए संघर्ष कर रहा हूँ ठीक से प्रारूप है. इस ब्रैकेट से चले जाना चाहिए. यह यहां नीचे होना चाहिए. इस पाश के लिए अपने में क्या है. क्या आप वहां मौजूद हैं. अब यह सुंदर है. तो यह बात छोड़कर be-- चाहिए कैसे मैं खारिज कर दिया कि कि पिछले ब्रैकेट के लिए. ठीक. कि हर किसी को मतलब? ठीक. हम पर स्थानांतरित करने के लिए जा रहे हैं अगली बात के लिए then-- जो, वास्तव में, आप जा रहे हैं कोड देखने की जरूरत है. तो मैं बस के लिए जा रहा हूँ उस पर सही अब नकल. ठीक. इसलिए मैं इस कोड तुम लोगों को दिखाने के लिए जा रहा हूँ. और मैं आप कोशिश करते हैं और यह आंकड़ा करना चाहते हैं यह माना जाता है की क्या करना है. इसलिए या तो एक मिनट ले that-- दिया. कोशिश करो और यहां क्या हो रहा है यह पता लगाने. किसी भी विचार? हम जानते हैं कि कम से कम दो कमांड लाइन में तर्क, सही? मैं जिनमें से एक होने जा रहा है ग्रहण कि [अश्राव्य] हमारे कार्यक्रम है की और फिर कुछ और. [अश्राव्य] कम है क्योंकि अगर दो से, हम उन पर चिल्लाना. है ना? और उपयोग से, ऐसा लग रहा है यह फ़ाइल किसी प्रकार का होने जा रहा है. हम सब कि करने के लिए सहमत हैं? तो अब, कर पाश क्या है? यह क्या गुज़र रही है? दर्शक: सभी फाइलों. अध्यक्ष 1: बिल्कुल. यह के माध्यम से हो रहा है सब हम वहाँ इनपुट है कि फ़ाइलें. इसलिए प्रत्येक फ़ाइल के लिए, यह है वहाँ कुछ स्ट्रिंग खोलने. यह उस फ़ाइल को खोलने की है. है ना? और यह इसे से पढ़ रहा है. यह शून्य है बेशक, अगर जाँच. और फिर यह मुद्रण है. यह शून्य है, यह सिर्फ हमें बता रहा है कि कि मौजूद है कि एक फ़ाइल नहीं है. साथ याद है, क्योंकि हमारे फाइल करने के लिए मौजूद है पढ़ें. है ना? लिखने और संलग्न के साथ, आप इसके साथ भाग ले सकते हैं. लेकिन पढ़ने के साथ, हमारे फाइल करने के लिए मौजूद है. और फिर यह मौजूद है, तो हम यहां क्या कर रहे हो? चलो बस यहाँ शुरू करते हैं. क्या यह है यह पहली चरित्र do--. यह क्या करता है? वह सही, एक चरित्र हो जाता है? तो क्या यह कर रहा है? यह पहला चरित्र हो रही है. किसी को भी EOF पता है? दर्शक: फ़ाइल का अंत? अध्यक्ष 1: बिल्कुल file-- का अंत. तो यह माध्यम से जाना जा रहा है पूरी फाइल, है ना? और फिर इसके द्वारा अद्यतन करने के लिए जा रहा है हर बाद चरित्र हो रही है. है ना? और यह क्या कर रहा है? दर्शक: लगा कि in-- अध्यक्ष 1: Putchar प्रिंट अपने स्क्रीनसेवर के लिए. [अश्राव्य] चरित्र. और फिर जब यह [अश्राव्य] इस फाइल को बंद हो जाएगा. दर्शक: तुम नहीं एक [ज़रूरत है? और? ?] अध्यक्ष 1: जरूरी नहीं है. मैं यह एक तरह से इस में निहित है, मतलब. यह लंबे समय के रूप में, हालांकि, रिटर्न क्योंकि यह इस पकड़ नहीं करता है, आप ठीक कह रहे हैं. मैं यह शायद अच्छा है मतलब एक और को ऐसा करने का अभ्यास करेंगे. लेकिन एक और को हमेशा नहीं है आवश्यक विशेष रूप से आप कुछ है एक वापसी की तरह है जो इस मामले में यह फैल जाती है अगर इसका मतलब है कि यह अपने कार्यक्रम को समाप्त करने के लिए जा रहा है और यह इस पर कभी नहीं मिलेगा. यह आप कर रहे हैं जहां मामले के लिए अधिक है जरूरी कुछ नहीं लौटा रहा. इस नहीं था क्योंकि अगर कुछ भी लौटने, यह, अगर यह सच थे कि इसका मतलब यह होगा इस के बाकी अभी भी चला जाएगा. और उस मामले में, आप एक झूठी चाहेगा. यह लौट रहा है, और अपने कार्यक्रम के अंत एक और सब से जरूरी नहीं है समय, संदर्भ पर निर्भर करता है. याकूब, आप एक सवाल किया है? दर्शक: हाँ. तो अगली चरित्र मिलता fgetc करता है? चरित्र कैसे बढ़ जाता है? अध्यक्ष 1: हाँ. तो fgetc अगले वर्ण हो जाता है. आप एक मायने में सी ++ तरह के बारे में सोच सकते हैं. दर्शक: EOF तो क्या था? अध्यक्ष 1: EOF फ़ाइल का अंत है. यह सिर्फ आपको पता है कि एक मार्कर है आप अपनी फाइल के अंत में कर रहे हैं कि. तो यह मुद्रित करने के लिए जा रहा है अपने मानक से बाहर करने के लिए. और उसके बाद बंद हो रहा है जब यह किया है फ़ाइल. और तो चलो चलते हैं अगले फ़ाइल, है ना? तो कुल मिलाकर, इस कार्यक्रम क्या करता है? [अश्राव्य] अध्यक्ष 1: हाँ. यह सिर्फ वहाँ सब कुछ बाहर प्रिंट. तुम लोग कभी इस्तेमाल किया है अगर कैट तो कुछ file-- की और फिर नाम आप में से कोई भी अगर मैं नहीं जानता कभी अपने टर्मिनल पर जो कुछ किया. लेकिन क्या आपने कभी उपयोग करें आदेश CAT-- सी-ए-T-- और फिर जो भी फाइल आप यह there-- है अपने टर्मिनल, इसे बाहर प्रिंट जो कुछ बातों के लिए सुपर आसान हो सकता है. मैं यह एक बहुत का उपयोग करें. कि हर किसी को मतलब? कूल? ठीक है तो अपने काम से या तो now-- अपने आप को या you-- आसपास के लोगों के साथ बस एक साधारण प्रोग्राम लिखने के लिए है कि बस "नमस्ते, दुनिया!" लिखेंगे एक फाइल करने के लिए बाहर. [अश्राव्य] [अश्राव्य] अध्यक्ष: 1, जैसे मैं था मुझे लगता है कि बुरी तरह से पिछले हफ्ते करते हैं? मैं यह है कि बुरा नहीं लगता था. मैं आप सब यहाँ हो खुश हूँ. यह वास्तव में मुझे खुशी होती है. मैं साधारण सुख की एक लड़की हूँ. मेरे अनुभाग में आती है जब मैं बस की तरह. इसलिए मैं सिर्फ इस बात के लिए शुरू हो रही है तुम लोगों को हम एक साथ कोड कर सकते हैं. मैं पर किसी को भी डाल पसंद नहीं है जगह आप होना चाहते हैं जब तक. दर्शक: प्रश्नोत्तरी के लिए करते हैं, हम एक प्रोग्राम लिखने के लिए है? अध्यक्ष 1: आप करने के लिए कहा जा सकता है हाथ से सरल कार्यक्रमों लिखें. हां. दर्शक: प्रश्नोत्तरी सही, अगले सप्ताह है? अध्यक्ष 1: प्रश्नोत्तरी अगले बुधवार है. यह एक सुंदर [वहाँ का मतलब है? सीएसई?] बाद में पार्टी ग्रेडिंग जो आप अपने स्कोर मिलेगा मतलब वापस क्या समय पर night-- कि? कौन जानता है? लेकिन यह है कि रात हो जाएगा. ठीक है. हम यह कैसे शुरू करने के लिए करना चाहते हैं? मैं तुम्हें इस के साथ एक hint-- शुरू होता है दे देंगे. दर्शक: आप एक फ़ाइल को खोलने के लिए है. अध्यक्ष 1: हाँ. तो क्या आप इस कॉल करने के लिए करना चाहते हैं? तुम सिर्फ "फाइल" यह कॉल करने के लिए करना चाहते हैं? चलो यह आसान बनाते हैं. तो क्या fopen-- हमारे होने जा रहा उत्पादन परीक्षण? "नमस्ते." कॉल और हमारी मोड क्या है? हम इस फ़ाइल को क्या कर रहे हो? दर्शक: पढ़ें. लेखन. अध्यक्ष 1: हम यह करने के लिए लिख रहे हैं. लवली. ठीक है, तो हम अब इस फाइल है. हम क्या करने की जरूरत है? दर्शक: यह शून्य है अगर जाँच करें. अध्यक्ष 1: यह बिल्कुल null-- है अगर जाँच करें. यही तो मैं सुनना पसंद है. यही कारण है कि विशेष रूप से, स्वत: होना चाहिए पर इस बात से बहुत ज्यादा. आप segfaulting, आप शायद शुरू कहीं नल के लिए जाँच नहीं की थी. दस में से नौ बार, कि अपनी त्रुटि होने जा रहा. आप बस में मिल सकता है तो यह शून्य है अगर आदत, हमेशा की जांच अपने जीवन होने जा रहा है अच्छा और easy-- या आसान. तो यह शून्य है देखने के लिए जाँच. यह शून्य नहीं है, जो तो धमाके के बराबर होती क्या है means-- यह वैध है null-- नहीं. हम क्या करना चाहते हैं? हम सिर्फ प्रिंट करना चाहते हैं उस फ़ाइल को, सही? तो क्या हम प्रयोग करने जा रहे हैं? दर्शक: fprintf अध्यक्ष 1: Fprintf-- प्यारा. और fprintf दो arguments-- जहां लेता है यह जा रहा है और क्या हम मुद्रित चाहते है. तो पहले एक क्या है? यह कहां जा रहा है? दर्शक: फ़ाइल. अध्यक्ष 1: यह फाइल करने के लिए जा रहा है. और हम मुद्रित क्या चाहते हो? "नमस्ते, दुनिया!" ठीक है. हम पिछले एक thing-- है यहाँ एक और बड़ा प्रतिमान. दर्शकों को बंद. अध्यक्ष 1: बंद. वहाँ तुम जाओ. दर्शक: यह हो रहा है फ़ाइल रिक्त है तो क्या होगा? अध्यक्ष 1: यह शून्य नहीं है अगर नहीं, यह है. दर्शक: ओह, अगर यह not-- ठीक है. तो fopen और के लिए अंदर जाने कि दो तर्क, पहला तर्क फिर क्या मतलब है? अध्यक्ष 1: तर्क है सिर्फ फ़ाइल के नाम की तरह आप के पास जाना चाहते हैं. इस चलाता है के बाद तो, आप होगा "हैलो" कहा जाता है कुछ फ़ाइल कि यह भीतर "नमस्ते, दुनिया" था. बस इतना ही. बस नाम. दर्शकों: और यह है के बाद से लेखन, फ़ाइल पहले से ही मौजूद नहीं है. आप क्या कहा है? अध्यक्ष 1: ठीक है. बिल्कुल सही. "नमस्ते" एक फ़ाइल के रूप में हैं अभी तक अस्तित्व में नहीं है, यह बात है कहा जाता है एक फ़ाइल बनाने जा नमस्ते "और आप के लिए यह करने के लिए लिखें. दर्शक: आप कह रहे हैं जब कार्यक्रम, फाइल करने के लिए लिखा था क्यों तुम लिखो "फाइल" के बजाय है फ़ाइल और fprintf-- का नाम अध्यक्ष 1: इस मामले में, क्योंकि हम सभी caps-- स्टार में है कि बड़ी FILE--, फ़ाइल. इसलिए यह फाइल करने के लिए एक सूचक है कि आप के बारे में बात कर रहे हैं. इस तरह से है कि हम सिर्फ इसे देखें. इस मामले में तो, आप file-- अहा के बारे में सोच सकते हैं, हम यहाँ this-- फ़ाइल का उपयोग कर सकते हैं "नमस्ते" का उद्घाटन करने के लिए संदर्भित करता है और यह लिख दे. दर्शक: हम एक "हैलो" डाल सकते हैं बजाय [? की बस?] च फ़ाइल? अध्यक्ष 1: नहीं, क्योंकि "हैलो" खुला और लेखनीय होने की जरूरत है. यहाँ फ़ाइल किसी तरह है ठीक कहते हैं कि डेसिग्नेटर, हम इस file-- hello-- है हम देख रहे हैं कि. यह खोल दिया गया है. और हम यह करने के लिए लिखने जा रहे हैं. आप बस "नमस्ते" का उपयोग करते हैं, कि उस में समझाया है. तो यह बाहर बेकार जा रहा है. मैं आपको यह नाम दिया जा सकता था, मतलब. आप फाइल किया जा सकता है सितारा, "नमस्ते", कि बराबर होती है. लेकिन पूरी बात आपको लगता है कि है आदेश में एक फ़ाइल सितारा सूचक जरूरत इन कार्यों का उपयोग करने में सक्षम हो. दर्शक: आप कर सकते हैं फ़ाइल, सितारा, फ़ाइल, "हैलो" या तुम डाल दिया है यह द्वारा, फ़ाइल सितारा फाइल? अध्यक्ष 1: तुम सकता है "नमस्ते.", फ़ाइल, सितारा करना आप के लिए इसे बदल सकते हैं जो भी नाम आप चाहते हैं. यह पूरी तरह से मनमाना है उस नाम क्या है. आप इसे कुछ भी नाम दे सकते हैं. अगर तुम चाहते थे, स्पेगेटी उड़ान यह नाम है. दर्शक: के लिए उद्धरण में "डब्ल्यू" क्या है? अध्यक्ष 1: "डब्ल्यू" सिर्फ मोड है. इसलिए हम इस फ़ाइल के लिए लिख रहे हैं. हर कोई अच्छा? स्पष्ट है? हां. दर्शक: यह इस लिखता है तो जब जहां हम तो उस फ़ाइल को मिल रहा है, फाइल? अध्यक्ष 1: यह वही में होगा आप वर्तमान में कर रहे हैं कि निर्देशिका. आप pset तीन में रहे हैं और आप अपने pset भीतर यह, भागो तीन फ़ोल्डर होने जा रहा है कहा जाता है इस फ़ाइल "नमस्ते." कूल? हर कोई अच्छा? आप सब कर रहे हैं मुझे लगता है जो महान है, यह हो रही है. ठीक. तो वापस अपने स्लाइड show-- को चीजें काम जब मैं प्यार करता हूँ. ठीक है, तुम लोग उत्साहित pointers-- हैं? सूचक महान हैं. वे थोड़ा ले अपने सिर के चारों ओर लपेट लिए. यह मेरा दूसरा साल है शिक्षण संकेत दिए. और मुझे लगता है मैं अंत में यह मिल गया है. तुम संघर्ष तो, अगर यह ठीक है. मैंने पहले कहा, चित्र ड्राइंग , सीएस में चीजों के साथ एक बहुत मदद मिलती है जितना मैं लोगों को देते हैं लगता है के रूप में ओह, हम एक कंप्यूटर पर रहे सोचने के लिए. हम सिर्फ कोड होना चाहिए. No-- ड्राइंग तस्वीरें वास्तव में आपकी मदद करेगा. और मैं वास्तव में करने के लिए प्रोत्साहित आपके kindergartner पक्ष में नल और crayons बाहर लाना या मार्कर और ड्रा. यह आपकी मदद करेगा. और अगर आप कार्यालय समय में मुझे देखते हैं, मैं कागज के ढेर के चारों ओर ले जाने दिया जाएगा कलम चीजें बाहर ड्राइंग के साथ. इसलिए विशेष रूप से तस्वीरें खींचना pointers--. और मुझे लगता है हम वास्तव में करने के लिए जा रहे हैं यकीन यहाँ भी कुछ तस्वीरें खींचने हो. तो आप लोग सब, Binky देखने को मिला इस शांत claymation बात. और हम इसे जब वास्तव में अजीब लगता है वह टुकड़ों का एक गुच्छा में फट जाएगा. यह वर्ग के लिए कुछ हास्य राहत की बात है. सी [अश्राव्य] इस महान क्षमता स्मृति को नियंत्रित करने में सक्षम हो. और यह कि वास्तव में चीजों में से एक है यह एक ऐसी शक्तिशाली भाषा बना देता है. लेकिन महान शक्ति के साथ आता है बड़ी जिम्मेदारी. और पागल बातें हो सकता है आप सावधान नहीं हैं. तो आप उपयोग कर रहे हैं जब संकेत, आप बनाना चाहते हैं सुनिश्चित करें कि आप वास्तव में समझने वास्तव में आप क्या कर रहे हैं. की उम्मीद है कि अगले थोड़ा सा बार जब आप वास्तव में समझने में मदद मिलेगी संकेत, उन्हें कैसे उपयोग करने के लिए, और उन्हें हेरफेर करने के लिए कैसे. इसलिए मुझे लगता है हमें यकीन है कि memory-- पहले इस चित्र देखा. तो इस का सिर्फ एक साधारण आरेख है कैसे चीजें स्मृति संग्रहित किया जा सकता है. तो आप मूल रूप से इन किया एक बाइट ब्लॉक की भारी सरणियों हम here-- मामूली क्या है एक-एक समय से वेतन वृद्धि. यह हेक्स में है [अश्राव्य] तो आठ-बिट ब्लॉक. और हर ब्लॉक जुड़ा हुआ है कुछ हेक्साडेसिमल पते के साथ. तुमने कभी देखा तो अगर 0 x, कि सिर्फ notating है यह एक हेक्साडेसिमल पता है कि. आप इसका मतलब यह मान सकते हैं स्मृति में कुछ पता. हम स्मृति पते के बारे में बात कर रहे हैं जब भी आप हेक्साडेसिमल देखते हैं. हम ints चर रहे है, तैरता कि दुकान चर रहे हैं. Ints दुकान ints तो. तैरता दुकान मंगाई. तो हम भी संकेत दिए है उस दुकान स्मृति पते. यही मानचित्रण का एक प्रकार है. सूचक विशेष रूप से कर रहे हैं स्मृति पते के लिए. इसलिए कि वहाँ अपने प्रकार की तरह है. आपका उपकरण 32-बिट, जो इसका मतलब है अपनी स्मृति पते चार बाइट्स है कि. तो आपको लगता है कि किसी भी सूचक भी चार बाइट्स होने जा रहा है. या यह चार बाइट्स है यदि नहीं तो, स्मृति चार बाइट्स है. सूचक दुकान स्मृति. इसलिए, वे चार बाइट्स कर रहे हैं. Cool-- कि बस को मजबूत करना चाहते हैं. अब आप इस हास्य मिलना चाहिए. मैं आप में से कितने पता नहीं है xkcd प्रशंसक रहे हैं, लेकिन मैं xkcd प्यार. यह बहुत अच्छा है. ठीक है. जैसा कि मैंने कहा तो यह है, pointers-- बनाने बहुत ज्यादा कुछ और की तरह. आप एक प्रकार है. आप एक नाम है. है ना? यही कारण है कि हम वहाँ क्या है. [? हेक्स?] सितारा, यह एक सूचक है मतलब और फिर आप इसे कॉल करना चाहते हो. तो प्रकार का प्रतिनिधित्व करता है आप स्टोर कर सकते हैं क्या. ठीक है? उसी तरह है कि हम ints करते हैं, हम हम वहाँ एक पूर्णांक भंडारण कर रहे हैं पता है. एक संकेतक के साथ, यह एक स्मृति पता रखती है. लेकिन क्या यह मतलब है यहाँ कहाँ है that-- है एक ड्राइंग काम में आने वाला है. तो इस मामले में, हम हैं कुछ के चार हम कहते हैं value--. चार पते से एक पर है. ठीक है? यह पहली बार यहाँ का मतलब यह एक सूचक 2x है कि. है ना? यह कुछ सूचक एक्स. एक्स, जो भी कुछ हो सकता है. जो भी एक्स एक्स चार का कहना है कि is--. यह स्टोर करने के लिए जा रहा है यहाँ स्मृति पता. तो पूर्णांक, सितारा, x-- यह है memory-- में कुछ अन्य स्लॉट कौन है यह क्या जानता है. लेकिन यह यहाँ एक पते स्टोर करने के लिए जा रहा है. तो इस like-- होगा इस मामले में, जो भी हो, संग्रहीत किया जाता है जो कुछ 0x1-- में संग्रहीत किया जाता है हमारे सूचक रखती है उस पते पर, के साथ मैच करने के लिए है क्या हम नामित किया है. तो 0x1 में, इस मामले में, इस एक्स है. यह केवल कभी एक हो सकता है हम यह प्रयोग कर रहे हैं, जबकि इंट. इसी तरह, हम है अगर एक और 1 वर्ष, जो कुछ एक वाई है साथ पते संग्रहीत किया जाता है जेड के साथ एक char-- एक ही बात हो. उसी तरह, जब भी आप कोशिश करते हैं और intx 0.4 के बराबर होती करते हैं, यह तुम पर चिल्लाना और होने जा रहा है कोई तरह, आप आप एक पूर्णांक चाहता था. यह एक पूर्णांक माना जाता है. यह एक नाव बनाने की कोशिश कर बंद करो. तो बातें वे क्या बनना चाहते हो. चीजें खुद को रहने दो. तो बड़ी बात बस है सूचक के जो भी प्रकार यह कि केवल है, है तुम वहाँ स्टोर कर सकते हैं बात. ठीक है? अभ्यास के साथ, साथ ही पिछले हफ्ते, सब कुछ वास्तव में इस तरह का सार लगता है. हम कुछ अभ्यास करने जा रहे हैं. यह और अधिक समझ बनाना चाहिए. इसलिए संदर्भित और यह dereferencing-- वास्तव में महत्वपूर्ण इन सीधे प्राप्त करने के लिए. मैं अभी भी ताज़ा करने के लिए है हर अब और फिर. और मुझे लगता है मैं जो एक चाहता है, इंतजार की तरह हूँ? तो एम्परसेंड वास्तव में दे देंगे आप के संदर्भ या पता. तो यह संबोधन में रिटर्न जो चर की स्मृति संग्रहीत है. तो यह वास्तव में आप करने के लिए वापस जा रहा है एक हेक्साडेसिमल, यह dereferencing जबकि वास्तव में तुम्हें देने के लिए जा रहा है वहाँ संग्रहीत डेटा. ठीक है? तो हम एक उदाहरण को देखने के लिए जा रहे हैं वास्तव में तेजी, या वास्तव में अगले. ठीक. इसलिए हम वास्तव में सोचना है ध्यान से इस बारे में. यहाँ तो हम कुछ पूर्णांक एक्स है. मैं कोशिश करते हैं और इस आकर्षित करने के लिए जा रहा हूँ मेरी क्षमताओं का सबसे अच्छा करने के लिए बाहर. इसलिए हम इस स्लॉट एक्स के लिए जा रहे हैं. और यह पांच के भंडारण है. इसका पता 0x4 है. कूल? सब अच्छा है. तो अब हम इस सूचक है. यह यहां समाप्त हो गया था. और एम्परसेंड हमें देता है कुछ के पते. इसलिए, इस मामले में, यह एक्स का पता है. एक्स के पता क्या है? 04-- और इस सूचक 0x08 पर है. कूल? इसलिए आप इस बारे में सोच सकते हैं सूचक, 04, बस यहाँ से अधिक अंक. और वे संकेत कहते हैं हम इस मामले में और अधिक मिलता है, क्योंकि आप चीजों की ओर इशारा करते देखने के लिए जा रहे हैं. और एक ब्लॉक एक और की ओर इशारा ब्लॉक एक बहुत अधिक मतलब होगा. यहाँ तो दो हैं. और फिर हम कुछ है what-- 0x0c है जो प्रतिलिपि,. और यह जा रहा है हमारे संकेतक भिन्नता. तो क्या यह कह रहा है ठीक है, यहाँ हमारे सूचक है. यह भंडार मूल्य क्या 0x04 है, और यह इस पते पर जाना है कह रहा है और इसमें क्या मुझे बताओ. इसलिए कि प्रभावी ढंग से है इस तीर क्या कर रही है. आप अपने स्टार की तरह इस के बारे में सोच सकते हैं. हम सितारा करते हैं तो जब ठीक है, यह पालन का मतलब है. इस पते पर जाएं. और ये सिर्फ निम्नलिखित मूल रूप से है इस स्मृति हिस्सा करने के लिए इस तीर. और 5 है, जो इसमें क्या हमें दे. हमारी नकल 5 के बराबर है क्यों यह है. कि मतलब? किसी के माध्यम से जाने के लिए मेरी जरूरत है कि फिर से, या अधिक धीरे? आप मुझे जाने के लिए चाहते हैं इसे एक बार के माध्यम से? ठीक. हम इसे फिर से redraw करने के लिए जा रहे हैं. हम शुरू करते हैं, हम सब हमारे पास सहमत एक चर है कि स्मृति की कुछ हिस्सा हम 5 के बराबर सेट कि एक्स. यह स्मृति में है, जहां हम नियंत्रण नहीं है. इसलिए इस जगह बस है मनमाने ढंग से आवंटित किया. वहाँ अच्छा है? ठीक. तो फिर हम एक पूर्णांक के लिए एक संकेत को प्रारंभ. यह बात करने के लिए बात करने के लिए अनुमति दी है क्यों है एक्स हम यहाँ में एक पूर्णांक है क्योंकि. हम का एक और हिस्सा है स्मृति क्योंकि इस सूचक अभी कुछ और की तरह एक चर रहा है. यह मनमाने ढंग से आवंटित किया गया है स्मृति में कुछ जगह. और क्या यह भंडार एक्स का पता है. एम्परसेंड एक्स के पते का मतलब है. तो एक्स का पता क्या है? दर्शक: यह zero-- है अध्यक्ष 1: 0x04. तो then-- पिछले एक. हम फिर से कुछ copy-- है सिर्फ एक चर. तो चलो कुछ मनमाने ढंग से जगह आवंटित करते हैं. हमारे संकेतक भिन्नता और हम. स्टार के लिए जाने का मतलब पता मेरी सूचक में संग्रहीत. वहाँ मुझे बताओ कि क्या. तो पता संग्रहीत हमारे सूचक में 0x04 है. तो हम उस पते पर जाना. यह उस पते की ओर इशारा कर रहा है. इस स्मृति ब्लॉक के अंदर क्या है? यह एक पाँच है. इसलिए कि हम अपने प्रतिलिपि आवंटित है. हर कोई अच्छा? कूल. Again-- तस्वीरें. तो मैं हूँ here-- मूल्यों ट्रैकिंग आप लोग इस बारे में सोचते हैं करने के लिए जा रहा है. हम एक और तस्वीर आकर्षित कर सकते हैं. लेकिन मैं आप कोशिश करते हैं और कारण करना चाहते हैं एक मिनट के लिए अपने दम पर इस के माध्यम से. वे देना नहीं था हमें एक उदाहरण के पते, मैं सिर्फ एम्परसेंड x-- क्या करने जा रहा हूँ जो घर यह ड्राइव की मदद करनी चाहिए. एम्परसेंड पते का मतलब है. पहले एक, हर किसी में तो पहली पंक्ति के साथ चलते हैं. कुछ एक्स सेट का five-- कुछ स्मृति में यादृच्छिक स्लॉट. इंटरनैशनल स्टार सूचक बराबर है एक्स के पते पर, सही? इंटरनैशनल स्टार सूचक बनाता है इस ब्लॉक, यह सूचक कहता है, और एक्स के पते पर प्रदान करती है. मैं एम्परसेंड्स पर भयानक रहा हूँ. अब हम क्या कर रहे हैं कि हम कहना है ठीक है, हमारे संकेतक भिन्नता. तो हम ठीक है, हमारे सूचक में क्या जाने? यह एम्परसेंड एक्स. एम्परसेंड एक्स के पास जाओ और इसे पुन: असाइन. तो अब, एम्परसेंड एक्स 35 होने जा रहा है. तो बुनियादी तौर पर, आप जब हो dereferencing, आप ठीक है जाओ. आप ड्राइंग हो जा रहे हैं इस तरह तस्वीरें. आप ड्राइंग हो जा रहे हैं यह वह जगह है जहाँ पर अपने तीर. तो स्मृति में इस स्लॉट के लिए जा सकते हैं और या तो मुझे लगता है कि मूल्य वापस दे, या यह परिवर्तन. इस मामले में, क्योंकि हम इस पर रहे , हम यह बताए रहे मूल्य 35 हो. अंतिम में जबकि एक, अगर तुम नोटिस, हम क्या था बताए थे यहाँ कुछ और करने में. इसलिए वे इस भयानक टेबल है. ऐसा लगता है कि बुरा नहीं है. तुम लोग उस पर काम करते हैं. मैं बोर्ड पर इसे बाहर आकर्षित करने के लिए जा रहा हूँ. हम ठीक है, यह एक साथ बाहर भरने के लिए जा रहे हैं? तो कुछ कागज, हड़पने हड़पने एक साथी, काम शुरू. मैं एक पाने के लिए जा रहा हूँ चाक का बड़ा टुकड़ा. यह एक बहुत होने जा रहा है क्योंकि. ठीक. प्रोफेसर: ठीक है. की पहली पंक्ति के साथ शुरू करते हैं. हम तो, वहाँ आप लोग शुरू करेंगे शायद कुछ और के माध्यम से काम कर सकते हैं. ठीक. एक एक क्या है तो बी टाइम्स सी के बराबर होती है? यह एक चाल सवाल नहीं है, मैं वादा करता हूँ. छात्र: 4 बार 5. प्रोफेसर: 4 बार 5. 20. तो ख क्या है? छात्र: 4. प्रोफेसर: और सी? छात्र: 5. प्रोफेसर: 5. और फिर यह सिर्फ जा रहा है एक, एम्परसेंड बी एम्परसेंड किया, एम्परसेंड सी, है ना? बुरा नहीं. यह काफी सरल है. ठीक. अगले एक तो. एक मामले में, एक बार ग के बराबर होती है किसी को भी उस के साथ अपरिचित था. परिचित हर कोई है टाइम्स के बराबर होती है साथ? ठीक है, यह सब इस है means-- एक के लिए आशुलिपि एक बार ग के बराबर होती है. तुम भी विभाजन के साथ ऐसा कर सकते हैं, घटाव के साथ इसके अलावा, के साथ. आप एक बराबरी कर सकते हैं, या एक से अधिक ग के बराबर होती है एक एक प्लस सी, बराबर एक शून्य के बराबर होती है मतलब सी एक एक शून्य सी बराबर होती होगी. यह सिर्फ वाक्यात्मक चीनी है. इसलिए, इस मामले में, एक के बराबर है एक बार ग हमें क्या देंगे? फिर से, नहीं एक चाल सवाल. छात्र: 100. प्रोफेसर: 100. कुछ और परिवर्तन करता है? नहीं. शायद मैं अंत में मिल जाएगा मेरे एम्परसेंड पर बेहतर. छात्र: ठीक है, माफ करना, आप कैसे 100 मिलता है? प्रोफेसर: ठीक है. तो एक एक के बराबर है टाइम्स सी है, तो एक बार सी. छात्र: ओह, आप उपयोग कर रहे हैं previous-- के लिए एक प्रोफेसर: हाँ. तो ये हमारी सबसे हाल ही मान रहे हैं. ये आप क्या किया जाना चाहिए रहे हैं हम नीचे ले जाने के रूप में ठीक है, का उपयोग कर. तो, ख ही बात बदलते, सही है? तो चलो बाकी सब में भर दें. बी क्या ख होने जा रहा है? होना या नहीं होना चाहिए. तो क्या यह कर रहा है? देहात कर सितारा क्या है? छात्र: देहात के स्थान पर कोड. छात्र: नहीं, काफी नहीं है. तो यह एक डी संदर्भ है. छात्र: तो बी देहात का हाथ मान रही है. प्रोफेसर: हाँ, तो देहात है एक का पता, है ना? तो यह एक है जहां जाएं कह रहा है संग्रहीत और यह कि मूल्य दे. तो ख क्या है? छात्र: 100. प्रोफेसर: 100. बिल्कुल सही. ठीक है, तो पीसी क्या बदल रहा है. बाकी सब कुछ एक ही रहता है. क्या पीसी होने जा रहा है? साधारण असाइनमेंट. पीसी देहात के बराबर है, और देहात क्या है? छात्र: एक एम्परसेंड. प्रोफेसर: बिल्कुल सही. अब हम दिलचस्प हो रही है. ठीक है, चलो नीचे यह एक तोड़ देना. कि क्योंकि सबसे पहले, क्या, बी टाइम्स सी है इस एक का आसान हिस्सा है, है ना? बी टाइम्स सी is-- छात्र: 500. प्रोफेसर: हाँ, तो यह एक क्या कर रही है, यह सितारा पंजाब, तो क्या बदल रहा है? छात्र: क्या the-- में है प्रोफेसर: ख में क्या है? छात्र: अंतरिक्ष में क्या है कि पंजाब की ओर इशारा कर रहा है. प्रोफेसर: और पंजाब to-- इशारा कर रहा है छात्र: बी प्रोफेसर: बी तो केवल बात बदलते सही, ख है. तो बी टाइम्स सी, 500. इसलिए कि अब क्या परिवर्तन है. कूल. लवली. आप लोग महान कर रहे हैं. इस एक टूट सब ठीक है,. सी सही, बदल रहा है? इसलिए हम सब कुछ में भर सकते हैं. चलो देखते हैं. ठीक. हम सी होने जा रहा है कि पता दो नंबर के उत्पाद, है ना? क्या दो नंबर, हालांकि? छात्र: ए और सी? प्रोफेसर: तो एक है सही पहले एक के लिए. तो हम सही, एक की पी संदर्भित चाहते हो? एक करने के लिए एक अंक के पी, इसलिए हम जानते हैं कि इस बार 100 क्या होने जा रहा है? करने के लिए पीसी बिंदु क्या करता टाइम्स? एक अंक. तो 100 गुना 100 10,000 है. वह समझ में आता है? कूल. घर खंड, दोस्तों, अंतिम पंक्ति. ठीक. यहाँ क्या बदल रहा है? छात्र: ए प्रोफेसर: ए बिल्कुल सही है, तो सब कुछ एक ही रह सकते हैं. ठीक. और एक क्या है? तो यह एक बार क्या है? इस स्टार PB है. तो स्टार पंजाब यहाँ है मतलब पंजाब, पंजाब अंक ख. छात्र: 500. प्रोफेसर: 500. तो हम 500 गुना 100 है. यही कारण है कि 50,000 है. वाह! वो देखो. छात्र: क्यों हम क्या है Last-- के लिए और सी प्रोफेसर: क्षमा करें. छात्र: ठीक है, ओह. प्रोफेसर: मेरा बुरा. लेखन के बहुत सारे. हर कोई अच्छा? बहुत बुरा नहीं है, है ना? बस थोड़ा सा लेता है जबकि के माध्यम से काम करने के लिए. आप इसे तोड़ने के नीचे हैं, क्या प्रत्येक भाग को समझने के रूप में to-- बात कर रहा है यह सब कुछ के साथ, थोड़ा करने के लिए इसे तोड़ने के नीचे yes-- फिर recombine और समस्याओं, और आप कुछ भयानक चीजें कर सकते हैं. वहाँ जवाब हैं, लेकिन हम उस किया. सूचक गणित. आह. मेरे हाथ सब चूने हैं. तो जोड़ने या घटाकर पूर्णांक सूचक समायोजित कर देता है सूचक के प्रकार के आकार से. कैसे हर प्रकार याद रखें एक अलग आकार है? एक डबल या एक लंबी लंबी है की तरह तो आठ और पूर्णांक चार है लेकिन चार में से एक है. तो आप क्या करना चाहते हैं एक बात याद is-- बस कैसे अपने ज्यादा है कि सूचक मूल्य वास्तव में परिवर्तन पर निर्भर करेगा सूचक का प्रकार यह है. इस के साथ अच्छा सब लोग? मैं इसे मिटा सकते हैं? हम अच्छा कर रहे हैं? बहुत बढ़िया. हम कुछ सूचक है तो यह जा रहा है that-- मैं हूँ be-- को यह एक पूर्णांक सूचक बनाने जा रही. यह इस भंडार. आप सूचक कहना थे प्लस एक, यह करने के लिए क्या हो रहा है यह अद्यतन करने के लिए जा रहा है एक पूर्णांक के आकार से यह कि क्योंकि सूचक का प्रकार यह है. सी के साथ, सब कुछ है बहुत सख्त और विनियमित. पूर्णांक सूचक द्वारा अद्यतन करने के लिए जा रहा है एक पूर्णांक ले जाएगा अंतरिक्ष की राशि. एक पूर्णांक चार बाइट्स है. तो क्या इस में बदल जाएगा? तुम सिर्फ इस पर चार जोड़ रहे हैं. अब अपने सूचक ठीक be-- होगा. तो अगर यह एक चार थी और हम सूचक किया प्लस एक, यह अब क्या होगा? यह हम नाटक started-- हैं यह 0x08 अभी started--. चलो अब इस एक था कि हम कहते हैं सूचक चार, और हम एक जोड़ा. यह क्या करने के लिए बदल जाएगा? एक चार कितने बाइट्स है? दर्शकों: एक. अध्यक्ष 1: एक. दर्शक: तो 0x09. अध्यक्ष 1: तो यह नौ होगा. तो बस कुछ याद करने के लिए. आप एक जोड़ने, बस जब यह नहीं है यह एक चार जब तक एक जोड़ने. यह कितने जोड़ने है , यह है कि टाइप बाइट्स जो हमारे पास क्यों है यहाँ इस समीकरण. तो यह है पूर्णांक बार आकार सूचक के प्रकार की. इसलिए हम यहां उदाहरण है. वाई, कि मूल्य, 0x4 को सौंपा गया था हम y किया प्लस एक बराबर होती है. क्या उस में है, क्या है एक्स में, परिवर्तन नहीं करता है. क्या परिवर्तन करता y में क्या है. y में संग्रहीत पते चार के द्वारा अद्यतन चार बाइट्स एक पूर्णांक में है क्योंकि वहाँ और यह एक पूर्णांक सूचक है. ठीक है. तो अब हम एक और व्यायाम है. तो सवाल यह मुद्रित होगा क्या है. किसी भी विचार? दर्शक: की संख्या खुश बिल्ली में पात्रों? अध्यक्ष 1: बिल्कुल. तो अपने तार के साथ पसंद है. हर कोई उस मिलता है? हम इसके माध्यम से चलना चाहते हैं? ठीक है, हाँ. इसलिए हम मैं here-- है क्या इतना अधिक इस तरह. मैं करने के लिए नहीं है [अश्राव्य] हास्यास्पद. तो हम यहाँ हमारी स्ट्रिंग, खुश बिल्ली है. लवली. हम कुछ काउंटर है कि हम का ट्रैक रख रहे हैं. इसलिए हम कुछ चार * सूचक है कि सिर्फ str के बराबर निर्धारित है. क्या कर रही है यह बात है कुछ सूचक बताए अपने स्ट्रिंग की शुरुआत करने के लिए. मुझे यकीन है, यह रूप व्याख्यान में उल्लेख किया गया था, हम यह तुम लोगों को दे दिया है स्ट्रिंग बुलाया डेटा प्रकार. लेकिन वास्तव में तार बस रहे हैं एक सरणी * चार तरह of--. यह अक्षर का एक गुच्छा के लिए एक संकेत है स्मृति में सन्निहित हैं. तो यह सिर्फ यह सेट किसी स्ट्रिंग के बराबर है जहां से पहचान अपनी पहली चरित्र है. तो यह सिर्फ कुछ बिंदु स्थापित कर रहा है स्ट्रिंग की शुरुआत के बराबर. हर कोई वहाँ अच्छा? कूल. तो यह हमारे सूचक dereferencing है. तो यह वास्तव में हो रहा है यहाँ हमें कुछ मूल्य दे, हमारे स्ट्रिंग में हम बात कर रहे हैं. और हम के रूप में लंबे समय के रूप में कह रहे हैं यह शून्य टर्मिनेटर नहीं है. तो आप जब तक जा रहा रखने स्ट्रिंग के अंत करने के लिए. एक एक करके अपने सूचक को अद्यतन करें. तो आर, यह वास्तव में एक से अद्यतन करेगा हर बार यह एक चार है क्योंकि, चार *. तो यह माध्यम से जाना जा रहा है. यह अद्यतन करने के लिए जा रहा है. इस चलाता पहली बार तो, यह ज में यहाँ होने जा रहा है. यह अद्यतन करने के लिए जा रहा है. यह एक एक हो जाएगा. यह इतना पर और आगे एक पी, वाई हो, और करेंगे. हम काउंटर अपडेट करेंगे. यह अंत तक पहुँच जाता है, यह बस यह हो गया है कि कैसे अब तक प्रिंट. हां. दर्शक: यह मायने रखता है तो सही रूप में अंतरिक्ष,? ठीक. अध्यक्ष 1: ऐसा लगता है. एक question-- कि है दर्शक: [अश्राव्य]. अध्यक्ष 1: कोई चिंता नहीं. यह मैं ऐसा. ठीक है, तो एक बात मैं समझ में है एक सरणी के साथ कि, आप भी एक के रूप में व्यवहार कर सकते हैं सूचक सरणियों बस रहे हैं क्योंकि स्मृति के निरंतर स्पॉट. तो क्या आप इसे उसी तरह से इलाज कर सकते हैं. तुम उन्हें हेरफेर कर सकते हैं संकेत के साथ भी है. तो बजाय इस में, कर मामला, अनुरूप बात होगा सरणी 0 1 के बराबर होती है. लेकिन एक ही तरीका है कि एक स्ट्रिंग निर्धारित किया जाता है जहां की शुरुआत से अपनी पहली चरित्र है, एक सरणी से निर्धारित होता है जहां अपना पहला तत्व है. जैसा कि हम जानते हैं, हम कर रहे हैं गारंटी, कि इन निरंतर होने जा रहे हैं स्मृति के ब्लॉक. यही कारण है कि हमें ऐसा करने के लिए अनुमति देता है. हम वे निरंतर कर रहे हैं पता स्मृति के ब्लॉक. इस मामले में तो, dereferencing से हमें बताता है कि सिर्फ सरणी, ठीक है, की शुरुआत करने के लिए जाना यहाँ है जो अपने सरणी,. तो आप एक के लिए यह बराबर सेट कर सकते हैं. और इस मामले में, जो कुछ भी आपके सरणी आप एक एक करके यह अद्यतन जब प्रकार है, कि बस को अद्यतन करने की तरह है यह अगले सूचकांक करने के लिए. आप क्या कर सकते हैं कि आप क्योंकि अपने सरणी में पता है क्या. तो यह कितना जानता है अपने सूचक द्वारा अद्यतन, यह इतना को अद्यतन करने के लिए क्या पता आप अगले स्लॉट में हो. तो यह सिर्फ एक अलग तरीका है की सरणी 0 1 के बराबर होती है, लेखन सरणी 1 2, सरणी के बराबर होती है ब्रैकेट 2 3 बराबर होती है. यह इस बारे में सोचने के लिए सिर्फ एक और तरीका है. वे लगातार कर रहे हैं क्योंकि स्मृति में ब्लॉक, आप या तो उन्हें उल्लेख कर सकते हैं सरणी notation-- से जो मैं व्यक्तिगत रूप से easier-- लगता है लेकिन हो सकता है आप यह हेरफेर करने की जरूरत है सख्ती से स्मृति पते से. और यह आपको लगता है कि ऐसा होगा जिस तरह से है. एक तरह की तरह के और अधिक तुम कर सकते हो शांत बात आप कर रहे हैं शायद नहीं कुछ बनाम वास्तव में लागू करने के लिए जा रहा है. मैं 61 में इसका इस्तेमाल करते हैं. तुम लोग शायद जरूरत नहीं है बहुत ज्यादा इसके बारे में चिंता करने के लिए. लेकिन अगर आप रुचि रखते हैं, 61 अगले साल ले. हम घर खंड लोगों में हैं. मुझे पता है, यह लंबे समय से है. गतिशील स्मृति Allocation-- इसलिए हम चाहते हैं कि किसी को पता बातों का हम के दौरान बात की थी जब एक साथ हमारे प्रथम खंड, हम एक स्वैप पर देखा समारोह जहां यह था हमारा मुख्य समारोह के दायरे से बाहर. और हम इन मूल्यों में गुजर गया कि प्रभावी ढंग से प्रतियां थे. और स्वैप एक बार समाप्त क्रियान्वित करने, यह सिर्फ एक ढेर छोड़ दिया है. याद रखें, हमारे पास एक स्वैप के लिए फ्रेम हो चुकी है. यह पत्ते और उन मूल्यों इसके साथ छोड़ दें. और वे चले गये थे. हम कुछ नहीं कर सका उनके साथ हम और उदास थे हम अपने मूल्यों को स्वैप नहीं कर सकते हैं. लेकिन मुझे लगता है कि आप का उल्लेख सी के साथ, के रूप में स्मृति पर सत्ता का एक बहुत कुछ है. तो आप क्या कर सकते हैं आप कर सकते है यहां ढेर पर बातें आवंटित कि जब तक वहाँ रहेंगे आप अन्यथा उन्हें बताओ. वे अच्छे बच्चों की तरह हो. वे वहाँ रहते हैं. वे छोड़ नहीं है. आप कर रहे हैं जब तक वे वहां रहेंगे जैसे, ठीक है, तुम दूर जा सकते हैं. ढेर पर बातें जबकि, who-- वे शरारती बच्चों की तरह हो. आप चाहते हैं कि जब वे सिर्फ दूर चलने देंगे वहाँ हो सकता है और उसके बाद वे चले गए हैं. आप उन्हें वापस नहीं मिल सकता है. तो हम करने जा रहे हैं is-- ढेर , malloc और मुक्त बारे में बात करते हैं, जो मुझे यकीन है कि तुम लोग हूँ व्याख्यान में के बारे में सुना है. और वह मूल रूप से एक रास्ता है बहुत लगातार डेटा है. तो आप डेटा रख सकते हैं आसपास के रूप में लंबे समय के रूप में आप चाहते. एम एच एम. दर्शक: आप ढेर को परिभाषित करने और ढेर कर सकते हैं? वे बातें करना स्थानों की तरह हैं? अध्यक्ष 1: तो वे कर रहे हैं मूल रूप से वे कर रहे हैं just-- हम सिर्फ स्मृति को देखें रास्ता. तो ढेर बस जहां स्थानों पर है स्मृति, गतिशील रूप से आवंटित किया गया है ढेर संदर्भित करता है, जबकि फ्रेम ढेर अधिक अधिक करने के लिए केंद्रीय हैं कि वास्तव में चलाए जा रहे कार्य करता है. आप वास्तव में नियंत्रण नहीं है. बड़ा अंतर यह है कि आप नियंत्रण नहीं है ढेर के ऊपर यदि आप चाहते हैं. आप ढेर पर कम नियंत्रण है. ढेर पर निर्भर करता है कार्यों चल रहे हैं, और व्यवस्था में जो वे कर रहे हैं चलाने के लिए, और चीजों को कैसे वापस आ रहे हैं. ढेर के साथ जबकि, के रूप में हम, आप कह सकते हैं, देख लेंगे ठीक है, मैं यह मान होना चाहता हूँ आसपास जब तक मैं नहीं तो तुम बताओ. आप इसे से छुटकारा पाने के लिए अनुमति नहीं है. आप यह ओवरराइड करने के लिए अनुमति नहीं है. आप इसे चारों ओर रखने के लिए जा रहे हैं जब तक मैं आपको बता के रूप में लिए. आप ढेर में मालिक हो जाओ आप अगर शायद stack-- जबकि की तरह अपना रास्ता finagle आप मालिक हो सकता है. लेकिन काफी नहीं है. और यह वास्तव में सिर्फ स्मृति है. यह सिर्फ अलग अलग तरीकों से है की स्मृति का जिक्र है. कूल. करने के लिए, कैसे उस के साथ तो अपनी स्मृति नियंत्रित करते हैं. यह malloc, साथ है जो आप का उपयोग करने के लिए ले जा रहे हैं. तो यह सिर्फ छोटी है स्मृति आवंटन के लिए. यही कारण है कि यह सब है. अन्य शांत की एक गुच्छा है अंत में alloc है कि काम करता है, और वे अलग अलग चीजों के लिए खड़े हो जाओ. आप भंडारण की जरूरत है तो जब कि जरूरत इसलिए अपने वर्तमान समारोह खत्म करने के लिए जब अपने वर्तमान कि समारोह, भाग जाता है आप अभी भी डेटा है कि आप यह से मिला, आप malloc उपयोग करना चाहते हैं. उस ढेर पर आरंभ करेंगे. और जैसा मैंने कहा और रखना तुम वहाँ यह रखता हूँ, कह रही है आप अन्यथा यह बताना तक, जो यहां महत्वपूर्ण बात है. तो एक बात नोटिस, और करने के लिए कि, आम तौर पर वास्तव में महत्वपूर्ण है इस sizeof कि है उपयोग करने के लिए अति उपयोगी है प्रकार पर निर्भर करता है क्योंकि मशीन की आप चला रहे हैं, यह अलग मात्रा हो सकती है यह लेता है कि स्मृति की. तो तुम हमेशा इतनी के आकार का उपयोग करना चाहते हैं आप निर्भर मशीन नहीं कर रहे हैं कि, इतना है कि अपने कोड होगा किसी भी मशीन पर चलाते हैं. और कहा कि सिर्फ एक हिस्सा है का अच्छा कोड लिखने. यह एक मशीन पर काम करता है, लेकिन नहीं दूसरों के किसी भी, अपने कार्यक्रम कैसे उपयोगी था? तो तुम हमेशा के लिए चाहते हैं बनाना और sizeof का उपयोग करें. दर्शक: तो पसंद है 10 इंच [अश्राव्य] का आकार? अध्यक्ष 1: यह 10 ints का आकार है. हाँ. तो ints के आकार में वापस आ जाएगी एक पूर्णांक कितना ले करता है. या चार के आकार, कैसे ज्यादा एक चार ले करता है. और फिर कितने ब्लॉक इस बात का है कि आप क्या चाहते हैं? इस मामले में तो, हम कुछ करना चाहते हैं कि हम 10 ints को स्टोर कर सकते हैं. और यह परवाह किए बिना काम करेंगे मशीन, की जो शांत है. तो कितने बाइट्स होगा कि वास्तव में आप दे? जल्दी गणित. दर्शक: 40. अध्यक्ष 1: 40. बिल्कुल सही. तो एक और बड़ी बात. सूचक या malloc अशक्त लौट सकते हैं. तो फिर, हमेशा के लिए जाँच यह शून्य लौट अगर देखना आप कोशिश करते हैं और इसके साथ कुछ भी करने से पहले. आप कोशिश करते हैं और भिन्नता हैं अब इस सूचक, यह सिर्फ segfault जा रहा है आप के पास गया और कोशिश की क्योंकि आप नहीं करना चाहिए जब शून्य को छूने के लिए. इसलिए हमेशा शून्य के लिए जाँच करें. फिर, सब आप कर सकते हैं. यह अशक्त वापसी हो सकती है. आप या तो कर रहे हैं अगर यह शून्य वापस कर देंगे अंतरिक्ष के बाहर, या जो भी कारण के लिए यह कुछ स्मृति बग में भाग गया. यह कभी-कभी सिर्फ शून्य देता. तो अगर आप अभी इसके लिए जांच है. यह सब इस स्लाइड कह रहा है. और फिर हम क्या है यहाँ मुफ्त के लिए एक फोन है. एक ही तरीका है कि में तो तुम अगर आप एक फाइल को बंद करना होगा एक फ़ाइल खोलने, आप अगर malloc स्मृति, आप आपको लगता है कि स्मृति को मुक्त करना होगा. और तुम लोग मिल जाएगा वास्तव में अच्छा सामान करना. और आप को चला सकते हैं एक कार्यक्रम नहीं है आप कभी स्मृति लीक कर रहे हैं देखते हैं. लेकिन आप स्मृति रिसाव नहीं करना चाहती. यह वास्तव में बुरा है. बस पंगा बातें. यह सिर्फ प्रोग्रामिंग की तरह क्या करना बुरा है डिजाइन दक्षता के लिए बुद्धिमान. लेकिन यह सिर्फ तरह भी है आपके कंप्यूटर के लिए बुरा. तो बस मुक्त बातें आप उन्हें malloc जब. तुम लोग यहां समानताएं देखते हैं. सुपर सरल. बस मुक्त और फिर जो कुछ भी अपने सूचक, जो भी नाम की अपने सूचक है, और यह आप के लिए यह मुक्त कराने का ख्याल रखना होगा. कूल. तो फिर हम यह कर सकते है. तो हम बस करने के लिए जा रहे हैं इस कार्यक्रम के माध्यम से चलना. और फिर तुम लोग कर रहे हैं. तो [अश्राव्य] सिर्फ मुख्य. इसलिए हम कुछ पूर्णांक * सूचक है. तो हम एक सूचक है कि ints आयोजित करने जा रहा है. और कितने ints यह पकड़ करने के लिए जा रहा है? बस एक. एक पूर्णांक के आकार. हम यह देखने के लिए जाँच सूचक है क्योंकि यह शून्य है हम कुछ नहीं करते कहना चाहता हूँ, है. यह बुरा है. इसलिए हम बाहर कुछ त्रुटि प्रिंट स्मृति, सबसे अधिक बार 1, लौटने तुम लोगों के रूप में किया जाता है. और फिर हम हम यहाँ है हमारे संकेतक भिन्नता. इसलिए कि हम स्टोर करने के लिए जा रहे हैं इसका मतलब हमारे पास किसी स्थान पर कुछ. इंटरनैशनल * सूचक, या malloc, रिटर्न यह इस अलग सेट जहां का पता आप के लिए स्मृति. तो यह मूल रूप से है आप आप अगर like-- दे का एक गुच्छा के बारे में सोचना एक पड़ोस में मकान तुम डाल करना चाहते हैं अपने फर्नीचर में, malloc ठीक है, जैसे आप मिलता है तीन घर जाना. और यह आपको देता है घर तीन के पते. तो यह ठीक है अब, इस सूचक भंडार एक पते, अपने घर के पते के भंडार. * पीटीआर साधन, ठीक है, मैं अपने घर पर हूँ. कूल. मैं कुछ पूर्णांक प्राप्त करने की जरूरत है. तो अगर आप किसी के लिए पूछ रहे हैं अब आप फर्नीचर देने के लिए. तो अगर आप कुछ पूर्णांक मिलता है. और यह अपने सूचक में डालता जहां यह की ओर इशारा कर रहा है. और फिर यह सिर्फ प्रिंट बाहर, आप जहाँ भी प्रवेश किया. और फिर, संदर्भ. तो यह है कि आप इस के लिए गया था की तरह है पता और आप वहाँ क्या था देखा. कूल? और फिर बेशक हम अपने सूचक मुक्त. अपने सूचक मुक्त करने के लिए मत भूलना. अशक्त के लिए जाँच करने के लिए मत भूलना. अपने सूचक मुक्त करने के लिए मत भूलना. आप आप से याद दो बातें हैं इस, या आपको याद रखना चाहिए कि. हां. दर्शक: [अश्राव्य] सामान ऐसे ही, चार * एस. हम उन कैसे मुक्त कभी नहीं आए? अध्यक्ष 1: हम्म? दर्शक: तार की तरह उन रहे हैं? आप तार कर रहे हैं कहा सिर्फ चार * एस की तरह, है ना? तो क्यों हम तार मुक्त नहीं है? अध्यक्ष 1: आप केवल करने के लिए मुक्त आप mallocing रहे हैं. दर्शक: ओह, आप mallocing रहे हैं. अध्यक्ष 1: तो malloc और नि: शुल्क दो बातें कर रहे हैं आप हमेशा एक साथ होना चाहिए. च खुला, च करीब दो बातें आप एक साथ होना चाहिए. दोनों उन मामलों में, शून्य के लिए जाँच करें. हां. दर्शक: तो मुफ्त बस है कुछ और की अनुमति बाद वहाँ जमा करने के लिए इस कार्यक्रम में इसका इस्तेमाल किया गया है? अध्यक्ष 1: यह सिर्फ कह रहा है, ठीक है, मैं इस के साथ काम कर रहा हूँ. आप इसे चारों ओर रखने की जरूरत नहीं है. अन्यथा आपके कंप्यूटर होगा बस कोशिश की तरह है और वहाँ रहते हैं. और फिर आप इसे चलाता can't-- बाद में स्मृति मुद्दों में. आप हमेशा क्योंकि यह मुक्त करना चाहते हैं यह ठीक है, मैं कर रहा हूँ, अपने कंप्यूटर बताता है स्मृति के इस स्थान के साथ किया. आप इसे वापस कर सकते हैं मेरे लिए बाद में उपयोग करने के लिए. कूल? हां. दर्शक: तो हम% घ इस्तेमाल किया बस एक डबल क्योंकि वह वापस आ रहा है, या क्यों [अश्राव्य] is--. दर्शक: आप% मैं उपयोग कर सकते हैं? अध्यक्ष 1: आप% मैं उपयोग कर सकते हैं. कोई अंतिम मिनट सवाल? आगे बढ़ें. दर्शक: मैं सिर्फ एक त्वरित सवाल है. तो पीटीआर चर, that's-- जैसे, पूर्णांक * पीटीआर = malloc के साथ, वह सिर्फ यह कह रहा है memory-- में एक जगह की ओर इशारा अध्यक्ष 1: आप [अश्राव्य] चाहते हैं? दर्शक: --that है आकार of-- नहीं, यह ठीक है. लेकिन यह सिर्फ एक जगह में की ओर इशारा कर रहा है सिर्फ चार बाइट्स की तरह है कि स्मृति. अध्यक्ष 1: ठीक है. पूर्णांक कहते हैं की तो आकार malloc, ठीक है, मैं दूर चला जा रहा हूँ, आप के लिए स्मृति के चार बाइट्स हैं. यह चार पाता है कि जब स्मृति की बाइट्स, यह आप पता वापस देता है यह शुरू होता है जहां की, और कि संग्रहीत क्या है सूचक, या पीटीआर में. अच्छा है. तुम लोग सबसे अधिक से अधिक कम उलझन देखो मैं सूचक के बारे में बात करते हैं जब लोग, इसलिए मैं अभी बहुत अच्छा महसूस कर रहा हूँ. ठीक है. हमेशा की तरह, आप लोग सब होना चाहिए अब तक अपने pset2 ग्रेड मिल गया. मैं जानता हूँ कि कुछ wonky किया गया है इसे कहते हैं जहां चीजें, मान्य नहीं फार्मूला या कुछ और. आप की, कि सभी हो रही है अपने ग्रेड मेरी तरफ मान्य हैं. तो मैं आपको भेज सकते हैं अपने ग्रेड के स्क्रीनशॉट. बस मुझे और साथ ही आप कर रहे हैं पता है किसी भी ग्रेड या कुछ लापता समझ बनाने के लिए प्रतीत नहीं होता. मेरे पास आओ. मैं आप की सुपर गर्व किया गया है लोग पहले से ही है, इसलिए इसे जारी रखो. और अपने सप्ताह का एक अच्छा बाकी है. मैं कुछ देखता हूँ मैं यकीन कार्यालय समय में आप की.