C++ में फंक्शन पॉइंटर्स का उपयोग कैसे करें

C Mem Phanksana Po Intarsa Ka Upayoga Kaise Karem



सी ++ में, फ़ंक्शन पॉइंटर्स डेटा के रूप में कार्यों में हेरफेर करने के लिए एक शक्तिशाली उपकरण प्रदान करें। ए समारोह सूचक एक वेरिएबल है जो फ़ंक्शन के मेमोरी एड्रेस को होल्ड करता है। यह एक मानक सूचक के समान कार्य करता है सिवाय इसके कि यह डेटा ऑब्जेक्ट के पते के बजाय किसी फ़ंक्शन का पता सहेजता है। इसे ध्यान में रखना महत्वपूर्ण है फ़ंक्शन पॉइंटर्स C++ में बस एक अन्य प्रकार के वेरिएबल हैं, और इस तरह, उन्हें घोषित किया जाना चाहिए और अन्य वेरिएबल्स के समान ही इनिशियलाइज़ किया जाना चाहिए।

एक फंक्शन पॉइंटर को परिभाषित करना

एक घोषित करने के लिए वाक्य रचना समारोह सूचक इस प्रकार है:







वापसी प्रकार ( * func_ptr_name ) ( पैरामीटर_सूची ) ;



यहाँ, func_ptr_name का नाम है समारोह सूचक , वापसी प्रकार फ़ंक्शन का रिटर्न प्रकार है, और पैरामीटर_सूची फ़ंक्शन द्वारा लिए जाने वाले पैरामीटर की सूची है।



सी ++ में फ़ंक्शन पॉइंटर का उपयोग करने के लिए यहां एक कोड उदाहरण दिया गया है।





#शामिल
# शामिल
नेमस्पेस एसटीडी का उपयोग करना;

शून्य घन ( इंट एक्स )
{
अदालत << 'एक संख्या का घन है' << एक्स * एक्स * एक्स << एंडल;
}

मुख्य प्रवेश बिंदु ( )
{
खालीपन ( * funPtr ) ( int यहाँ ) ;
funPtr = और घन;
funPtr ( 5 ) ;
वापस करना 0 ;
}

उपरोक्त कोड में, समारोह सूचक शून्य घोषित किया जाता है (*funPtr)(int) , और इसे क्यूब () फ़ंक्शन के पते को स्टोर करके प्रारंभ किया जाता है funPtr , मतलब है कि funPtr समारोह की ओर इशारा करता है घन () . इस प्रकार, हम funPtr का उपयोग करके क्यूब फ़ंक्शन को कॉल कर सकते हैं ( समारोह सूचक ) कोड funPtr (5) की तरह।



उत्पादन

समारोह सूचक , अन्य पॉइंटर्स के विपरीत, डेटा के बजाय कोड को इंगित करता है। ए समारोह सूचक अक्सर निष्पादन योग्य कोड की शुरुआत को संग्रहीत करता है। मानक संकेतकों के विपरीत, हम उपयोग नहीं करते हैं फ़ंक्शन पॉइंटर्स स्मृति आवंटित या मुक्त करने के लिए। जैसा कि हमने ऊपर दिए गए कार्यक्रम में देखा, किसी फ़ंक्शन के नाम का उपयोग करके उसका स्थान निर्धारित करना भी संभव है। सामान्य पॉइंटर्स पर लागू होने वाले समान नियम भी एक सरणी पर लागू होते हैं फ़ंक्शन पॉइंटर्स . फंक्शन पॉइंटर्स का उपयोग स्विच केस के स्थान पर किया जा सकता है। ए समारोह सूचक एक तर्क के रूप में आपूर्ति की जा सकती है और एक डेटा पॉइंटर की तरह एक फ़ंक्शन से वापस आ सकती है।

फंक्शन पॉइंटर्स के लाभ

के मुख्य लाभ फ़ंक्शन पॉइंटर्स नीचे सूचीबद्ध हैं।

1: कोड की पुन: प्रयोज्यता

उपयोग करने के प्रमुख लाभों में से एक फ़ंक्शन पॉइंटर्स यह है कि वे कोड में पुन: प्रयोज्यता की अनुमति देते हैं। प्रत्येक परिस्थिति के लिए अद्वितीय कार्यों को लिखने के बजाय, आप ऐसे कार्यों को डिज़ाइन कर सकते हैं जो सामान्य रूप से विभिन्न प्रकार के इनपुट डेटा से निपटने के लिए पर्याप्त हैं। समारोह सूचक टाइप करें और इसे अपने पूरे कोड में लगातार उपयोग करें। इसके बजाय, आपको बस इतना करना है कि अधिकार प्रदान करें समारोह सूचक रनटाइम पर या कॉन्फ़िगरेशन फ़ाइल के माध्यम से, और फ़ंक्शन वर्तमान नौकरी की मांगों को समायोजित करेगा। यह न केवल विकास प्रक्रिया को गति देता है बल्कि आपके कोड की मॉड्यूलरिटी और दीर्घकालिक रखरखाव में भी सुधार करता है।

2: गतिशील रनटाइम व्यवहार

डायनेमिक रनटाइम व्यवहार को लागू करने की क्षमता उपयोग करने का एक और लाभ है फ़ंक्शन पॉइंटर्स . उदाहरण के लिए, आपके पास एक फ़ंक्शन हो सकता है जो एक विशिष्ट गणना निष्पादित करता है, लेकिन उस गणना को करने के लिए उपयोग किया जाने वाला सटीक एल्गोरिदम उपयोगकर्ता इनपुट या सिस्टम स्थितियों पर निर्भर करेगा। ए स्टोर करके समारोह सूचक जो प्रत्येक संभावित एल्गोरिथम से संबंधित है, आप if-else स्टेटमेंट या अन्य सशर्त तर्क का उपयोग करके रनटाइम पर उपयुक्त का चयन कर सकते हैं। ऐसा करने से, आप अत्यधिक लचीला कोड विकसित कर सकते हैं जो पूरे कार्यक्रम के पुनर्निर्माण की आवश्यकता के बिना बदलती परिस्थितियों का जवाब दे सकता है।

3: लचीलापन

सी ++ में, फ़ंक्शन पॉइंटर्स लचीला, सामान्य कोड बनाने के लिए एक शक्तिशाली उपकरण प्रदान करें। फंक्शन पॉइंटर्स अनिवार्य रूप से वेरिएबल्स हैं जो किसी फ़ंक्शन के मेमोरी स्थान का पता रखते हैं। वे कार्यों को डेटा संरचनाओं जैसे सरणियों या सूचियों में संग्रहीत करने में सक्षम करते हैं, अन्य कार्यों के लिए तर्क के रूप में आपूर्ति की जाती है, और यहां तक ​​कि गतिशील रूप से रनटाइम परिस्थितियों या उपयोगकर्ता इनपुट के आधार पर निष्पादित करने के लिए सही फ़ंक्शन का चयन करने के लिए उपयोग किया जाता है।

निष्कर्ष

फंक्शन पॉइंटर्स सी ++ में प्रभावी हैं जो गतिशील रनटाइम व्यवहार और कोड पुन: उपयोग का समर्थन करते हैं। आप बेहद लचीला और अनुकूली कोड लिख सकते हैं जो चर में कार्यों के पतों को संग्रहीत करके समय के साथ बदलती आवश्यकताओं को समायोजित कर सकता है। फंक्शन पॉइंटर्स प्रत्येक पेशेवर सी ++ कोडर के लिए आवश्यक हैं, इस तथ्य के बावजूद कि उन्हें सीखने के लिए कुछ काम की आवश्यकता हो सकती है।