फंक्शन पॉइंटर क्या है?
फंक्शन पॉइंटर फंक्शन डेफिनिशन के बेस एड्रेस को मेमोरी में रखता है।
घोषणा
return_type (*pointer_name)(parameter_types);
आरंभीकरण
फंक्शन का नाम ही उसका एड्रेस होता है।
int (*p)();
p = display; // display() फंक्शन का एड्रेस
कॉल करना
(*p)(); // या p();
उदाहरण 1: सिंपल फंक्शन कॉल
#include <stdio.h>
void display() {
printf("Hello");
}
int main() {
void (*p)(); // फंक्शन पॉइंटर घोषणा
p = display; // आरंभीकरण
(*p)(); // कॉल
return 0;
}
आउटपुट
Hello
उदाहरण 2: पैरामीटर्स के साथ फंक्शन पॉइंटर
#include <stdio.h>
void show(int *p) {
(*p)++; // पॉइंटर द्वारा पास किए गए मान को इन्क्रीमेंट
}
int main() {
int *ptr, a = 20;
ptr = &a;
show(ptr);
printf("%d", *ptr); // 21
return 0;
}
आउटपुट
21
उन्नत उपयोग: कॉलबैक और फंक्शन टेबल
#include <stdio.h>
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int mul(int a, int b) { return a * b; }
int div(int a, int b) { return b != 0 ? a / b : 0; }
int main() {
int (*ops[4])(int, int) = {add, sub, mul, div};
int a = 10, b = 5, choice;
printf("0:Add 1:Sub 2:Mul 3:Div\nChoice: ");
scanf("%d", &choice);
if (choice >= 0 && choice < 4)
printf("Result: %d\n", ops[choice](a, b));
return 0;
}
मुख्य बिंदु
- फंक्शन पॉइंटर्स रनटाइम पर फंक्शन चुनने में सक्षम बनाते हैं।
- कॉलबैक फंक्शन्स, इवेंट हैंडलर्स, स्टेट मशीन्स के लिए आवश्यक।
- सिंटैक्स जटिल लगता है लेकिन शक्तिशाली है।