Code:
/*
[Array Pointer 0]---->[Data Pointer 0]--->[Real Data Item]
[Data Pointer 1]--->[Real Data Item]
[Data Pointer 2]--->[Real Data Item]
[Data Pointer 3]--->[Real Data Item]
[Data Pointer 4]--->[Real Data Item]
[Data Pointer 5]--->[Real Data Item]
[Array Pointer 1]---->[Data Pointer 0]--->[Real Data Item]
[Data Pointer 1]--->[Real Data Item]
[Array Pointer 3]---->[Data Pointer 0]--->[Real Data Item]
[Data Pointer 1]--->[Real Data Item]
[Data Pointer 2]--->[Real Data Item]
[Data Pointer 3]--->[Real Data Item]
[Data Pointer 4]--->[Real Data Item]
....
[Array Pointer 9]---->[Data Pointer 0]--->[Real Data Item]
[Data Pointer 1]--->[Real Data Item]
[Data Pointer 2]--->[Real Data Item]
*/
#include <stdio.h>
#include <stdlib.h>
struct Data
{
int i;
};
struct Data RealData = {1};
int main(void)
{
struct Data **pSections[10];
/* Now size for 10 sections */
int SectionsCount[] = {5, 2, 3, 5, 6, 1, 3, 2, 5, 9};
int i, j;
for (i = 0; i < 10; ++i)
{
/* Malloc space for SectionsCount[i] number of pointers */
pSections[i] = malloc(sizeof(pSections[i])*SectionsCount[i]);
for (j = 0; j < SectionsCount[i]; ++j)
{
pSections[i][j] = &RealData;
}
}
for (i = 0; i < 10; ++i)
{
for (j = 0; j < SectionsCount[i]; ++j)
{
printf ("Main Array item %d, Sub element %d, Value: %d\n", i, j, pSections[i][j]->i);
}
}
return 0;
}
/*
Output
Main Array item 0, Sub element 0, Value: 1
Main Array item 0, Sub element 1, Value: 1
Main Array item 0, Sub element 2, Value: 1
Main Array item 0, Sub element 3, Value: 1
Main Array item 0, Sub element 4, Value: 1
Main Array item 1, Sub element 0, Value: 1
Main Array item 1, Sub element 1, Value: 1
Main Array item 2, Sub element 0, Value: 1
Main Array item 2, Sub element 1, Value: 1
Main Array item 2, Sub element 2, Value: 1
Main Array item 3, Sub element 0, Value: 1
Main Array item 3, Sub element 1, Value: 1
Main Array item 3, Sub element 2, Value: 1
Main Array item 3, Sub element 3, Value: 1
Main Array item 3, Sub element 4, Value: 1
Main Array item 4, Sub element 0, Value: 1
Main Array item 4, Sub element 1, Value: 1
Main Array item 4, Sub element 2, Value: 1
Main Array item 4, Sub element 3, Value: 1
Main Array item 4, Sub element 4, Value: 1
Main Array item 4, Sub element 5, Value: 1
Main Array item 5, Sub element 0, Value: 1
Main Array item 6, Sub element 0, Value: 1
Main Array item 6, Sub element 1, Value: 1
Main Array item 6, Sub element 2, Value: 1
Main Array item 7, Sub element 0, Value: 1
Main Array item 7, Sub element 1, Value: 1
Main Array item 8, Sub element 0, Value: 1
Main Array item 8, Sub element 1, Value: 1
Main Array item 8, Sub element 2, Value: 1
Main Array item 8, Sub element 3, Value: 1
Main Array item 8, Sub element 4, Value: 1
Main Array item 9, Sub element 0, Value: 1
Main Array item 9, Sub element 1, Value: 1
Main Array item 9, Sub element 2, Value: 1
Main Array item 9, Sub element 3, Value: 1
Main Array item 9, Sub element 4, Value: 1
Main Array item 9, Sub element 5, Value: 1
Main Array item 9, Sub element 6, Value: 1
Main Array item 9, Sub element 7, Value: 1
Main Array item 9, Sub element 8, Value: 1
*/
[edit]