সি-তে, আমি জানি যে আমি নীচের কোডটি ব্যবহার করে গাদা হয়ে দ্বি-মাত্রিক অ্যারে বরাদ্দ করতে পারি:
int** someNumbers = malloc(arrayRows*sizeof(int*));
for (i = 0; i < arrayRows; i++) {
someNumbers[i] = malloc(arrayColumns*sizeof(int));
}
স্পষ্টতই, এটি সংখ্যার পৃথক এক-মাত্রিক অ্যারেগুলির একগুচ্ছ পয়েন্টারগুলির একটি এক-মাত্রিক অ্যারে তৈরি করে এবং "দ্য সিস্টেম" যখন আমি জিজ্ঞাসা করি তখন আমার অর্থ কী তা নির্ধারণ করতে পারে:
someNumbers[4][2];
তবে যখন আমি স্থিরভাবে নিম্নলিখিত লাইনের মতো 2D অ্যারে ঘোষণা করি ...:
int someNumbers[ARRAY_ROWS][ARRAY_COLUMNS];
... স্ট্যাকের উপর কি একই ধরণের কাঠামো তৈরি হয়, বা এটি অন্য কোনও রূপের সম্পূর্ণরূপে? (অর্থাত্ এটি পয়েন্টারগুলির 1D অ্যারে? যদি তা না হয় তবে এটি কী এবং কীভাবে এর উল্লেখগুলি পাওয়া যায়?)
এছাড়াও, যখন আমি "সিস্টেম" বলেছিলাম, আসলে এটি আবিষ্কারের জন্য দায়ী কী? কর্নেল? অথবা সি সংকলক সংকলন করার সময় এটি বাছাই করে?
malloc()
প্রসারিত করতে: লুপিং এবং কল করার ফলে কোনও এন-ডাইমেনশনাল অ্যারে হয় না। । এটি পয়েন্টারগুলির অ্যারে [পয়েন্টারগুলির অ্যারে [[]]] এর জন্য এক-মাত্রিক অ্যারেগুলিকে সম্পূর্ণ পৃথক করে তোলে। দেখুন সঠিকভাবে বহু মাত্রিক অ্যারে বণ্টন বরাদ্দ করা কিভাবে দেখতে 'সত্য' এন-মাত্রিক অ্যারে।