के साथ सरणी आकार को घोषित करना मैंने हमेशा सोचा कि सी ++ में सरणी घोषित करते समय, आकार को निरंतर पूर्णांक मान होना चाहिए।एक गैर-स्थिर चर
उदाहरण के लिए:
int MyArray[5]; // correct
या
const int ARRAY_SIZE = 6;
int MyArray[ARRAY_SIZE]; // correct
लेकिन
int ArraySize = 5;
int MyArray[ArraySize]; // incorrect
यहाँ भी क्या The C++ Programming Language, by Bjarne Stroustrup से समझाया गया है है:
सरणी के तत्वों की संख्या, सरणीबद्ध, निरंतर अभिव्यक्ति (§C.5) होना चाहिए। यदि आपको चर सीमाओं की आवश्यकता है, तो वेक्टर (§3.7.1, §16.3) का उपयोग करें। उदाहरण के लिए:
void f(int i) {
int v1[i]; // error : array size not a constant expression
vector<int> v2(i); // ok
}
लेकिन मेरा बड़ा आश्चर्य करने के लिए, कोड ऊपर अपने सिस्टम पर ठीक संकलन करता है!
यहाँ मैं संकलन करने की कोशिश की है:
void f(int i) {
int v2[i];
}
int main()
{
int i = 3;
int v1[i];
f(5);
}
मैं कोई त्रुटि मिल गया है! मैं जीसीसी v4.4.0 का उपयोग कर रहा हूँ।
क्या मुझे कुछ याद आ रही है?
और यही कारण है कि एक कंपाइलर के साथ कुछ परीक्षण करने से कोड शुद्धता के मामले में कुछ भी मतलब नहीं है। – GManNickG
का डुप्लिकेट http://stackoverflow.com/questions/737240/c-c-array-size-at-run-time-w-o- गतिशील- आवंटन-is-allowed – nico