This topic must have been beaten to death, but the issue I've encountered seems very odd.
Here is the C code:
void test_array(int *, int *, double **); // To test accessing a Fortran 2D array.
int narr1, narr2;
test_array(&narr1, &narr2, &farr);
for (i=0;i<narr1*narr2; i++)
and the Fortran: