え!?

固定配列は大きさを持ってはじめて成り立ちます。

int Num[10];

だから大きさがなかったらコンパイラに叱られます。

int Num[0];
//↑なんじゃこりゃ!?

では次のような動的確保はどうだろうか?

int* pNum = new int[0];
//↑なんじゃそりゃ!?

これなんと、驚いたことに普通にコンパイルが通ります。警告すら吐かない。(ただしVC7しか試してません)「ひょっとしたらNULLを吐き出しているかな?」と思ったらちゃんとポインタが入っていました。ちなみに、以下のようにしたら実行時にエラーが帰ってきました。

int* pNum = new int[0];
*pNum = 3;
delete[] pNum;

てことは、やっぱり有効なポインタじゃぁないんでしょうね。