配列へのポインタ。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]へのポインターっだなんて、ニッチな使い方あまりしないよね。
けど、できちゃう。いつ使うんだろう?