C में 2D ऐरे को सिंगल पॉइंटर का उपयोग करके डायनामिकली आवंटित किया जा सकता है। इसका मतलब है कि 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
अब आइए उपरोक्त प्रोग्राम को समझते हैं।
2-D ऐरे arr को malloc का उपयोग करके डायनामिकली आवंटित किया गया है। फिर 2-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;
फिर 2-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);