#define MAXSIZE 100 int *p; int a[MAXSIZE]; //下面这两条语句到底有什么区别?不都是申请了MAXSIZE个空间吗? p=new int[MAXSIZE]; p=a;
申请的空间所在区域不一样。静态分配在栈里,动态分配在堆里。栈空间比较小,不适合大量空间的申请。
静态数组是在编译的时候在栈上分配空间的,因此在编译时就要知道分配空间的大小动态数组是在运行的时候在堆上分配的,因此可以在运行时再确定分配空间的大小。