配列へのポインタ。char (*) [3] これー、意味分かる?

char (*) [3]; これコンパイルとおります。

char *x [3]; これの意味はcharへのポインタが3つからなる配列をつくる。

じゃあこれは!?
char (*x) [3];

これは、上とおなじじゃない!?

違います。
これは char型が3つお要素からなる配列へのポインタです。

ちなみに、
char * x [3];
char (*h) [3];

char chararray3[4] = {1, 2, 3, };


printf("sizeof(x) = %d\n", sizeof(x));
printf("sizeof(h) = %d\n", sizeof(h));

h = &chararray3;

return 0;

これは、コンパイルエラーになります。
かつ、sizeof(x) は12だけど、
sizeof(h)は4です。

コンパイルエラーの理由は、hは配列[3]へのポインターなのに、
配列[4]へのポインターを代入しようとしているから。

配列[3]へのポインターっだなんて、ニッチな使い方あまりしないよね。
けど、できちゃう。いつ使うんだろう?