प्रत्येक C प्रोग्राम फ़ंक्शंस का एक संग्रह है। कोड के इन उपयोगी पुन: प्रयोज्य हिस्सों के बारे में सब कुछ जानें, उन्हें कैसे परिभाषित करें से लेकर शून्य का क्या मतलब है।

हो सकता है कि आपने सरल उदाहरणों के साथ बुनियादी सी सिंटैक्स को कवर कर लिया हो, और अब सोच रहे हों कि बड़े, वास्तविक दुनिया के प्रोग्राम कैसे बनाएं। शुरुआत के लिए, आप अपने कोड को कम से कम दोहराव के साथ कुशल भागों में व्यवस्थित करना चाहेंगे। सी में, अधिकांश भाषाओं की तरह, आपकी समस्याओं का उत्तर फ़ंक्शन है।

C में फ़ंक्शंस बनाना और उपयोग करना सीधा है और कई लाभ लाता है। फ़ंक्शंस आपको जटिल प्रोग्राम को छोटे-छोटे हिस्सों में तोड़ने की अनुमति देते हैं। वे आपके मूल कार्यक्रम के भीतर और संबंधित पुस्तकालयों या अन्य अलग-अलग कार्यक्रमों में पुन: प्रयोज्यता प्रदान करते हैं।

आरंभ करने के लिए, आपको फ़ंक्शन घोषणाओं, प्रोटोटाइप, पैरामीटर और रिटर्न स्टेटमेंट के बारे में सीखना होगा।

C में फ़ंक्शंस क्या हैं?

सी प्रोग्रामिंग में, फ़ंक्शन कोड का एक नामित अनुभाग है जो आपके पूछने पर कुछ करता है। यह आपके कोड को व्यवस्थित रखने में मदद करता है और आपको बिना दोहराए एक ही क्रिया को कई बार उपयोग करने देता है।

instagram viewer

सबसे सरल उदाहरण वह है जिसका आप पहले से ही उपयोग कर रहे हैं: मुख्य() फ़ंक्शन। मुख्य फ़ंक्शन विशेष रूप से विशेष है क्योंकि यह किसी भी C प्रोग्राम के लिए मुख्य प्रवेश बिंदु के रूप में कार्य करता है। आप लाइब्रेरी फ़ंक्शंस का भी उपयोग कर सकते हैं, जो वे हैं जिन्हें किसी और ने पहले ही लिखा है, या आप अपने स्वयं के उपयोगकर्ता-परिभाषित फ़ंक्शंस लिख सकते हैं।

कार्य: घोषणा करना, परिभाषित करना और कॉल करना

ये तीन पहलू फ़ंक्शंस के उपयोग के लिए मौलिक हैं।

कार्य घोषणा

यह किसी फ़ंक्शन के नाम, रिटर्न प्रकार और पैरामीटर के बारे में जानकारी प्रदान करता है, जिससे इसकी पूर्ण परिभाषा से पहले इसका उपयोग संभव हो जाता है। इसे फ़ंक्शन प्रोटोटाइप भी कहा जाता है। यह इस सरल वाक्यविन्यास का अनुसरण करता है:

return_type function_name(parameters);

कहाँ:

  • वापसी_प्रकार उस मान का डेटा प्रकार है जो फ़ंक्शन लौटाता है। यह कोई भी वैध C डेटा प्रकार या हो सकता है खालीपन यदि फ़ंक्शन कोई मान नहीं लौटाता है.
  • function_name यह वह नाम है जो आप फ़ंक्शन को देते हैं। आप बाद में फ़ंक्शन को कॉल करने के लिए इसका उपयोग करेंगे।
  • पैरामीटर यह उन इनपुट पैरामीटरों की सूची है जिन्हें फ़ंक्शन स्वीकार करता है, यदि कोई हो। प्रत्येक पैरामीटर में एक डेटा प्रकार होता है जिसके बाद अल्पविराम द्वारा अलग किया गया एक पैरामीटर नाम होता है।

उदाहरण के लिए, यहां एक सरल फ़ंक्शन घोषणा है:

intadd(int a, int b);

कार्य परिभाषा

जब आप किसी फ़ंक्शन को कॉल करते हैं, तो यह उसकी परिभाषा में निर्दिष्ट कोड चलाता है। इसमें फ़ंक्शन का नाम, रिटर्न प्रकार, पैरामीटर सूची और उसके व्यवहार को परिभाषित करने वाले कथन शामिल हैं। यहाँ वाक्यविन्यास है:

