为何动态数组要用int p*=new int[n]

为什么动态数组要用int p*=new int[n]?
int p=new int(n)非数组可以这样,数组就要加星号,但是用的时候是还是p[n],这个怎么理解啊?p是指针吗?
------解决方案--------------------
擦,楼主确定没有写错int p = new int (n)
int *p = new int [n];   这个是申请n大小为int的内存

int *p = new int (n); 这个是申请 1  个值为 n  的内存
------解决方案--------------------
引用:
int *p = new int (n)的话,p就是个指针咯?
int *p = new int [n]其中p也是指针的话指向什么呢?
嗯,还有一个问题,比如int *p=new int[n],n的值改变后这个内存大小就自动改变了吗?


p当然是指针
int *p = new int [n]其中p指向一个大小为n的int型数组的首元素
new申请内存一次完成,申请成功后就不会变了,除非你delete掉重新new


------解决方案--------------------
引用:
Quote: 引用:

擦,楼主确定没有写错int p = new int (n)
int *p = new int [n];   这个是申请n大小为int的内存

int *p = new int (n); 这个是申请 1  个值为 n  的内存

int *p = new int (n)的话,p就是个指针咯?
int *p = new int [n]其中p也是指针的话指向什么呢?
嗯,还有一个问题,比如int *p=new int[n],n的值改变后这个内存大小就自动改变了吗?



一个人睡一个床,n个人就要分配n个床。如果有10个人,你分配5个床睡不开,分配15个床就浪费5个。
所以你n写得多少,系统就会分配sizeof(int)*n这么大的内存。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

int *p = new int (n)的话,p就是个指针咯?
int *p = new int [n]其中p也是指针的话指向什么呢?
嗯,还有一个问题,比如int *p=new int[n],n的值改变后这个内存大小就自动改变了吗?


p当然是指针
int *p = new int [n]其中p指向一个大小为n的int型数组的首元素
new申请内存一次完成,申请成功后就不会变了,除非你delete掉重新new


啊?那怎么用动态数组啊?


你可以试试std::vector