1 00:00:00,000 --> 00:00:05,300 2 00:00:05,300 --> 00:00:07,300 डौग लॉयड: आप शुरू के रूप में कार्यों के साथ काम कर रहा है, 3 00:00:07,300 --> 00:00:09,966 एक और बात बनने जा रहा है समझने के लिए वास्तव में महत्वपूर्ण है, 4 00:00:09,966 --> 00:00:12,380 जो चर गुंजाइश की अवधारणा है। 5 00:00:12,380 --> 00:00:14,490 तो गुंजाइश है एक एक चर की विशेषता 6 00:00:14,490 --> 00:00:18,860 कि जो कार्य से परिभाषित करता है उस चर पहुँचा जा सकता है। 7 00:00:18,860 --> 00:00:24,595 >> सी में दो प्राथमिक scopes कर रहे हैं, स्थानीय चर और वैश्विक चर। 8 00:00:24,595 --> 00:00:27,830 अब, स्थानीय चर कर सकते हैं केवल कार्यों के भीतर पहुँचा जा 9 00:00:27,830 --> 00:00:29,045 जिसमें वे पैदा कर रहे हैं। 10 00:00:29,045 --> 00:00:32,170 वे हर दूसरे से पहुँचा नहीं जा सकता अपने कार्यक्रम में मौजूद है कि समारोह, 11 00:00:32,170 --> 00:00:34,184 में केवल समारोह जो इसे बनाया गया था। 12 00:00:34,184 --> 00:00:36,350 पर वैश्विक चर, दूसरी ओर, पहुँचा जा सकता है 13 00:00:36,350 --> 00:00:37,719 कार्यक्रम में किसी भी समारोह से। 14 00:00:37,719 --> 00:00:40,260 और उस के लिए कारण है वे अंदर बनाया नहीं कर रहे हैं, क्योंकि 15 00:00:40,260 --> 00:00:41,441 किसी विशेष समारोह का। 16 00:00:41,441 --> 00:00:43,690 हम में से बाहर उन्हें घोषणा काम करता है, सभी के लिए जो 17 00:00:43,690 --> 00:00:48,940 हर समारोह जानता है, जहां इसका मतलब है कि यह है और उपयोग और इसे हेरफेर कर सकते हैं। 18 00:00:48,940 --> 00:00:52,010 >> अब तक पाठ्यक्रम में आप बहुत सुंदर है बहुत विशेष रूप से काम कर रहा 19 00:00:52,010 --> 00:00:54,280 स्थानीय चर के साथ। 20 00:00:54,280 --> 00:00:58,320 यहाँ एक का एक उदाहरण बहुत, बहुत है सरल मुख्य समारोह और एक बहुत ही सरल 21 00:00:58,320 --> 00:01:00,680 हम लिखा है कि अतिरिक्त कार्य करते हैं। 22 00:01:00,680 --> 00:01:03,180 इस मामले में, x जो मैं सिर्फ हरे रंग की है 23 00:01:03,180 --> 00:01:07,400 इलाके को उजागर करने के लिए या उस चर की गुंजाइश है, 24 00:01:07,400 --> 00:01:09,240 ट्रिपल समारोह के लिए स्थानीय है। 25 00:01:09,240 --> 00:01:12,300 मुख्य सब पर एक्स का उल्लेख नहीं कर सकते हैं। 26 00:01:12,300 --> 00:01:14,259 यह है कि यह क्या है पता नहीं है। 27 00:01:14,259 --> 00:01:17,050 कोई अन्य समारोह, वास्तव में, अगर हम यहाँ में अतिरिक्त कार्यों के लिए किया था 28 00:01:17,050 --> 00:01:19,360 एक्स का उल्लेख सकता है। 29 00:01:19,360 --> 00:01:23,520 >> इसी तरह, मैं जो परिणाम नीले रंग का है, केवल मुख्य करने के लिए स्थानीय है। 30 00:01:23,520 --> 00:01:26,980 केवल मुख्य जानता है कि क्या चर परिणाम है। 31 00:01:26,980 --> 00:01:30,010 ट्रिपल इसका इस्तेमाल नहीं कर सकते हैं। 32 00:01:30,010 --> 00:01:32,580 >> अब जैसा कि मैंने कहा, वैश्विक चर मौजूद है। 33 00:01:32,580 --> 00:01:35,575 आपको लगता है कि चर घोषित हैं किसी भी समारोह के बाहर, 34 00:01:35,575 --> 00:01:38,290 में कार्यों के सभी कार्यक्रम में यह उल्लेख कर सकते हैं। 35 00:01:38,290 --> 00:01:44,010 तो इस मामले में मैं में प्रकाश डाला है एक वैश्विक चर घोषणा हरे। 36 00:01:44,010 --> 00:01:45,830 इस मामले में, चर जा रहा घोषित 37 00:01:45,830 --> 00:01:48,720 बस के लिए, वैश्विक कहा जाता है इसके बारे में बहुत स्पष्ट है। 38 00:01:48,720 --> 00:01:49,720 यह प्रकार नाव की है। 39 00:01:49,720 --> 00:01:52,940 और मुझे लगता है कि यह मूल्य 0.5050 आवंटित। 40 00:01:52,940 --> 00:01:58,080 >> आप मुख्य में और में नोटिस हूँ कि ट्रिपल, मैं वैश्विक का उल्लेख करने में सक्षम हूँ। 41 00:01:58,080 --> 00:02:03,480 और वास्तव में, मैं इस कार्यक्रम के माध्यम से जाना है, तो , मुख्य पहली कॉल ट्रिपल संकेत के रूप में, 42 00:02:03,480 --> 00:02:10,440 3 से वैश्विक ट्रिपल पलता, जो 1.5-कुछ करने के लिए अपने मूल्य निर्धारित करता है, 43 00:02:10,440 --> 00:02:16,080 1.51 या ऐसा कुछ है, और तब मुख्य भी मूल्य बाहर प्रिंट 44 00:02:16,080 --> 00:02:16,620 के वैश्विक। 45 00:02:16,620 --> 00:02:24,424 0.5050 बाहर मुद्रित नहीं होगा तो मुख्य, यह , 1.51 ग्लोबल टाइम्स 3 बाहर प्रिंट होगा। 46 00:02:24,424 --> 00:02:27,340 तो आप सावधान रहना है जब मिल गया है आप वैश्विक चर के साथ काम कर रहे हैं। 47 00:02:27,340 --> 00:02:30,260 वे में बहुत लचीला कर रहे हैं जानकारी पारित करने में सक्षम किया जा रहा है 48 00:02:30,260 --> 00:02:32,650 चारों ओर है, ताकि हर समारोह में इसका इस्तेमाल कर सकते हैं, 49 00:02:32,650 --> 00:02:34,580 यह भी कुछ हो सकता है खतरनाक परिणामों 50 00:02:34,580 --> 00:02:38,770 एक समारोह में परिवर्तन करता है, तो एक चर के मूल्य 51 00:02:38,770 --> 00:02:42,360 जैसा कि आप उम्मीद से पहले इसे परिवर्तित करने की। 52 00:02:42,360 --> 00:02:44,200 >> क्यों इस तरह के अंतर फर्क पड़ता है? 53 00:02:44,200 --> 00:02:48,070 हम क्यों परवाह करते हैं कुछ चर है कि क्या स्थानीय कर रहे हैं और दूसरों को वैश्विक हैं? 54 00:02:48,070 --> 00:02:53,880 खैर, सबसे अधिक भाग के लिए, स्थानीय चर सी में मूल्य द्वारा पारित क्या कहा जाता है कर रहे हैं 55 00:02:53,880 --> 00:02:56,087 हम एक समारोह फोन करना है। 56 00:02:56,087 --> 00:02:56,920 इसका क्या मतलब है? 57 00:02:56,920 --> 00:03:00,880 >> खैर, एक चर पारित हो जाता है जब मूल्य, कॉल प्राप्त करने वाला, द्वारा जो 58 00:03:00,880 --> 00:03:04,350 समारोह कहने का एक और तरीका है उस चर प्राप्त कर रहा है कि 59 00:03:04,350 --> 00:03:08,465 एक निवेश के रूप में पारित हो जाता है, यह वास्तव में उस चर में ही प्राप्त नहीं है। 60 00:03:08,465 --> 00:03:12,490 यह अपने आप ही प्राप्त करता है यह की नकल के साथ काम करने के लिए। 61 00:03:12,490 --> 00:03:14,350 यह एक बहुत महत्वपूर्ण अंतर है। 62 00:03:14,350 --> 00:03:18,250 हम सिर्फ एक दूसरे पहले देखा था वैश्विक चर के साथ कि, 63 00:03:18,250 --> 00:03:23,240 हम वैश्विक हेरफेर यदि एक समारोह में चर, प्रभाव 64 00:03:23,240 --> 00:03:26,390 उस में एक समारोह में किया जाता है हर दूसरे समारोह के माध्यम से। 65 00:03:26,390 --> 00:03:28,920 >> लेकिन स्थानीय चर के साथ, यह सच नहीं है। 66 00:03:28,920 --> 00:03:32,060 प्रत्येक समारोह जब यह इनपुट के रूप में चर प्राप्त करता है 67 00:03:32,060 --> 00:03:36,367 उन चर की प्रतियां प्राप्त करते हैं, नहीं चर खुद को। 68 00:03:36,367 --> 00:03:37,825 तो यह है कि के पक्ष प्रभाव क्या है? 69 00:03:37,825 --> 00:03:40,450 इसका मतलब है कि चर में फोन करने वाले, समारोह है कि 70 00:03:40,450 --> 00:03:45,600 समारोह कॉल कर रहा है, है अपरिवर्तित आप इसे ओवरराइड जब तक। 71 00:03:45,600 --> 00:03:50,420 >> उदाहरण के लिए, इस कोड में foo बिल्कुल नहीं बदला है। 72 00:03:50,420 --> 00:03:55,450 इंट foo 4 के बराबर होती है, ट्रिपल फोन foo की, ट्रिपल के अंदर, 73 00:03:55,450 --> 00:03:58,850 हम उस foo होगा उम्मीद करेंगे 3 से गुणा और वापस आ जाना, 74 00:03:58,850 --> 00:04:01,450 लेकिन वास्तव में कोई प्रभाव नहीं है। 75 00:04:01,450 --> 00:04:03,460 >> यहाँ हालांकि, एक बहुत ही सूक्ष्म अंतर। 76 00:04:03,460 --> 00:04:06,520 यह हम चाहते असर करता है। 77 00:04:06,520 --> 00:04:07,730 आप क्यों देखते हैं? 78 00:04:07,730 --> 00:04:11,500 हम मुख्य इस समय में Foo अधिभावी रहे हैं। 79 00:04:11,500 --> 00:04:16,899 >> तो पूर्णांक foo 4, foo के बराबर ट्रिपल Foo, हम उस फोन कर, 80 00:04:16,899 --> 00:04:21,680 ट्रिपल अपनी खुद की नकल हो जाता है Foo, 4 की अपनी खुद की नकल की। 81 00:04:21,680 --> 00:04:27,340 यह जो कुछ भी 4 गुना 3, या वापसी का कहना है चर बार 3 में पारित हो जाता है। 82 00:04:27,340 --> 00:04:32,109 और फिर हम वापसी आवंटित ट्रिपल का मूल्य फिर से foo करने के लिए। 83 00:04:32,109 --> 00:04:33,650 तो यह वास्तव में foo के ऊपर लिख होगा। 84 00:04:33,650 --> 00:04:35,816 यह करने के लिए एक ही रास्ता है स्थानीय चर के साथ इस। 85 00:04:35,816 --> 00:04:38,120 तो अब हम एक और जोड़ने अगर यहाँ कोड की लाइन 86 00:04:38,120 --> 00:04:40,870 मुख्य का अंत करने के लिए पर , foo के मूल्य प्रिंट आउट 87 00:04:40,870 --> 00:04:45,030 यह वास्तव में 12 से बाहर प्रिंट होगा। 88 00:04:45,030 --> 00:04:48,600 >> चर गुंजाइश आम तौर पर है एक समस्या की बहुत ज्यादा नहीं 89 00:04:48,600 --> 00:04:51,190 आप सभी का नाम है, तो आपके चर अलग अलग चीजें हैं। 90 00:04:51,190 --> 00:04:54,920 लेकिन यह बुरा की तरह मिल सकता है एक ही चर नाम यदि 91 00:04:54,920 --> 00:04:58,820 कई कार्यों में प्रकट होता है, जो बहुत कुछ नहीं होगा। 92 00:04:58,820 --> 00:05:02,130 क्या आपने कभी सोचा में काम करते हैं असली दुनिया जहां 93 00:05:02,130 --> 00:05:06,080 आप सहयोगात्मक पर काम कर रहे हैं अलग-अलग टीमों में कार्यक्रमों और लोग 94 00:05:06,080 --> 00:05:11,000 एक ही लिखने के लिए एक साथ काम कर रहे हैं कार्यक्रम या कार्यक्रमों के एक ही सेट, 95 00:05:11,000 --> 00:05:13,900 वे अक्सर चर का पुन: उपयोग करेंगे नाम, विशेष रूप से आम लोगों को 96 00:05:13,900 --> 00:05:18,020 इतने पर एक्स, वाई, मैं, जम्मू, और पसंद है। 97 00:05:18,020 --> 00:05:20,370 >> लेकिन जब चर है एक ही नाम, गुंजाइश मुद्दों 98 00:05:20,370 --> 00:05:23,080 थोड़ा पेचीदा मामला पार्स करने के लिए मिल सकता है। 99 00:05:23,080 --> 00:05:26,790 उदाहरण के लिए, क्या तुम जानते हो क्या बाहर मुद्रित किया जाएगा 100 00:05:26,790 --> 00:05:30,190 इस विशेष कार्यक्रम के अंत में? 101 00:05:30,190 --> 00:05:31,280 एक मिनट ले। 102 00:05:31,280 --> 00:05:33,382 वीडियो रोकें और पढ़ इस कार्यक्रम के माध्यम से। 103 00:05:33,382 --> 00:05:35,590 आप शीर्ष हम पर देख सकते हैं एक समारोह में घोषणा की है 104 00:05:35,590 --> 00:05:37,350 वेतन वृद्धि नामक एक समारोह के लिए। 105 00:05:37,350 --> 00:05:40,800 यही कारण है कि समारोह में एक ही लेता है पैरामीटर, हम एक्स फोन जो एक पूर्णांक। 106 00:05:40,800 --> 00:05:42,610 और यह एक पूर्णांक outputs। 107 00:05:42,610 --> 00:05:44,820 यही कारण है कि शुरुआत में वापसी प्रकार है। 108 00:05:44,820 --> 00:05:48,140 >> तो फिर हम लाइनों के मुख्य, एक जोड़ी है मुख्य में कोड है, जो की पिछले की 109 00:05:48,140 --> 00:05:49,250 एक प्रिंट बयान है। 110 00:05:49,250 --> 00:05:51,140 और कहा कि यहाँ सवाल है, याद है। 111 00:05:51,140 --> 00:05:54,240 क्या वास्तव में होने जा रहा है इस समारोह के अंत में मुद्रित? 112 00:05:54,240 --> 00:05:58,110 और फिर हम वास्तव में है नीचे दिए गए वेतन वृद्धि की परिभाषा। 113 00:05:58,110 --> 00:06:01,760 >> तो के माध्यम से कदम, एक मिनट ले कोड, चीजों को बाहर का पता लगा। 114 00:06:01,760 --> 00:06:08,100 आप पर मुद्रित किया जाएगा क्या जानते हैं इस विशेष कार्यक्रम के अंत में? 115 00:06:08,100 --> 00:06:08,600 >> ठीक है। 116 00:06:08,600 --> 00:06:11,433 उम्मीद है, आप कुछ ही सेकंड में ले लिया है कोशिश करते हैं और यह एक बाहर पार्स करने के लिए। 117 00:06:11,433 --> 00:06:13,370 आओ हम इसे साथ साथ करें। 118 00:06:13,370 --> 00:06:16,022 >> तो मैं वेतन वृद्धि के बाहर पार कर लिया है वहाँ शीर्ष पर घोषणा। 119 00:06:16,022 --> 00:06:17,230 यह एक व्याकुलता की तरह था। 120 00:06:17,230 --> 00:06:18,570 यह अपने आप ही चर नहीं है। 121 00:06:18,570 --> 00:06:19,879 यह अपने आप ही गुंजाइश नहीं है। 122 00:06:19,879 --> 00:06:21,920 यह सिर्फ एक समारोह घोषणा, इसलिए उद्देश्यों के लिए 123 00:06:21,920 --> 00:06:24,330 की क्या बाहर पार्स करने के लिए कोशिश कर रहा है इस कार्यक्रम में हो रहा है, 124 00:06:24,330 --> 00:06:26,660 हम के रूप में अच्छी तरह से सिर्फ इसे से बचने कर सकते हैं। 125 00:06:26,660 --> 00:06:29,560 >> अब हम इस मामले में है, इस समस्या मुश्किल है कारण 126 00:06:29,560 --> 00:06:34,030 हम में स्थानीय चर रहा है, क्योंकि मुख्य और वेतन वृद्धि, दोनों जिनमें से प्रत्येक की 127 00:06:34,030 --> 00:06:35,090 कहा जाता है एक्स। 128 00:06:35,090 --> 00:06:39,830 और निश्चित रूप से इस मुद्दे की जड़ है एक्स परिवर्तित हो जाता है जो बाहर suss करने की कोशिश 129 00:06:39,830 --> 00:06:41,890 और यह कैसे बदल प्राप्त करता है। 130 00:06:41,890 --> 00:06:46,900 इसलिए मैं हर उदाहरण रंग है एक्स के मुख्य लाल करने के लिए स्थानीय है कि। 131 00:06:46,900 --> 00:06:52,040 और मैं हर उदाहरण के रंग है एक्स कि नीले रंग की वेतन वृद्धि के लिए स्थानीय है। 132 00:06:52,040 --> 00:06:55,220 >> कि तीसरी लाइन में सूचना मुख्य रूप से, Y वेतन वृद्धि के बराबर होती है 133 00:06:55,220 --> 00:07:00,800 एक्स, कि वेतन वृद्धि नहीं किया जा रहा है पारित कर के मुख्य एक्स, या लाल एक्स। 134 00:07:00,800 --> 00:07:03,320 यह इसकी एक प्रति पारित कर दिया हो रही है। 135 00:07:03,320 --> 00:07:06,987 और यह केवल के साथ काम करने के लिए जा रहा है यह की है कि नकल, नीले एक्स। 136 00:07:06,987 --> 00:07:08,820 आप गणितीय रहे हैं झुका, तुम हो सकता है 137 00:07:08,820 --> 00:07:14,230 बजाय एक्स उप के रूप में इस बारे में सोचा है वेतन वृद्धि के लिए मुख्य और एक्स उप मैं के लिए मी। 138 00:07:14,230 --> 00:07:15,700 लेकिन यह एक ही विचार है। 139 00:07:15,700 --> 00:07:18,999 एक्स उप मीटर, या एक्स के लाल पिछली स्लाइड में, 140 00:07:18,999 --> 00:07:21,790 local-- हैं कि चर रहे हैं कि बजाय x का उदाहरण है 141 00:07:21,790 --> 00:07:26,900 मुख्य करने के लिए स्थानीय है, और एक्स उप मैं, या पिछली स्लाइड में नीले चर, 142 00:07:26,900 --> 00:07:30,760 एक्स के उदाहरण हैं कि वेतन वृद्धि के लिए स्थानीय कर रहे हैं। 143 00:07:30,760 --> 00:07:36,220 >> इसलिए, जब आप यह पता लगाने में सक्षम थे क्या अंत में मुद्रित इस समारोह? 144 00:07:36,220 --> 00:07:39,420 मैं डौग लॉयड हूँ, और इस CS50 है। 145 00:07:39,420 --> 00:07:41,542