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