2009-03-01 12 views
49

मैं एक समारोह परिभाषा में आए:प्रश्न (मानकों में तीन बिंदु ..)

char* abc(char *f, ...) 
{ 
} 

तीन डॉट्स क्या मतलब है?

+6

त्वरित प्रतिक्रिया के लिए सभी को धन्यवाद ... यह समुदाय बहुत ही अजीब है .. – ashishsony

+1

अच्छी तरह से .. यह सवाल दिखाता है कि मैं ध्यान नहीं दे रहा हूं, जबकि मैं पेशेवर पिछले एक साल से कोडिंग कर रहा हूं, क्योंकि मैंने printf, scanf का उपयोग किया है इतनी बार ... लेकिन इसने मुझे कभी क्लिक नहीं किया कि ये कार्य असीमित तर्क कैसे स्वीकार कर सकते हैं..मुझे ऐसे प्रश्न पूछने की ज़रूरत है। – ashishsony

उत्तर

38

इलिप्स का मतलब है कि तर्कों की एक चर संख्या है। जिस स्थान पर आप उन्हें उपयोग करेंगे (शायद बिना महसूस किए) स्थान printf फ़ंक्शन का परिवार हैं।

वे आपको उस शैली के कार्यों को बनाने की अनुमति देते हैं जहां पैरामीटर पहले से ज्ञात नहीं हैं, और आप varargs फ़ंक्शंस का उपयोग कर सकते हैं (विशिष्ट तर्क प्राप्त करने के लिए, va_arg और va_end)।

यह लिंक hereprintf पर परिवर्तनीय तर्क सूचियों का उपयोग पर एक अच्छा ग्रंथ है।

11

उन्हें एक एलिप्सिस कहा जाता है और उनका मतलब है कि फ़ंक्शन पैरामीटर की अनिश्चित संख्या ले सकता है। आपके फ़ंक्शन को शायद इस तरह कहा जा सकता है:

abc("foo", 0); 
abc("foo", "bar", 0); 

सूची के अंत को इंगित करने का एक तरीका होना आवश्यक है। यह पहले पैरामीटर का उपयोग करके किया जा सकता है, आयन एक प्रिंटफ (0 प्रारूप स्ट्रिंग, या एक विशेष टर्मिनेटर द्वारा, ऊपर दिए गए उदाहरण में शून्य।

पैरामीटर की एक चर संख्या के साथ कार्य को C++ में खराब रूप माना जाता है पैरामीटर पर कोई प्रकार की जांच या उपयोगकर्ता परिभाषित रूपांतरण नहीं किए जा सकते हैं।

3

यह वही एक varargs समारोह या सी

में एक चर तर्क समारोह

एक तो आप शायद पहचान लेंगे कहा जाता है printf है।

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