2010-03-03 15 views
6

इसका क्या अर्थ है?सी ... फ़ंक्शन घोषणा में "..." का क्या अर्थ है?

void message(int x, int y, ...) 

मुझे समझ में नहीं आता कि क्या है ... है। क्या कोई समझा सकता है?

+1

एक संबंधित बात यह है कि सी खाली समारोह मापदंडों में() के रूप में (...) अर्थात एक ही है, कि समारोह कोई पैरामीटर लग सकता है इसका मतलब है। आपको यह बताने के लिए (शून्य) का उपयोग करने की आवश्यकता है कि यह कोई भी नहीं लेता है। सी ++() में इसका मतलब है कि यह कोई भी नहीं लेता है, जैसा कि कोई उम्मीद करेगा। – Tronic

+2

एक खाली पैरामीटर सूची '()' ** ** नहीं ** ** (...) 'जैसी ही चीज़ है। एक खाली पैरामीटर सूची का अर्थ है कि फ़ंक्शन एक निश्चित, लेकिन अनिर्दिष्ट, संख्याओं की संख्या लेता है। '(...) 'का अर्थ है कि यह तर्कों की एक चर संख्या लेता है (और काफी बेकार है, क्योंकि फ़ंक्शन कम से कम एक निश्चित तर्क के बिना उन तर्कों तक पहुंचने में सक्षम नहीं होगा)। – caf

उत्तर

5

पैरामीटर की निर्दिष्ट/परिवर्तनीय संख्या।

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

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

     int maxof(int, ...) ; 
     void f(void); 

     main(){ 
       f(); 
       exit(EXIT SUCCESS); 
     } 

     int maxof(int n args, ...){ 
       register int i; 
       int max, a; 
       va_list ap; 

       va_start(ap, n args); 
       max = va_arg(ap, int); 
       for(i = 2; i <= n_args; i++) { 
         if((a = va_arg(ap, int)) > max) 
           max = a; 
       } 

       va_end(ap); 
       return max; 
     } 

    void f(void) { 
      int i = 5; 
      int j[256]; 
      j[42] = 24; 
      printf("%d\n",maxof(3, i, j[42], 0)); 
    } 

आप अधिक विवरण here

+0

आपका कोड और सुझाव मुझे बहुत मदद करता है। थैक्स – ambika

8

...परिवर्तनीय तर्कों की सूची को दर्शाता है जिसे va_arg, va_end and va_start के माध्यम से एक्सेस किया जा सकता है।

+0

कुछ अच्छे प्रोग्रामर यहां हैं। आप उनमें से एक हैं। बहुत बहुत धन्यवाद – ambika

3

आप एक समारोह संदेश कहीं कि प्रकार int के कम से कम दो तर्क और फिर कुछ वैकल्पिक तर्क से "..." संकेत दिया लेता है परिभाषित किया है। (printf वैकल्पिक तर्क लेने वाला एक और कार्य है)।

वैकल्पिक तर्क va_* कार्यों का उपयोग कर पहुँचा जा सकता है।

0

पा सकते हैं यह चर है इस तरह के समारोह को संभालने के लिए आप va_list प्रकार और va_start, va_arg, और va_end कार्यों का उपयोग करने के लिए है तर्क औपचारिक पैरामीटर। वाक्य रचनात्मक संभावना से यह आपको पैरामीटर की एक चर संख्या को पास करने की अनुमति देता है (कम से कम दो, जो एक्स और वाई हैं, लेकिन इससे भी अधिक)।

2

... अंतिम तर्क एक सरणी के रूप में या तर्कों के एक दृश्य के रूप में पारित प्रतिनिधित्व करता है। नोट करने के लिए लायक

संबंधित मुद्दे