কম্পিউটার টিউটোরিয়াল

সি-তে ডাইনামিক্যালি ২D অ্যারে অ্যালোকেট করা (Dynamically Allocate 2D Array)


সি-তে একটি ২D অ্যারে একটি সিঙ্গেল পয়েন্টার ব্যবহার করে ডাইনামিক্যালি অ্যালোকেট করা যায়। এর মানে হলো malloc ব্যবহার করে row*column*dataTypeSize আকারের একটি মেমরি ব্লক অ্যালোকেট করা হয় এবং পয়েন্টার অ্যারিথমেটিক ব্যবহার করে ম্যাট্রিক্স এলিমেন্টগুলো অ্যাক্সেস করা হয়।

এটি প্রদর্শন করে একটি প্রোগ্রাম নিচে দেওয়া হলো।

উদাহরণ

#include <stdio.h>
#include <stdlib.h>

int main() {
    int row = 2, col = 3;
    int *arr = (int *)malloc(row * col * sizeof(int));
    int i, j;
    for (i = 0; i < row; i++)
        for (j = 0; j < col; j++)
            *(arr + i*col + j) = i + j;
    printf("The matrix elements are:\n");
    for (i = 0; i < row; i++) {
        for (j = 0; j < col; j++) {
            printf("%d ", *(arr + i*col + j));
        }
        printf("\n");
    }
    free(arr);
    return 0;
}

উপরের প্রোগ্রামের আউটপুট নিচের মতো:

The matrix elements are:
0 1 2
1 2 3

এখন উপরের প্রোগ্রামটি বুঝি।

২-D অ্যারে arr malloc ব্যবহার করে ডাইনামিক্যালি অ্যালোকেট করা হয়েছে। তারপর ২-D অ্যারেটি নেস্টেড ফর লুপ এবং পয়েন্টার অ্যারিথমেটিক ব্যবহার করে ইনিশিয়ালাইজ করা হয়েছে। এটি দেখানো কোড স্নিপেট নিচে:

int row = 2, col = 3;
int *arr = (int *)malloc(row * col * sizeof(int));
int i, j;
for (i = 0; i < row; i++)
    for (j = 0; j < col; j++)
        *(arr + i*col + j) = i + j;

তারপর ২-D অ্যারে ভ্যালুগুলো প্রদর্শন করা হয়েছে। অবশেষে ডাইনামিক্যালি অ্যালোকেটেড মেমরি free ব্যবহার করে মুক্ত করা হয়েছে। এটি দেখানো কোড স্নিপেট নিচে:

printf("The matrix elements are:\n");
for (i = 0; i < row; i++) {
    for (j = 0; j < col; j++) {
        printf("%d ", *(arr + i*col + j));
    }
    printf("\n");
}
free(arr);
  1. জাভাস্ক্রিপ্টে অ্যারে তৈরির পদ্ধতি

  2. জাভাস্ক্রিপ্ট অ্যারে সিরিয়ালাইজ করার উপায়

  3. জাভাস্ক্রিপ্টে মেমরি অ্যালোকেট করা

  4. জাভাস্ক্রিপ্টে অ্যারে ব্যবহার করে ডাইনামিকভাবে রেডিও বাটন তৈরি করা