数组在定义的时候必须指定大小,因为在ISO c++ 98标准中,数组是需要在程序堆上分配固定大小的空间,而之后不可更改。
数组作为函数参数的时候,实际只相当于传递一个数组首地址(和指针作用是一样的),而不是为数组分配空间,和实际声明定义的数组是有区别的,这个可以不指定大小。
不可能声明一个数组形参,形如int a[]形式的声明中a是一个指针。
使用指针T*代替数组T[N]实际上是避免了在编译期指定数组大小,即可以通过malloc() / new[] / ...在运行期动态指定“数组”大小——当然,这实际上不是一个数组。
使用VLA也可以达到同样的效果。
不存在“用指针定义数组”这种说法。