Dynamic 2D Arrays
Allocated on the stack - more efficient, flexible
Allocation:int **dynamic;dynamic =(int**)malloc(sizeof(int *)*50);dynamic[0] = (int*)malloc(sizeof(int)*50*100);for (i=1;iអi++) dynamic[i] = dynamic[i-1]+100; Access:dynamic[5][10] = 1; or: dynamic[0][5*100+9] = 1; or: dynamic[1][4*100+9] = 1; etc..
Initialization example:int *ptr = dynamic[0];int *end = dynamic[49]+99; /* or end = dynamic + 100 */ *end = 0; while (ptr != end) *ptr++ = 0;
Passing to a functionFunction prototype:void foo(int ** ptr); Function call: foo(dynamic);