C भाषा में वेरिएबल आर्गुमेंट्स क्या है What is Variable Arguments in C



C भाषा में वेरिएबल आर्गुमेंट्स 
क्या है What is Variable Arguments in C


C भाषा में, Variable Arguments एक ऐसी तकनीक है जिसका उपयोग एक फ़ंक्शन में अनेक संख्या के arguments को पास करने के लिए किया जाता है। इस तकनीक का उपयोग, जब हमें अनेक संख्या के arguments को पास करने की आवश्यकता होती है लेकिन हम नहीं जानते होते हैं कि उन्हें कितने arguments के साथ फ़ंक्शन को कॉल किया जाना है।

इस तकनीक का उपयोग C में 'stdarg.h' हेडर फ़ाइल के द्वारा किया जाता है। इस तकनीक का उपयोग printf(), scanf() जैसी फ़ंक्शनों में किया जाता है जहाँ हमें अनेक संख्या के arguments को पास करने की आवश्यकता होती है।

एक उदाहरण के रूप में, निम्नलिखित फ़ंक्शन में एक Variable Arguments होता है:

int sum(int count, ...)
{
    int sum = 0;
    va_list args; // arguments की list बनाने के लिए इस तकनीक का उपयोग किया जाता है
    va_start(args, count); // arguments की list को initialize करने के लिए कौन सा argument आखरी होगा, इसकी जानकारी के लिए count पास किया जाता है

    for (int i = 0; i < count; i++)
    {
        sum += va_arg(args, int); // arguments की list से एक argument ले कर sum में जोड़ें
    }

    va_end(args); // arguments की list को clear करने के लिए va_end का उपयोग किया जाता है

    return sum;
}


Variable Arguments का उपयोग विभिन्न प्रकार के फ़ंक्शनों में किया जाता है, जिनमें कुछ आधारभूत फ़ंक्शन हैं, जैसे printf() और scanf()। इस तकनीक का उपयोग करने के लिए, हम 'stdarg.h' हेडर फ़ाइल का उपयोग करते हैं, जो अनेक संख्या के arguments को पास करने की सुविधा प्रदान करता है।

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

Variable Arguments का उदाहरण

उदाहरण के रूप में, यदि हम printf() फ़ंक्शन के उपयोग से संदेश को कन्सोल पर प्रिंट करना चाहते हैं और हमें संदेश के बीच में कुछ विभिन्न प्रकार के डेटा टाइप के arguments पास करने की आवश्यकता होती है, तो हम Variable Arguments का उपयोग कर सकते हैं।

इसके लिए, हम इस तरह का कोड लिख सकते हैं:

#include <stdio.h>
#include <stdarg.h>

void print_args(int count, ...) {
va_list args;
int i;

va_start(args, count);

for (i = 0; i < count; i++) {
printf("%d: %s\n", i, va_arg(args, char*));
}

va_end(args);
}

int main() {
    print_args(3, "hello", "world", "!");
    return 0;
}


यहां, हमने print_args() नामक एक फ़ंक्शन बनाई है, जो दो पैरामीटर लेती है - पहला पैरामीटर उस संख्या को दर्शाता है जो arguments की संख्या है जिन्हें हम इस फ़ंक्शन को पास करेंगे, और दूसरा पैरामीटर एक Variable Argument है जो वास्तव में एक से अधिक arguments हो सकते हैं।

इस उदाहरण में, हम print_args() को 3 arguments के साथ कॉल करते हैं - "hello", "world" और "!"। फ़ंक्शन के भीतर, हम printf() का उपयोग करते हैं ताकि हम सभी arguments को देख सकें। हम va_start() और va_end() फ़ंक्शन का उपयोग करते हैं ताकि हम अपने arguments की संख्या को संभाल सकें और va_arg() का उपयोग कर सके


यदि हमें अधिक विस्तृत फ़ंक्शन बनाना होता है जो अधिक तरीकों से इस्तेमाल किए जाने वाले विभिन्न arguments के साथ काम करता हो, तो हम Variable Arguments का उपयोग कर सकते हैं।

Variable Arguments का दूसरा उदाहरण

दुसरे उदाहरण के रूप में, यदि हम एक फ़ंक्शन बनाना चाहते हैं जो एक या अधिक संख्याओं को जोड़ता है, तो हम इस तरह का कोड लिख सकते हैं:

#include <stdio.h>
#include <stdarg.h>

int add_numbers(int count, ...) {
    va_list args;
    int i, sum = 0;

    va_start(args, count);

    for (i = 0; i < count; i++) {
        sum += va_arg(args, int);
    }

    va_end(args);

    return sum;
}

int main() {
    printf("Sum of 3 numbers: %d\n", add_numbers(3, 10, 20, 30));
    printf("Sum of 5 numbers: %d\n", add_numbers(5, 1, 2, 3, 4, 5));
    return 0;
}


यहां, हमने add_numbers() नामक एक फ़ंक्शन बनाई है, जो दो पैरामीटर लेती है - पहला पैरामीटर उस संख्या को दर्शाता है जो arguments की संख्या है जिन्हें हम इस फ़ंक्शन को पास करेंगे, और दूसरा पैरामीटर एक Variable Argument है जो वास्तव में एक से अधिक integers हो सकते हैं।

इस उदाहरण में, हम add_numbers() को 3 और 5 integers के साथ कॉल करते हैं और इसके भीतर, हम va_start(), va_arg() और va_end() का उपयोग करते हैं ताकि हम सभी arguments को जोड़ सकें