2次元配列のconst

以下のプログラムをCでコンパイルすると,ポインタの型が合わないというエラーがでる.

void hoge(const double f[3][3]){
}
int main(){
  double f[3][3]={{0}};
  hoge(f);
  return 0;
}

2次元配列の const は意味が違うんでしたね,確か.そうですよね? dosei さん?
ちなみに,C++ だと問題なく通るのはなぜでしょうか?