Sunday 15 July 2012

c++ - Difference between const int and int in an array declaration? -


इस प्रकार की घोषणा क्यों

  int nArraySize = 7; चार szName [nArraySize] = "मल्ली";   

इस त्रुटि को देता है:

  त्रुटि: चर-आकार वाले ऑब्जेक्ट 'szName' को प्रारंभ नहीं किया जा सकता है   

लेकिन जब मैं 'arraySize' चर को 'const int' के रूप में घोषित करता हूँ यह काम करता है?

  const int nArraySize = 7; चार szName [nArraySize] = "मल्ली";    

यह पहले कहा जाना चाहिए कि सी ++ भाषा में, सरणी घोषणापत्र का आकार हिस्सा है एक अभिन्न स्थिर अभिव्यक्ति (आईसीई) होना आवश्यक है एक प्रारंभक के साथ घोषित एक const int वस्तु एक आईसीई में इस्तेमाल किया जा सकता है आइसीई में एक int वस्तु का उपयोग नहीं किया जा सकता। यह इसका औपचारिक हिस्सा है।

हालांकि, त्रुटि संदेश के आधार पर, आपके C ++ कंपाइलर C + + में C99- शैली चर-लंबाई सरणियों (VLA) समर्थन करता है , गैर- मानक एक्सटेंशन इसका अर्थ है कि आपके कंपाइलर में आपको सरणी घोषणाओं में आकार निर्दिष्ट करने के लिए गैर-स्थिर अभिव्यक्ति का उपयोग करने की अनुमति है। फिर भी भले ही वीएलए स्वयं समर्थित हो, ऐसे सरणियों को अभी भी आरंभ नहीं किया जा सकता है। यह C99 में वीएलएएस के विनिर्देशन द्वारा निषिद्ध है, और यह ठीक उसी तरह है कि उनके विनिर्देश को आपके सी ++ कंपाइलर द्वारा "विरासत में मिला" किया गया है।

दूसरे शब्दों में, अन्य उत्तरों के विपरीत, यह कोड संभवतः होगा आपके सी ++ संकलक द्वारा स्वीकार किया गया

  int nArraySize = 7; चार szName [nArraySize];   

भले ही यह औपचारिक रूप से अवैध सी ++ है यह = "मौली" भाग है जो त्रुटि को चालू करता है।

No comments:

Post a Comment