आप इसे किसी भी डेटा प्रकार से कर सकते हैं। बस इसे एक पॉइंटर-टू-पॉइंटर बनाएं:
typedef struct {
int myint;
char* mystring;
} data;
data** array;
लेकिन यह मत भूलना कि आपको अभी भी चर को मॉलोक करना है, और यह थोड़ा जटिल हो जाता है:
//initialize
int x,y,w,h;
w = 10; //width of array
h = 20; //height of array
//malloc the 'y' dimension
array = malloc(sizeof(data*) * h);
//iterate over 'y' dimension
for(y=0;y
संरचना को डिलीकेट करने के लिए कोड समान दिखता है - आपके द्वारा मॉल किए गए सब कुछ पर मुफ्त() को कॉल करना न भूलें! (साथ ही, मजबूत अनुप्रयोगों में आपको malloc() ।)
अब मान लें कि आप इसे किसी फ़ंक्शन में पास करना चाहते हैं। आप अभी भी डबल पॉइंटर का उपयोग कर सकते हैं, क्योंकि आप शायद डेटा संरचना पर हेरफेर करना चाहते हैं, पॉइंटर डेटा संरचनाओं के पॉइंटर्स के लिए नहीं:
int whatsMyInt(data** arrayPtr, int x, int y){
return arrayPtr[y][x].myint;
}
इस समारोह को इसके साथ कॉल करें:
printf("My int is %d.\n", whatsMyInt(array, 2, 4));
आउटपुट:
My int is 6.