return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}

आइए वाक्यविन्यास के कुछ हिस्सों को तोड़ें:

कार्य शरीर: यह घुंघराले ब्रेसिज़ में संलग्न कोड का ब्लॉक है {}. इसमें निर्देश शामिल हैं जो परिभाषित करते हैं कि फ़ंक्शन कॉल किए जाने पर क्या करता है।

वापसी विवरण: यदि फ़ंक्शन में इसके अलावा कोई रिटर्न प्रकार है खालीपन, द वापस करना स्टेटमेंट कॉल करने वाले को एक मान वापस भेजता है। यह मान निर्दिष्ट रिटर्न प्रकार से मेल खाना चाहिए।

यहां फ़ंक्शन परिभाषा का एक सरल उदाहरण दिया गया है:

intadd(int a, int b){
int sum = a + b;
return sum;
}

फ़ंक्शन कॉल

खाना पकाने की तरह, आपके पास एक नुस्खा (फ़ंक्शन परिभाषा) और कुछ सामग्री (तर्क) हो सकते हैं, लेकिन परिणाम प्राप्त करने के लिए आपको अभी भी निर्देशों का पालन करना होगा। एक फ़ंक्शन कॉल दिए गए तर्कों के साथ फ़ंक्शन चलाएगा; यहाँ वाक्यविन्यास है:

return_type result = function_name(arguments);

बहस: ये वे मान या अभिव्यक्ति हैं जिन्हें आप इनपुट के रूप में फ़ंक्शन में पास करते हैं। प्रत्येक तर्क को अल्पविराम से अलग करें। तर्कों की संख्या, क्रम और डेटा प्रकार फ़ंक्शन की पैरामीटर सूची से मेल खाना चाहिए।

परिणाम: यदि फ़ंक्शन में इसके अलावा कोई रिटर्न प्रकार है खालीपन, आप उचित डेटा प्रकार के एक वेरिएबल का उपयोग करके लौटाए गए मान को कैप्चर कर सकते हैं।

यहां फ़ंक्शन कॉल का एक उदाहरण दिया गया है:

#include

// Function prototype
intadd(int a, int b);

intmain(){
int x = 5, y = 3;

// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}

// Function definition
intadd(int a, int b){
return a + b;
}

इन तीन चरणों का पालन करके-फ़ंक्शन घोषित करना, उसका कार्यान्वयन प्रदान करना और उसे कॉल करना उचित तर्कों के साथ-आप अपने विभिन्न कार्यों को करने के लिए फ़ंक्शंस का प्रभावी ढंग से उपयोग कर सकते हैं कार्यक्रम.

फ़ंक्शन पैरामीटर और रिटर्न मान

पैरामीटर फ़ंक्शन की घोषणा या परिभाषा में घोषित वेरिएबल होते हैं जो कॉल किए जाने पर फ़ंक्शन को दिए गए मानों के लिए प्लेसहोल्डर के रूप में कार्य करते हैं। वे आपको फ़ंक्शन में डेटा पास करने की अनुमति देते हैं, जिससे यह उस डेटा के साथ काम करने और उसमें हेरफेर करने में सक्षम होता है। रिटर्न मान वे मान हैं जो एक फ़ंक्शन उत्पन्न करता है और कॉलर को वापस भेजता है।

पैरामीटर पास करने की दो विधियाँ हैं।

मूल्य से गुजरें

इस दृष्टिकोण के साथ, एक फ़ंक्शन कॉल वास्तविक तर्क के मान को फ़ंक्शन के पैरामीटर में कॉपी करता है। फ़ंक्शन के भीतर पैरामीटर में किए गए परिवर्तन मूल तर्क को प्रभावित नहीं करते हैं।

उदाहरण के लिए:

#include

intsquare(int num){
num = num * num;
return num;
}

intmain(){
int x = 5;
int y = square(x);

// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);

return0;
}

  • वर्ग फ़ंक्शन एक पूर्णांक पैरामीटर लेता है, संख्या.
  • वर्ग फ़ंक्शन संख्या के वर्ग की गणना करता है, उसका मान अद्यतन करता है, और यह नया मान लौटाता है।
  • मुख्य फ़ंक्शन एक पूर्णांक चर घोषित करता है, एक्स, और इसे मान 5 निर्दिष्ट करता है।
  • इसके बाद यह वर्ग फ़ंक्शन को कॉल करता है, इसे x का मान देता है। यह परिणाम को दूसरे वेरिएबल को निर्दिष्ट करता है, .
  • फ़ंक्शन कॉल के बाद, मुख्य x और y के मान प्रिंट करता है। x मान वही रहता है क्योंकि वर्ग के अंदर संख्या पैरामीटर बदलने से मूल x प्रभावित नहीं होता है।

संदर्भ से गुजरें

इस दृष्टिकोण का उपयोग करके, आप किसी फ़ंक्शन के मान का मेमोरी एड्रेस (पॉइंटर) पास करते हैं। फ़ंक्शन के अंदर पैरामीटर में किए गए परिवर्तन इसके बाहर के मूल मान को प्रभावित करते हैं।

पैरामीटर के रूप में उनके उपयोग सहित पॉइंटर्स, के पहलुओं में से एक हैं C जो इसे Python जैसी भाषा से अलग बनाता है.

#include

voidsquare(int *num){
*num = *num * *num;
}

intmain(){
int x = 5;
square(&x);

// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}

  • वर्ग फ़ंक्शन एक पूर्णांक सूचक लेता है (int*) पैरामीटर, संख्या. यह कोई मान नहीं लौटाता.
  • वर्ग फ़ंक्शन उस मान के वर्ग की गणना करता है संख्या पॉइंटर डीरेफ़रेंस ऑपरेटर का उपयोग करके उस मान को शामिल और अद्यतन करता है, *.
  • मुख्य फ़ंक्शन एक पूर्णांक चर घोषित करता है, एक्स, और इसे मान निर्दिष्ट करता है 5.
  • इसके बाद यह कॉल करता है वर्ग के लिए एक सूचक के साथ कार्य करें एक्स ऑपरेटर के पते का उपयोग करना: &एक्स.
  • फ़ंक्शन कॉल के बाद, मुख्य मान प्रिंट करता है एक्स, जो अब है 25 में परिवर्तन के बाद से *संख्या के अंदर वर्ग फ़ंक्शन मूल को प्रभावित करता है एक्स.

संक्षेप में, दोनों विधियों के बीच मुख्य अंतर यह है कि फ़ंक्शन के अंदर पैरामीटर में परिवर्तन इसके बाहर के मूल मान को कैसे प्रभावित करते हैं। पास बाय वैल्यू एक कॉपी बनाता है, जबकि पास बाय रेफरेंस (पॉइंटर) मूल मान में सीधे हेरफेर की अनुमति देता है।

अन्य भाषाओं में अक्सर C के पॉइंटर्स के समकक्ष होते हैं, लेकिन वे आम तौर पर उच्च स्तर पर काम करते हैं। एक उदाहरण है आउट वेरिएबल्स के लिए C# का समर्थन.

शून्य कार्य

सी प्रोग्रामिंग में शून्य फ़ंक्शन ऐसे फ़ंक्शन हैं जो कोई मान नहीं लौटाते हैं। बिना परिणाम उत्पन्न किए कार्य या कार्य करने के लिए उनका उपयोग करें। वे पास बाय रेफरेंस का उपयोग करके अपने पैरामीटर बदल सकते हैं, लेकिन उन्हें ऐसा करने की ज़रूरत नहीं है।

यहां शून्य फ़ंक्शन का एक उदाहरण दिया गया है:

#include

// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}

intmain(){
// Call the void function, output: "Hello, MUO!"
greet();

return0;
}

शून्य फ़ंक्शन क्रियाएं करने, संदेशों को प्रिंट करने, डेटा को संशोधित करने, या रिटर्न वैल्यू की आवश्यकता के बिना कार्यों को पूरा करने के लिए उपयोगी होते हैं।

सी प्रोग्रामिंग में फ़ंक्शंस का अन्वेषण करें

फ़ंक्शंस के निर्माण के माध्यम से अभ्यास करने से सी प्रोग्रामिंग में समझ और अनुप्रयोग की आपकी समझ बढ़ती है। इसके अलावा, यह कोड की पठनीयता और रखरखाव में आसानी को बढ़ाता है। उनके लाभों को अनलॉक करने के लिए फ़ंक्शंस के विभिन्न अनुप्रयोगों में गोता लगाएँ।

जब आपने सी फ़ंक्शंस के बुनियादी सिद्धांतों में महारत हासिल कर ली है और खुद को चुनौती देना चाहते हैं, तो रिकर्सन में गहराई से जाने पर विचार करें।