अक्सर मुझे इस तरह घोषित एक फ़ंक्शन दिखाई देता है:एक सी समारोह घोषणा में, अंतिम पैरामीटर के रूप में "..." क्या करता है?
void Feeder(char *buff, ...)
"..." का क्या अर्थ है?
अक्सर मुझे इस तरह घोषित एक फ़ंक्शन दिखाई देता है:एक सी समारोह घोषणा में, अंतिम पैरामीटर के रूप में "..." क्या करता है?
void Feeder(char *buff, ...)
"..." का क्या अर्थ है?
यह अनिर्दिष्ट प्रकार के तर्कों की एक चर संख्या की अनुमति देता है (जैसे printf
करता है)।
आप के साथ va_start
, va_arg
और va_end
अधिक जानकारी
इसका मतलब है कि एक variadic function घोषित किया जा रहा है के लिए http://publications.gbdirect.co.uk/c_book/chapter9/stdarg.html देख उन तक पहुँचने के लिए है।
variadic कार्यों कार्य करता है जो तर्क के परिवर्तनशील समय लग सकता है और पिछले पैरामीटर के स्थान पर एक अंडाकार के साथ की घोषणा की जाती है। ऐसे फ़ंक्शन का एक उदाहरण
printf
है।एक ठेठ घोषणा, उदाहरण के लिए,
int check(int a, double b, ...);
variadic कार्यों में कम से कम एक का नाम पैरामीटर होना आवश्यक है, इसलिए
char *wrong(...);
सी
का इन अनुमति नहीं है तीन बिंदु '...' को इलिप्सिस कहा जाता है। फ़ंक्शन में उनका उपयोग करने से यह भिन्नता फ़ंक्शन कार्य करता है। फ़ंक्शन घोषणा में उनका उपयोग करने का अर्थ है कि फ़ंक्शन पहले से परिभाषित किए जाने के बाद पैरामीटर की मनमानी संख्या स्वीकार करेगा।
उदाहरण के लिए:
Feeder("abc");
Feeder("abc", "def");
सभी वैध फ़ंक्शन कॉल कर रहे हैं, फिर भी निम्नलिखित नहीं होगा:
Feeder();
variadic समारोह (एक से अधिक पैरामीटर)
#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;
}