2重ポインタあたりは引っかかると思う。
char** t = (char**)malloc(10*sizeof(char*));
int i;
for( i=0; i<10; i++){
t[i] = (char*)malloc(100*sizeof(char));
}
こんなふうにメモリ取ってこなきゃならんのをけっこう忘れると思う。

あとは
int test(int a[5][10])
のような引数の時とか微妙に型チェックがめんどくさかった気がする。