सी

2012-02-07 4 views
25

में डिफ़ॉल्ट पैरामीटर सी में डिफ़ॉल्ट पैरामीटर के लिए मान सेट करना संभव है? उदाहरण के लिए:सी

void display(int a, int b=10){ 
//do something 
} 

main(){ 
    display(1); 
    display(1,2); // override default value 
} 

विजुअल स्टूडियो 2008, शिकायतों वहाँ -void प्रदर्शन में एक सिंटैक्स त्रुटि (एक int, int ख = 10) है। यदि यह सी में कानूनी नहीं है, तो विकल्प क्या है? कृपया मुझे बताओ। धन्यवाद।

+1

वास्तव में यह सी सी में कानूनी नहीं है, अधिभार भी नहीं है। – Mysticial

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/1472138/c-default-arguments –

+0

http://stackoverflow.com/questions/2988038/default-values-on-arguments-in-c-functions-and- फ़ंक्शन-ओवरलोडिंग-इन-सी –

उत्तर

36

डिफ़ॉल्ट पैरामीटर एक सी ++ सुविधा है।

सी में कोई डिफ़ॉल्ट पैरामीटर नहीं है।

4

सी में कोई डिफ़ॉल्ट पैरामीटर

एक तरह से आप इस से प्राप्त कर सकते हैं शून्य संकेत में पास और फिर डिफ़ॉल्ट करने के लिए मूल्यों को निर्धारित करता है, तो शून्य पारित हो जाता है करने के लिए है रहे हैं। यह खतरनाक है हालांकि मैं इसकी अनुशंसा नहीं करता जबतक कि आपको वास्तव में डिफ़ॉल्ट पैरामीटर की आवश्यकता न हो।

उदाहरण

function (char *path) 
{ 
    FILE *outHandle; 

    if (path==NULL){ 
     outHandle=fopen("DummyFile","w"); 
    }else 
    { 
     outHandle=fopen(path,"w"); 
    } 

} 
9

यह संभव मानक सी में एक वैकल्पिक समारोह नाम में मानकों एन्कोड करने के लिए, उदाहरण के लिए की तरह है नहीं है

void display(int a){ 
    display_with_b(a, 10); 
} 

void display_with_b(int a, int b){ 
    //do something 
} 
+1

+1। मुझे [इस उत्तर] (http://stackoverflow.com/a/1472310/790070) पर एक टिप्पणी में अभ्यास पसंद है, जहां फ़ंक्शन का नाम इसमें पैरामीटर की संख्या शामिल है। –

1

ऐसा नहीं है कि जिस तरह से ...

आप किसी पूर्णांक सरणी या एक varargs का उपयोग करें और अपने कार्य के भीतर गुम डेटा में भरने सकता है। हालांकि आप संकलन समय जांच खो देते हैं।