हां, एक अंतर है। सी में, const
वैरिएबल को अभी भी एक वास्तविक संकलन-समय स्थिर के रूप में नहीं माना जाता है (आधिकारिक तौर पर, इसे constant expression
के हिस्से की अनुमति नहीं है), इसलिए इसकी अनुमति नहीं है। नोट, हालांकि, हालांकि सी को यह आवश्यक नहीं है कि संकलक इसे अनुमति दे, मानक मानक अभिव्यक्ति के अन्य रूपों को स्वीकार करने के लिए कार्यान्वयन के लिए अनुमति देता है, इसलिए यह चुनने पर इसे स्वीकार करने के लिए स्वतंत्र है।
सी ++ में, const
चर को निरंतर माना जाता है, इसलिए इसकी अनुमति है।
दिलचस्प है, मोटे तौर पर रिवर्स सच है जब आप एक मूल्य के एक समारोह पैरामीटर के रूप में पारित कर दिया उपयोग करें:
void f(int size) {
int array[size];
}
यह है सी में अनुमति दी है, लेकिन सी में नहीं ++। यह variably modified
सरणी है; आपको जो त्रुटि संदेश मिल रहा है वह मूल रूप से आपको यह बताने की कोशिश कर रहा है कि इन्हें केवल कार्यों के अंदर ही अनुमति दी गई है।
स्रोत
2011-11-03 22:37:07
सी में, आप एक सरणी के आकार को किसी फ़ंक्शन में पास कर सकते हैं? सीखा ! धन्यवाद! – Rich
@Rich: हाँ, लेकिन केवल तभी जब आपका कंपाइलर सी 99 (कम से कम इस संबंध में) के अनुरूप है - यह C89/90 में शामिल नहीं था (हालांकि यह पुराने कंपाइलर्स के साथ भी काफी आम विस्तार था)। –