2010-04-29 29 views

उत्तर

23

यह अनिर्दिष्ट प्रकार के तर्कों की एक चर संख्या की अनुमति देता है (जैसे printf करता है)।

आप के साथ va_start, va_arg और va_end

अधिक जानकारी

15

Variadic functions

variadic कार्यों कार्य करता है जो तर्क के परिवर्तनशील समय लग सकता है और पिछले पैरामीटर के स्थान पर एक अंडाकार के साथ की घोषणा की जाती है। ऐसे फ़ंक्शन का एक उदाहरण printf है।

एक ठेठ घोषणा, उदाहरण के लिए,

int check(int a, double b, ...); 

variadic कार्यों में कम से कम एक का नाम पैरामीटर होना आवश्यक है, इसलिए

char *wrong(...); 

सी

6

का इन अनुमति नहीं है तीन बिंदु '...' को इलिप्सिस कहा जाता है। फ़ंक्शन में उनका उपयोग करने से यह भिन्नता फ़ंक्शन कार्य करता है। फ़ंक्शन घोषणा में उनका उपयोग करने का अर्थ है कि फ़ंक्शन पहले से परिभाषित किए जाने के बाद पैरामीटर की मनमानी संख्या स्वीकार करेगा।

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

Feeder("abc"); 
Feeder("abc", "def"); 

सभी वैध फ़ंक्शन कॉल कर रहे हैं, फिर भी निम्नलिखित नहीं होगा:

Feeder(); 
3

variadic समारोह (एक से अधिक पैरामीटर)

wiki

#include <stdarg.h> 

double average(int count, ...) 
{ 
    va_list ap; 
    int j; 
    double tot = 0; 
    va_start(ap, count); //Requires the last fixed parameter (to get the address) 
    for(j=0; j<count; j++) 
     tot+=va_arg(ap, double); //Requires the type to cast to. Increments ap to the next argument. 
    va_end(ap); 
    return tot/count; 
} 
संबंधित मुद्दे