プロトタイプ宣言中の配列の引数

id:takehikomさんの日記でちょっと気になったのでコメントしたら、さすがに大学で教えているだけあって裏をとろうとしてくださる。少し申しわけなくなってしまった。
要は関数の引数として配列は渡せませんよね?渡せるのはその配列の先頭要素を指すポインタですよね?っていうことだったのだ。たけひこさんは本文中の書き方から当然そのことはご存じだと思ったので逆に脚注の「関数プロトタイプ内のmy_arrayは,配列変数と見なしても,仕様上,問題ありません.」の表現が気になってしまった。

#include <stdio.h>

void my_function(int my_array[10][20])
{
    printf("%d\n", sizeof(my_array));
}

int main (void)
{
    int a[20][20];
    
    my_function(a);
    
	return 0;
}

こんなサンプルコードを書いてみたがもちろん実装から規格を追うのは筋が逆なのだが、、、。