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