Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में वेरिएबल नंबर ऑफ आर्गुमेंट्स


कभी-कभी, आप एक ऐसी स्थिति का सामना कर सकते हैं, जब आप एक ऐसा फंक्शन चाहते हैं, जो वेरिएबल नंबर ऑफ आर्गुमेंट्स ले सके, यानी, पैरामीटर्स, पूर्वनिर्धारित संख्या के पैरामीटर्स के बजाय। C/C++ प्रोग्रामिंग लैंग्वेज इस स्थिति के लिए एक समाधान प्रदान करती है और आपको एक ऐसा फंक्शन डिफाइन करने की अनुमति देती है जो आपकी आवश्यकता के आधार पर वेरिएबल नंबर ऑफ पैरामीटर्स स्वीकार कर सके। निम्नलिखित उदाहरण ऐसे फंक्शन की परिभाषा दिखाता है।

int func(int, ... ) { . . . } int main() { func(1, 2, 3); func(1, 2, 3, 4); }

यह ध्यान दिया जाना चाहिए कि फंक्शन func() का अंतिम आर्गुमेंट एलिप्सिस है, यानी तीन डॉट्स (...) और एलिप्सिस से ठीक पहले वाला हमेशा एक int होता है जो पास किए गए वेरिएबल आर्गुमेंट्स की कुल संख्या को दर्शाता है। ऐसी कार्यक्षमता का उपयोग करने के लिए, आपको stdarg.h हेडर फाइल का उपयोग करना होगा जो वेरिएबल आर्गुमेंट्स की कार्यक्षमता को लागू करने के लिए फंक्शन्स और मैक्रोज़ प्रदान करती है और दिए गए चरणों का पालन करें −

  • अपने अंतिम पैरामीटर के रूप में एलिप्सिस के साथ एक फंक्शन डिफाइन करें और एलिप्सिस से ठीक पहले वाला हमेशा एक int हो जो आर्गुमेंट्स की संख्या को दर्शाता है।

  • फंक्शन डेफिनिशन में va_list टाइप का वेरिएबल बनाएं। यह टाइप stdarg.h हेडर फाइल में परिभाषित है।

  • int पैरामीटर और va_start मैक्रो का उपयोग करके va_list वेरिएबल को आर्गुमेंट लिस्ट में इनिशियलाइज़ करें। मैक्रो va_start stdarg.h हेडर फाइल में परिभाषित है।

  • va_arg मैक्रो और va_list वेरिएबल का उपयोग करके आर्गुमेंट लिस्ट में प्रत्येक आइटम को एक्सेस करें।

  • va_end मैक्रो का उपयोग करके va_list वेरिएबल को आवंटित मेमोरी को क्लीन अप करें।

अब उपरोक्त चरणों का पालन करें और एक सरल फंक्शन लिखें जो वेरिएबल नंबर ऑफ पैरामीटर्स ले सके और उनका औसत लौटाए −

उदाहरण कोड

#include <iostream> #include <cstdarg> using namespace std; double average(int num,...) { va_list valist; double sum = 0.0; int i; va_start(valist, num); //num नंबर ऑफ आर्गुमेंट्स के लिए valist इनिशियलाइज़ करें for (i = 0; i < num; i++) { //valist को असाइन किए गए सभी आर्गुमेंट्स एक्सेस करें sum += va_arg(valist, int); } va_end(valist); //valist के लिए रिजर्व्ड मेमोरी क्लीन करें return sum/num; } int main() { cout << "Average of 2, 3, 4, 5 = "<< average(4, 2,3,4,5) << endl; cout << "Average of 5, 10, 15 = "<< average(3, 5,10,15)<< endl; }

आउटपुट

Average of 2, 3, 4, 5 = 3.5 Average of 5, 10, 15 = 10

  1. - C++ में जांचें कि क्या कोई संख्या मिस्ट्री नंबर है

    यहां हम देखेंगे कि कैसे जांचें कि कोई संख्या मिस्ट्री नंबर है या नहीं। एक मिस्ट्री नंबर वह संख्या है जिसे दो संख्याओं के योग द्वारा दर्शाया जा सकता है, और वे संख्याएं एक-दूसरे की रिवर्स हैं। आइए कोड देखें ताकि बेहतर विचार मिल सके। हमें सभी जोड़ों की जांच करनी होगी और निर्णय ढूंढना होगा। उदाहरण rev

  1. - C++ में CHAR_BIT

    CHAR_BIT क्या है? CHAR_BIT एक बाइट में बिट्स की संख्या दर्शाता है। <climits> या <limits.h> हेडर में परिभाषित। आमतौर पर 8 बिट्स प्रति बाइट होता है। C++ प्रोग्राम उदाहरण #include <bits/stdc++.h> using namespace std; int main() { int x = 28; int total_bits = CHAR_BIT * size

  1. - C++ में वेरिएबल को कैसे इनिशियलाइज़ करें?

    आप असाइनमेंट ऑपरेटर का उपयोग करके या इसे इनिशियलाइज़ करते समय इसके कंस्ट्रक्टर का उपयोग करके वेरिएबल को इनिशियलाइज़ कर सकते हैं। उदाहरण के लिए, int i = 0; MyClass instance(1, Hello); यह स्वचालित रूप से इनिशियलाइज़ हो जाएगा यदि यह एक क्लास/स्ट्रक्चर इंस्टेंस है जिसमें डिफ़ॉल्ट कंस्ट्रक्टर सभी प्रिम