Pointer to Function
Function Declaration में Pointer का प्रयोग होता हैं। Pointer के प्रयोग से कठिन फंक्शन को असानी से Define एवं Access किया जा सकता हैं।
फंक्शन Definition में Pointer के उपयोग को 2 ग्रुप में बाँटा जा सकता हैं –
- Call by value
- Call by Reference
उपरोक्त दोनों को समझने के पहले हम ये जान ले की Actual और Formal Parameter क्या होते हैं, जिसके बाद Call by value और Call by Reference समझने में बहुत आसान हो जायेगा| फंक्शन में भेजे जाने वाले वेरिएबल को हम दो तरीके से विभाजित कर सकते हैं जो निम्नलिखित हैं
- Actual Parameter- फंक्शन (Function) को Call करते समय जिन Variable का प्रयोग फंक्शन (Function) Argument या Parameter के रूप में जिन Variable का प्रयोग किया जाता हैं उन्हें Actual Parameter कहा जाता हैं।
- Formal Parameter- फंक्शन (Function) Definition के समय Argument के रूप में जिन Variable का प्रयोग किया जाता हैं उन्हें Formal Parameter कहा जाता हैं।
Call by Value
Program में फंक्शन (Function) को Call करते समय जब हम Actual Parameter Value के मान (Value) को, फंक्शन (Function) के Formal Parameter को Pass करते हैं, तो ऐसी फंक्शन (Function) Calling करे call by value कहा जाता हैं। Call by value में Actual Parameter Value Copy, formal parameter को दी जाती हैं अत: फंक्शन (Function) body के अन्दर formal Parameter के मान में परिवर्तन किया जाता हैं तो उसका प्रभाव Actual Parameter के मान पर नहीं होता हैं।
#include<iostream.h>
#include<conio.h>
int squ(int a) // formal parameter
{
int t;
t = a * a;
return t;
}
void main()
{
clrscr();
int x;
x = 7;
cout<<squ(x); // Actual Parameter
}
Call by value को हम निम्न उदाहरण के द्वारा स्पष्ट कर सकते हैं।
int mut(int a)
{
a = a*a;
return(a);
}
void main()
{
clrscr();
int x=3;
int r;
cout<<“\n value of x before Calling Function =”<<x;
r = mut(x);
cout << “\n Square is =” << x ;
cout << “\n value of x after calling Function =” << x;
}
Output
Value of x before calling Function = 3
Square is = 9
Value of x after Calling Function = 3
उपरोक्त उदाहरण में a formal variable हैं जिसके मान में फंक्शन (Function) body के अन्दर परिवतर्न किया गया हैं तथा x Actual variable हैं जिसका मान Formal variable को by value pass किया गया हैं। यहाँ पर फंक्शन (Function) को by value call किया गया हैं। अत: x का मान फंक्शन (Function) को Call करने के पहले ओर बाद में एक जैसा ही रहता हैं, जबकि formal variable के मान में परिवर्तन होता हैं।
Call by Reference
Program में फंक्शन (Function) को Call करते समय जब हम Actual Parameter के Address (Reference) को Formal Parameter को देते हैं तो ऐसे फंक्शन (Function) Call को Call By Reference कहा जाता हैं। Call by Reference में Actual Parameter के Address को Formal Variable में दिया जाता हैं। अत: Formal Variable में फंक्शन (Function) Body के अन्दर किये गये परिवर्तन का प्रभाव Actual Parameter के Value पर होता हैं। क्योंकि Formal एवं Actual Parameters समान Memory Location को निर्दिष्ट करते हैं।
Call by Reference में Formal Parameter में Pointer data type का प्रयोग किया जाता हैं। तथा फंक्शन (Function) को Call करते समय, Actual Parameter के Address को & Operator के द्वारा Pass किया जाता हैं।
Example :-
int add (*a);
{
a*a = *a + *a;
return *a;
}
void main ()
{
clrscr();
int x = 3;
int r;
cout<< “\n value of x before calling Function =”<< x;
r = add (&x);
cout<< “\n double=”<<r;
cout<< “\n value of x after calling Function =”<< x;
}
Output
value of x before calling Function = 3
Double = 6
Value of x after calling Function = 6