ポインタ関係で悩んでいます。
int f(int **m)
な関数に
int n[10][10]
を渡すとgccでは以下のようなエラーになります。

test.c: In function ‘main’:
test.c:9: 警告: passing argument 1 of ‘f’ from incompatible pointer type

逆に、
int g(int m[10][10])
な関数に
int **n = new int*[10]; for (int i = 0; i < 10; i++) n= new int[10];
としたnを渡すと以下のようなエラーになります。

test.c: In function ‘main’:
test.c:9: 警告: passing argument 1 of ‘g’ from incompatible pointer type

上のn[10][10]と**nは似たようなものだと思うのですが関数に渡すときは別扱い
されているように見えます。2つはどうちがうのでしょうか。
何らかの方法で渡す事はできるでしょうか。