Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C . में नेस्टेड फ़ंक्शन

कुछ अनुप्रयोगों में, हमने देखा है कि कुछ फ़ंक्शन दूसरे फ़ंक्शन के अंदर घोषित किए जाते हैं। इसे कभी-कभी नेस्टेड फ़ंक्शन के रूप में जाना जाता है, लेकिन वास्तव में यह नेस्टेड फ़ंक्शन नहीं है। इसे लेक्सिकल स्कोपिंग कहा जाता है। लेक्सिकल स्कोपिंग C में मान्य नहीं है क्योंकि कंपाइलर इनर फंक्शन की सही मेमोरी लोकेशन तक पहुंचने में असमर्थ है।

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

उदाहरण

#include <stdio.h>
main(void) {
   printf("Main Function");
   int my_fun() {
      printf("my_fun function");
      // defining another function inside the first function.
      int my_fun2() {
         printf("my_fun2 is inner function");
      }
   }
   my_fun2();
}

आउटपुट

text.c:(.text+0x1a): undefined reference to `my_fun2'

लेकिन जीएनयू सी कंपाइलर का विस्तार नेस्टेड फ़ंक्शन की घोषणा की अनुमति देता है। इसके लिए हमें नेस्टेड फ़ंक्शन की घोषणा से पहले ऑटो कीवर्ड जोड़ना होगा।

उदाहरण

#include <stdio.h>
main(void) {
   auto int my_fun();
   my_fun();
   printf("Main Function\n");
   int my_fun() {
      printf("my_fun function\n");
   }
   printf("Done");
}

आउटपुट

my_fun function
Main Function
Done

  1. जावास्क्रिप्ट कॉलबैक

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

  1. जावास्क्रिप्ट में संक्षिप्त तीर कार्य

    संक्षिप्त तीर फ़ंक्शन सिंटैक्स इस प्रकार है - param1+param2 होता है और यदि एक ही पैरामीटर है तो इसे इस तरह भी लिखा जा सकता है - param1*2 के बाद घुंघराले ब्रेसिज़ {} नहीं हैं, तो इसका निहित प्रतिफल है। जावास्क्रिप्ट में संक्षिप्त तीर कार्यों को लागू करने के लिए कोड निम्नलिखित है - उदाहरण दस्तावेज़

  1. जावास्क्रिप्ट में प्रथम श्रेणी का कार्य

    जावास्क्रिप्ट फ़ंक्शन को ऑब्जेक्ट के रूप में मानता है और हमें फ़ंक्शन को किसी अन्य फ़ंक्शन के लिए पैरामीटर के रूप में पास करने की अनुमति देता है और यहां तक ​​कि अन्य फ़ंक्शन से फ़ंक्शन वापस करने की अनुमति देता है। जावास्क्रिप्ट में फ़ंक्शन प्रथम श्रेणी के कार्य हैं जिसका अर्थ है कि हम उन्हें चर, वस्