Function Pointers घोषित करना
Functions की ओर संकेत करने वाले pointers
Function Pointers घोषित करना, CoddyKit पर C Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Functions के भी addresses होते हैं
डेटा की तरह हर function भी मेमोरी में किसी address पर रहता है। Function pointer उस address को संग्रहीत करता है, जिससे आप function को अप्रत्यक्ष रूप से call कर सकते हैं।
#include <stdio.h>
void greet(void) { printf("hello\n"); }
int main(void) {
void (*fp)(void) = greet;
fp();
return 0;
}Declaration को पढ़ना
Declaration int (*fp)(int) का अर्थ है: fp ऐसे function का pointer है जो int लेता है और int लौटाता है।
*fp के चारों ओर parentheses आवश्यक हैं।
#include <stdio.h>
int square(int x) { return x * x; }
int main(void) {
int (*fp)(int) = square;
printf("%d\n", fp(5));
return 0;
}Function assign करना
Function का नाम अपने address में बदल जाता है, इसलिए fp = square और fp = &square समान हैं।
#include <stdio.h>
int dbl(int x) { return x * 2; }
int main(void) {
int (*fp)(int);
fp = &dbl;
printf("%d\n", fp(7));
return 0;
}Pointer के ज़रिए call करना
आप function pointer के ज़रिए fp(args) या स्पष्ट रूप से (*fp)(args) का उपयोग करके call कर सकते हैं। दोनों एक ही काम करते हैं।
#include <stdio.h>
int add1(int x) { return x + 1; }
int main(void) {
int (*fp)(int) = add1;
printf("%d\n", fp(10));
printf("%d\n", (*fp)(10));
return 0;
}Signature का मिलना आवश्यक है
Function pointer के type में उसका return type और parameter types शामिल होते हैं। आप केवल ऐसे function को assign कर सकते हैं जिसकी signature बिल्कुल मेल खाती हो।
#include <stdio.h>
double half(double x) { return x / 2.0; }
int main(void) {
double (*fp)(double) = half;
printf("%f\n", fp(9.0));
return 0;
}Runtime पर फिर से assign करना
Function pointer एक variable होता है, इसलिए program के चलते समय आप उसे अलग-अलग functions की ओर संकेत करा सकते हैं।
#include <stdio.h>
int inc(int x) { return x + 1; }
int dec(int x) { return x - 1; }
int main(void) {
int (*op)(int) = inc;
printf("%d\n", op(5));
op = dec;
printf("%d\n", op(5));
return 0;
}Condition के आधार पर चुनना
Runtime value के आधार पर तय करें कि कौन-सा function call करना है, फिर एक ही pointer के ज़रिए उसे चलाएँ।
#include <stdio.h>
int plus(int a) { return a + 10; }
int minus(int a) { return a - 10; }
int main(void) {
int up = 1;
int (*op)(int) = up ? plus : minus;
printf("%d\n", op(100));
return 0;
}पठनीयता के लिए typedef
Function pointer का syntax लंबा होता है। typedef type को एक नाम देता है, जिससे declarations अधिक स्पष्ट हो जाते हैं।
#include <stdio.h>
typedef int (*IntOp)(int);
int triple(int x) { return x * 3; }
int main(void) {
IntOp op = triple;
printf("%d\n", op(4));
return 0;
}दो arguments वाले functions
Function pointers किसी भी signature का वर्णन कर सकते हैं। यहाँ binary integer operation के लिए एक उदाहरण है।
#include <stdio.h>
int sum(int a, int b) { return a + b; }
int main(void) {
int (*op)(int, int) = sum;
printf("%d\n", op(3, 4));
return 0;
}एक NULL function pointer
Data pointers की तरह function pointer भी NULL हो सकता है। जो pointer unset हो सकता है, उसे call करने से पहले हमेशा जाँचें।
#include <stdio.h>
int twice(int x) { return x * 2; }
int main(void) {
int (*op)(int) = NULL;
if (op == NULL) op = twice;
if (op) printf("%d\n", op(8));
return 0;
}Address print करना
आप संग्रहीत address देख सकते हैं। अलग-अलग functions के addresses अलग होते हैं।
#include <stdio.h>
int f(int x) { return x; }
int main(void) {
int (*fp)(int) = f;
printf("function pointer is %s\n", fp ? "set" : "null");
return 0;
}त्वरित जाँच
Function pointer declarations की अपनी समझ जाँचें।
सारांश
आपने function pointers को declare और उपयोग करना सीखा:
- Syntax:
ret (*name)(params); parentheses आवश्यक हैं। - Function के नाम से assign करें (यह अपने address में बदल जाता है)।
fp(args)या(*fp)(args)से call करें।- Signature का मेल आवश्यक है;
typedefपठनीयता बढ़ाता है।
एआई शिक्षक के साथ C सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 39
- पाठ
- 144
अक्सर पूछे जाने वाले प्रश्न
क्या “Function Pointers घोषित करना” पाठ निःशुल्क है?
हाँ—“Function Pointers घोषित करना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Function Pointers घोषित करना” में मैं क्या सीखूँगा?
Functions की ओर संकेत करने वाले pointers आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Function Pointers घोषित करना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Function Pointers घोषित करना
- Functions पास करना
- Comparators के साथ qsort
- Function Pointer Tables