Function Pointer in C – A Pointer to a Function

Function Pointer in C: एक Variable की तरह ही एक Function का भी Memory में एक Location Address होता है। यानी एक Variable की तरह ही Function भी Memory में किसी Storage Cell में जा कर Store होता है और उस Storage Cell का कोई Address होता है। इस कारण से एक Pointer को किसी Function का Address प्रदान करके Function Pointer की तरह भी Declare किया जा सकता है, जिसे आवश्‍यकता के अनुसार बाद में किसी अन्‍य Function में Argument के रूप में Use किया जा सकता है।

जब एक Pointer को, किसी Function को Point करना होता है, तब उस Function Pointer को निम्नानुसार तरीके से Declare करना पडता है।

        Data Type (*Function_Pointer_Name ) ( );

ये Declaration “C” Compiler को बताता है कि Function_Pointer_Name एक Pointer का नाम है जिसमें किसी Function का Address Store किया जा सकता है और ये Function_Pointer_Name Data Type प्रकार का मान Return करेगा।

यहां ये बात हमेंशा ध्‍यान रखें कि किसी Function को Point करने के लिए जो Pointer Declare किया जाता है, उसे हमेंशा कोष्‍ठक के अन्दर ही लिखना जरूरी होता है। यानी Function Pointer का नाम हमेंशा कोष्‍ठक में लिखा जाना चाहिये। माना हमने Function Pointer का Declaration निम्नानुसार किया:

        Data Type *Function_Pointer_Name ( );

ये Declaration “C” Compiler को ये बताएगा कि Function_Pointer_Name एक Function है, जो कि Data Type प्रकार का एक Pointer Return करेगा। यानी ये Declaration किसी Function का Pointer नहीं होगा बल्कि Function_Pointer_Name नाम का एक Function होगा जो कि Data Type प्रकार का एक Pointer Return करेगा।

Function Pointer को Declare करने का एक और उदाहरण देखते हैं, जहां हमने Function Chapter के अंतर्गत sum() Function का प्रयोग किया है। आइये इस sum() Function को एक Pointer Function द्वारा Use करते हैं।

        int (*sumptr)(), sum();

        sumptr = sum;

यहां sum() एक Function है और *sumptr एक Function का Pointer है। दूसरे Statement में इस Function Pointer sumptr() को sum() नाम के Function का Address प्रदान किया गया है। sum int प्रकार का मान Return करेगा इसलिए sumptr को भी int प्रकार का Declare किया गया है, क्योंकि हम जानते हैं कि एक Pointer को उसी Data Type का Declare किया जाना जरूरी होता है, जिस Data Type का हम उसके Variable में मान Store करते हैं।

इसी वजह से यहां दोनों को int प्रकार का Declare किया गया है। अब हम sum() Function को उसके नाम sum() के बजाय उसके Pointer sumptr द्वारा भी Access कर सकते हैं। यानी अब हम Function sum() को Call करने के लिए इसके Pointer sumptr को Argument List के साथ Use कर सकते हैं। जैसे:

         ( *sumptr ) ( x, y )

इसकी जगह हम निम्न Statement का भी प्रयोग कर सकते हैं।

        sum( x , y );

ये दोनों ही Statements समान Output प्रदान करेंगे। केवल इनके काम करने के तरीके में अन्तर होगा। ये सवाल हमारे दिमाग में आ सकता है, कि जब हम एक साधारण तरीके से किसी Function को प्रयोग कर सकते हैं, तो फिर ये तरीका क्यों Use किया जाए। इसका जवाब ये है कि Functions को इस प्रकार से Use करके हम Memory Resident Programs लिख सकते हैं और Computer VirusVirus Vaccines (Antivirus) बनाया जा सकता है। (Function Pointer in C – Wiki)

C Programming Language in Hindi - BccFalna.com ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook  C Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C Programming Language in Hindi | Page: 477 + 265 | Format: PDF

BUY NOW GET DEMO REVIEWS