>> [संगीत बजाना]
>> डौग लॉयड: ठीक है, तो चलो कमांड लाइन तर्क के बारे में बात करते हैं।
तो, अब तक पाठ्यक्रम में सुंदर अपने कार्यक्रमों की ज्यादा सभी
शायद शुरू कर दिया है है- int मुख्य शून्य की तरह।
हम इकट्ठा किया गया है उपयोगकर्ता इनपुट हम इसे ज़रूरत है
जैसे हमारे कार्यक्रमों में मारियो कार्यक्रम, उदाहरण के लिए,
में कार्यक्रम के चलते।
हम संशोधित करने की जरूरत नहीं है मुख्य की घोषणा
क्योंकि बजाय मुख्य हम के अंदर बस आप पूर्णांक प्राप्त करने के लिए फोन कर सकते हैं, कहते हैं।
कैसे बड़े आप पिरामिड बनना चाहते हो?
या आप इसे पाने के लिए फोन कर सकते हैं कितना बदल float--
उपयोगकर्ता के लिए मैं उत्पादन करना चाहिए?
>> एक और तरीका है, हालांकि, और हम अपने उपयोगकर्ताओं चाहते हैं
प्रदान करने के लिए सक्षम होने के लिए हमारे कार्यक्रम के लिए डेटा
इसके बजाय, जबकि के क्रम में कार्यक्रम चल रहा है,
एक सूक्ष्म भेद लेकिन कभी कभी एक बहुत ही उपयोगी एक,
हम मुख्य घोषित करने का एक नया रूप की जरूरत है।
हम चाहते हैं, तो int मुख्य शून्य उपयोग नहीं कर सकते कमांड लाइन पर अन्य डेटा इकट्ठा
उपयोगकर्ता कार्यक्रम चलाता है, इसलिए कमांड लाइन तर्क।
>> इन कमांड लाइन इकट्ठा करने के लिए उपयोगकर्ता से तर्क,
की अपनी घोषणा बदलने है- पूर्णांक की तरह लग रहे करने के लिए मुख्य
मुख्य, खुले कोष्ठक, int argc, अल्पविराम, स्ट्रिंग argv, वर्ग कोष्ठक,
और फिर घुंघराले ब्रेस खुला।
तो यह है कि पहले से ही मतलब क्या है?
खैर, हम दो मापदंडों में से गुजर रहे हैं, मुख्य करने के लिए या तर्क, या आदानों।
एक, एक पूर्णांक बुलाया argc, और अन्य क्या है?
यह ठीक है, तारों की एक सरणी है?
हम उस वर्ग कोष्ठक संकेतन देखते हैं।
यह तारों की एक सरणी है।
यह एक व्यक्ति स्ट्रिंग नहीं है, यह तारों की एक सरणी है।
और इन दो तर्क, argc और argv, क्या डेटा उपयोगकर्ता को पता करने के लिए सक्षम
कमांड लाइन पर प्रदान की गई है और कितनी बातें वे
कमांड लाइन पर प्रदान की है।
साथ काम करने के लिए बहुत उपयोगी बातें।
>> Argc, तर्क गिनती के लिए खड़ा है और आप जिस तरह से पता होना चाहिए,
आप argc कह सकते हैं कि आप यह चाहते हैं जो भी हो।
आप जो आप चाहते थे argv कॉल कर सकते हैं।
ये सिर्फ पारंपरिक नाम हैं हम them-- तर्क गिनती के लिए उपयोग करने वाले,
और हम एक दूसरे में देखेंगे के रूप में, तर्क वेक्टर, argv।
लेकिन अगर आप उन्हें फोन करने की जरूरत नहीं है आप नहीं करना चाहते हैं, तो argc और argv,
लेकिन पारंपरिक, कि हम क्या करते हैं।
>> तो वैसे भी, argc, तर्क गिनती।
यह एक पूर्णांक प्रकार चर है और इसलिए, के रूप में हम दो बातें हैं, अगर आप उम्मीद कर सकते हैं
हम खोज करने जा रहे हैं कि इन टाइप कर रहे हैं क्या बाहर
और कितना सामान उपयोगकर्ता टाइप, argc है
कितना हमें बताने के लिए जा रहा टाइप किए गए उपयोगकर्ता सामान।
यह आप की एक संख्या देता है तो कमांड लाइन तर्क उपयोगकर्ता
कार्यक्रम मार डाला गया था जब टाइप।
अपने कार्यक्रम है तो अगर डॉट लालची स्लेश चलाने के लिए,
और अपने लालची के अंदर अपने मुख्य समारोह में कार्यक्रम
घोषणा int मुख्य int argc है, स्ट्रिंग तो, वर्ग कोष्ठक argv
उस मामले में argc एक है।
अब हम नहीं करते नोटिस कितनी बातें गिनती
उपयोगकर्ता प्रोग्राम के नाम के बाद टाइप।
कार्यक्रम का नाम ही मायने रखता है एक कमांड लाइन तर्क के रूप में।
>> इतने में, लालची स्लेश डॉट यह मामला है, argc एक है।
उपयोगकर्ता स्लेश लालची 1024 CS50 टाइप उस मामले में argc कमांड लाइन पर
तीन होगा।
और हम जिस तरह से, क्योंकि यह पता कि तारों के बीच विभाजन
यह है कि क्या पता लगाया है, एक स्थान, या एक टैब है,
या उन दोनों के बीच ऐसा कुछ।
तो सफेद अंतरिक्ष के किसी भी राशि, तथाकथित, मूल्यों के बीच कमांड लाइन टाइप किया
देखते हैं कि कितने इंगित करता है।
इतना लालची अंतरिक्ष 1024 अंतरिक्ष स्लेश डॉट CS50, argc, उस मामले में, तीन है।
>> Argv तर्क वेक्टर है।
वेक्टर, जिस तरह से, बस है एक सरणी के लिए एक और शब्द है,
और यह एक सरणी है तार कि संग्रहीत करता है।
है जो तत्व प्रति एक स्ट्रिंग, तार कि उपयोगकर्ता वास्तव में
कमांड लाइन पर टाइप किया कार्यक्रम मार डाला गया था।
अब, जैसा भी मामला है किसी सरणी के साथ, आप अगर
के बारे में हमारी चर्चा से याद करते हैं सरणियों, argv के पहले तत्व
हमेशा पाया जा रहा है argv वर्ग कोष्ठक शून्य पर।
यही कारण है कि पहले सूचकांक है argv सरणी की।
तो यह है कि will-- और वास्तव में, कि इच्छा हमेशा प्रोग्राम का नाम हो सकता है,
हमेशा पर स्थित हो जाएगा argv वर्ग कोष्ठक शून्य।
>> argv के अंतिम तत्व हमेशा पाया जाता है argv वर्ग कोष्ठक argc शून्य से एक पर।
आप क्यों देखते हैं?
कितने तत्वों याद रखें इस सरणी में मौजूद हैं।
खैर, हम यह है that-- जानते तत्वों की argc संख्या।
उपयोगकर्ता पर तीन बातें टाइप कमांड लाइन, argc तीन है।
लेकिन क्योंकि ग में, जब हम काम कर रहे हैं सरणियों के साथ, सरणी के प्रत्येक तत्व,
या यों कहें सूचकांकों सरणी, शून्य से शुरू।
हम में तीन तत्व है, तो हमारे सरणी, हम argv शून्य पर एक तत्व है
argv एक पर एक तत्व है, argv दो पर और एक तत्व।
Argv में कोई तत्व नहीं है तीन, और आकार तीन में से एक सरणी।
तो यह है कि यही कारण है कि पिछले है argv का तत्व हमेशा कर सकते हैं
argv वर्ग में पाया जा कोष्ठक argc शून्य से एक।
>> तो चलो उपयोगकर्ता कार्यान्वित की कल्पना करते हैं follows-- के रूप में लालची कार्यक्रम
वे कमांड लाइन डॉट में टाइप करते हैं लालची अंतरिक्ष 1024 अंतरिक्ष CS50 स्लेश
और जो भी कारण के लिए हम है पहले से ही हमारे लालची कार्यक्रम तैयार
जानते हैं और इन के साथ काम करने के लिए कमांड लाइन तर्क।
हम काम किया है जब हम पहले से नहीं था लालची समस्या के लिए उस पर,
लेकिन हम अब संशोधित है कहते हैं यह इतना है कि हम इस प्रक्रिया को करना
किसी तरह से कमांड लाइन तर्क।
इस मामले में, शून्य argv डॉट स्लेश लालची है।
Argv एक क्या है?
खैर, यह सही है, 1024 है?
यह 1024 है, लेकिन यहां एक है वास्तव में महत्वपूर्ण distinction--
आप argv के डेटा प्रकार याद है?
>> यह ठीक है, तार संग्रहीत करता है?
लेकिन यह 1024 की तरह लग रहा है एक पूर्णांक मान है।
यह एक बहुत महत्वपूर्ण है भेद, और वास्तव में है
कुछ बनने जा रहा है कि आप बाद में समस्याओं में मुठभेड़ हो सकता है।
Argv में सब कुछ है एक स्ट्रिंग के रूप में संग्रहीत।
तो argv एक की सामग्री रहे हैं स्ट्रिंग एक, शून्य, दो, चार,
उन चार वर्णों से मिलकर।
यह उपयोगकर्ता के द्वारा लिखा गया है, तो के रूप में है एक, शून्य, दो, चार
व्यक्तिगत पत्रों या पात्रों के रूप में।
यह पूर्णांक 1024 नहीं है और तो आप सीधे नहीं कर सकते
पूर्णांक 1,000 यह कह कर साथ काम करते हैं, या बल्कि int x argv एक शून्य से 24 के बराबर होती है।
>> Intuitively, तो आप उस के बारे में सोच सकता है , ठीक है, अच्छी तरह से यह 1024 शून्य से 24 है, के रूप में
इसलिए x 1000 के बराबर है।
लेकिन वास्तव में, कि, मामला नहीं है argv एक एक स्ट्रिंग है।
स्ट्रिंग 1024।
अब हो सकता है कि एक समारोह है पूर्णांकों को तार परिवर्तित करने के लिए इस्तेमाल किया।
मैं तुम्हारे लिए यह खराब नहीं होगा अब, लेकिन मैं Zamyla यकीन
में इसके बारे में बताने के लिए खुश हो जाएगा एक भविष्य की समस्या के लिए पूर्वाभ्यास।
लेकिन अगर आप भी पा सकते हैं समस्याओं like-- बहाना
मुझे, कार्यों कि होगा संदर्भ 50 में ऐसा करते हैं,
आप संदर्भ गाइड करने के लिए जाना है, तो आप एक समारोह में पा सकते हैं
आप के लिए यह रूपांतरण कर देगा।
लेकिन फिर, पूर्वाभ्यास में एक भविष्य की समस्या के लिए,
Zamyla करने में खुशी होगी क्या समारोह आपको बता
यह कि परिवर्तित कर देंगे है पूर्णांक 1024 स्ट्रिंग 1024।
>> ठीक है, तो पर घूम रहा है।
हम अपने argv शून्य को कवर किया है हम एक argv कवर किया है।
क्या argv दो में क्या है?
CS50।
यही कारण है कि एक शायद है बहुत स्पष्ट।
क्या argv तीन में क्या है?
खैर फिर, हम वास्तव में नहीं पता है, है ना?
हम आकार तीन में से एक सरणी है कि कितने तत्वों उपयोगकर्ता है
कमांड लाइन पर टाइप किया, इसलिए हम तीन argv करने के लिए जाना है,
हम अब अतिक्रमण कर रहे हैं हमारे सरणी की सीमा।
संकलक, हमें ऐसा करने देगा कोई सहज ज्ञान युक्त समस्या यह है कि वहाँ के साथ है,
लेकिन वास्तव में करने के मामले में क्या हो रहा है ऐसा करने के लिए, हम वास्तव में नहीं पता है।
यह क्या है पर निर्भर करता है स्मृति जहां पर स्थित
argv तीन होने की उम्मीद होगी।
और इसलिए हम खत्म हो सकता है दूर टैक्स मुक्त हो रही है।
अधिक संभावना नहीं है, खासकर जब विरोध के रूप में आप argv के साथ काम कर रहे हैं
किसी भी अन्य सरणी के लिए कि, हमारे कार्यक्रम में है
हम शायद पीड़ित करने के लिए जा रहे हैं विखंडन दोष। इसलिए फिर से,
सीमा का अतिक्रमण करने के लिए यकीन नहीं किया जा अपने सरणियों की, विशेष रूप से argv,
के अपने उच्च डिग्री दी अपने कार्यक्रमों में महत्व।
>> मैं डौग लॉयड हूँ।
इस CS50 है।