え!?
固定配列は大きさを持ってはじめて成り立ちます。
int Num[10];
だから大きさがなかったらコンパイラに叱られます。
int Num[0]; //↑なんじゃこりゃ!?
では次のような動的確保はどうだろうか?
int* pNum = new int[0]; //↑なんじゃそりゃ!?
これなんと、驚いたことに普通にコンパイルが通ります。警告すら吐かない。(ただしVC7しか試してません)「ひょっとしたらNULLを吐き出しているかな?」と思ったらちゃんとポインタが入っていました。ちなみに、以下のようにしたら実行時にエラーが帰ってきました。
int* pNum = new int[0]; *pNum = 3; delete[] pNum;
てことは、やっぱり有効なポインタじゃぁないんでしょうね。