There is an easier way to pass 2D arrays, take a look at this example. Perhaps it's not the most elegant way, but it some clearer than your way.
Code:
#include <stdio.h>
#include <string.h>
void fill (int array [3][4])
{
int x,y;
for (x = 0; x < 3; x++)
{
for (y = 0; y < 4; y++)
{
array [x][y] = x;
}
}
}
void print (int array [3][4])
{
int x,y;
for (x = 0; x < 3; x++)
{
for (y = 0; y < 4; y++)
{
printf ("i [%d,%d] = %d\n", x, y, array [x][y]);
}
}
}
int main ()
{
int i [3][4];
int x,y;
fill (i);
print (i);
return 0;
}