सी में, मुझे पता है कि मैं गतिशील रूप से निम्नलिखित कोड का उपयोग करके ढेर पर एक दो-आयामी सरणी आवंटित कर सकता हूं:
int** someNumbers = malloc(arrayRows*sizeof(int*));
for (i = 0; i < arrayRows; i++) {
someNumbers[i] = malloc(arrayColumns*sizeof(int));
}
स्पष्ट रूप से, यह वास्तव में पूर्णांक के अलग-अलग आयामी आयामी सरणियों के एक समूह के लिए एक आयामी आयाम बनाता है, और "सिस्टम" यह पता लगा सकता है कि जब मैं पूछता हूं तो मेरा क्या मतलब है:
someNumbers[4][2];
लेकिन जब मैं सांख्यिकीय रूप से एक 2 डी सरणी की घोषणा करता हूं, जैसा कि निम्नलिखित पंक्ति में है: ...
int someNumbers[ARRAY_ROWS][ARRAY_COLUMNS];
... क्या एक समान संरचना स्टैक पर बनाई गई है, या यह पूरी तरह से एक और रूप है? (यानी यह बिंदुओं का 1D सरणी है? यदि नहीं, तो यह क्या है, और इसके संदर्भ कैसे प्राप्त होते हैं?)
इसके अलावा, जब मैंने कहा, "द सिस्टम," वास्तव में यह पता लगाने के लिए क्या जिम्मेदार है? गिरी? या संकलन करते समय C संकलक इसे क्रमबद्ध करता है?
malloc()
में एन-आयामी सरणी नहीं होती है। । यह बिंदुओं के सरणियों [बिंदुओं के सरणियों [...]] को पूरी तरह से एक आयामी सरणियों को अलग करने के परिणामस्वरूप होता है । TRUE N- आयामी सरणी को कैसे आवंटित किया जाए, यह देखने के लिए बहु-आयामी सरणियों को सही ढंग से आवंटित करें देखें ।