首先说明的是,a 不是数组,是一个指针。 int *a=new int[10]; 是用new开辟一个10个int的数组的内存,把头指针赋值给a,所以a可以访问这些数组的数据,int *a=new int; 开辟一个int的内存空间, 至于引用a[100]当然可以,因为a是内存地址的指针,它一般能移动100次,但是它指的地方一般没初始化,所以可能会出现乱码,但是不会报错。