একটি 2D অ্যারে একটি একক পয়েন্টার ব্যবহার করে C এ গতিশীলভাবে বরাদ্দ করা যেতে পারে। এর মানে হল যে সাইজ সারি*কলাম*ডেটাটাইপ সাইজের একটি মেমরি ব্লক malloc ব্যবহার করে বরাদ্দ করা হয় এবং ম্যাট্রিক্স উপাদানগুলি অ্যাক্সেস করার জন্য পয়েন্টার গাণিতিক ব্যবহার করা যেতে পারে।
একটি প্রোগ্রাম যা এটি প্রদর্শন করে তা নিম্নরূপ দেওয়া হল।
উদাহরণ
#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
এখন আসুন উপরের প্রোগ্রামটি বুঝতে পারি।
2-ডি অ্যারে অ্যারের গতিশীলভাবে malloc ব্যবহার করে বরাদ্দ করা হয়। তারপর 2-ডি অ্যারেটি লুপ এবং পয়েন্টার গাণিতিকের জন্য নেস্টেড ব্যবহার করে শুরু করা হয়। কোড স্নিপেট যা এটি দেখায় তা নিম্নরূপ।
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;
তারপর 2-ডি অ্যারের মানগুলি প্রদর্শিত হয়। অবশেষে গতিশীলভাবে বরাদ্দ করা মেমরি বিনামূল্যে ব্যবহার করে মুক্ত করা হয়। কোড স্নিপেট যা এটি দেখায় তা নিম্নরূপ।
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);