Array in Function through Pointer

Array in Function
through Pointer
Function को
पढते समय हमने देखा था कि किस प्रकार से एक Array को Function
के साथ उपयोग में लाया जा सकता है |
यहां
हम ये जानेंगे कि किसी Array को Pointer द्वारा किस प्रकार से किसी Function में Argument
के रूप में भेजा जा सकता है |
Pointer
की ये विशेषता है कि यदि किसी Variable को Pointer
द्वारा Function में भेजा जाता है , तो Argument
के रूप में Array का Base Address ही Function को Pass होता है |
यदि एक सामान्य Formal
Variable में इस argument को Accept किया जाए तो ये Array का सामान्य तरह से उपयोग करना
होता है , लेकिन यदि उस Base Address को किसी ऐसे Formal
Variable में Accept किया जाए तो खुद एक Pointer
Variable हो तो ये Array का Pointer हो जाता है | इसे
समझने के लिए निम्न प्रोग्राम देखते हैं |
Program
#include<stdio.h>
main()
{
int j[] = { 11,23,33,22,44,55,66};
clrscr();
display ( &j[0], 6 );
}
display ( int *m, int n )
{
int k;
for( k = 0; k < 5; k++ )
{
printf(“\t Element = %d “, *m );
m++; //Increment Pointer to Point next Location
}
}
Output
Element =11
Element =23
Element =33
Element =22
Element =44
Element =55
इस प्रोग्राम में
Array
j का Base Address व इसकी Size को Argument के रूप में display() नाम के Function में भेजा गया है |
जो
कि क्रमशः *m व n के Formal
Argument को प्राप्त हो गए है जिन्हें User Defined Function
में main() Function से आ रहे Arguments
को Accept करने के लिए Declare किया गया है |
ध्यान दें कि Variable
m को Pointer Variable Declare किया गया है ,
लेकिन Argument के रूप में Array का Base
Address आ रहा है और Address को केवल Pointer
Variable ही ग्रहण कर सकता है |
जब
display()
Function का for Loop चलता है तब प्रथम Iteration
में Variable m में प्राप्त Base Address
के मान को Print कर देता है |
फिर
m
का नाम Increment किया गया है |
इससे m
का Address दूसरे Element के Address पर पहुंच जाता है और दूसरे मान को Output
में Print कर देता है |
ये
क्रम 6
बार चलता है क्योंकि Variable n में Array
की Size 6 Argument के रूप में main() से प्राप्त होती है और for Loop को तब तक चलाया गया
है जब तक कि n का मान 6 ना हो जाए |
इस
प्रकार से एक Array को Pointer के
साथ User Defined Function में भेजा जा सकता है व
आवश्यकतानुसार उपयोग में लाया जा सकता है |
एक 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 का नाम हमेंशा कोष्टक में लिखा जाना चाहिए |
माना
हमने Function
Pointer का Declaration निम्नानुसार किया है |
Data Type * Function_Pointer_Name();
ये Declaration
“C” Compiler को ये बताएगा कि Function_Pointer_Name एक Function है , जो कि Data Type प्रकार का एक Pointer Returns करेगा |
यानी
ये Declaration
किसी Function का Pointer नहीं होगा बल्कि Function_Pointer_Name नाम का एक Function
होगा जो कि Data Type प्रकार का एक Pointer
Returns करेगा | 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
Virus व Virus Vaccines बना सकते हैं |
No comments