सी ++ में, परिवर्तनीय लंबाई सरणी कानूनी नहीं हैं। जी ++ (सी ++ मानक का पालन के बारे में -pedantic
किया जा रहा बिना) एक "विस्तार" (क्योंकि सी यह अनुमति देता है), जी में तो ++ के रूप में इस की अनुमति देता है, तो आप कर सकते हैं:
int n = 10;
double a[n]; // Legal in g++ (with extensions), illegal in proper C++
आप एक "चर लंबाई सरणी" चाहते हैं (बेहतर है, एक "गतिशील आकार सरणी" C++ कहा जाता है के बाद से उचित चर लंबाई सरणियों की अनुमति नहीं है), तो आप या तो गतिशील स्मृति अपने आप को आवंटित करने के लिए है:
int n = 10;
double* a = new double[n]; // Don't forget to delete [] a; when you're done!
या, बेहतर अभी तक, एक मानक कंटेनर का उपयोग करें:
int n = 10;
std::vector<double> a(n); // Don't forget to #include <vector>
आप अभी भी एक उचित सरणी चाहते हैं, आप एक निरंतर, नहीं एक चर, जब यह बनाने का उपयोग कर सकते हैं:
const int n = 10;
double a[n]; // now valid, since n isn't a variable (it's a compile time constant)
इसी तरह, आप में सी + एक समारोह से आकार प्राप्त करना चाहते हैं, तो +11, आप constexpr
का उपयोग कर सकते हैं:
constexpr int n()
{
return 10;
}
double a[n()]; // n() is a compile time constant expression
यह एक भाषा देने में मदद करेगा। सी ++ में उस फ़ॉर्म के आपके सरणी को संकलन-समय निरंतर आकार होना चाहिए। – OrangeAlmondSoap
सी ++, mingw32-g ++ संकलक के साथ Codeblocks का उपयोग कर! – msmf14
धन्यवाद, जस्टिन और @AndrewVarnerin, जिसने इसे हल किया! int से पहले जोड़ा गया कॉन्स: const int n = 10; हल हो गया! – msmf14