C++初始化动态分配内存的数组

这样一个程序#include
using namespace std;
int main()
{
int *p=new int[10];
for(int i=0;i<10;i++)
{
p[i]=i+1;
cout<<p[i]<<' ';
}
delete []p;
return 0;
}
我可以不用for循环初始化这个数组吗???

不可以,如果初始化为0可以memset,

可以初始化同一个值,但是不能用不同的值


int *p=new int[10](0);

C++11的特性允许:

 int *p = new int[10]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

VS2013以及之后的版本默认支持。gcc/clang 需要开启c++11选项 -std=c++11

for循环是赋值,不是初始化。

对这个还有个疑惑是都动态分配空间了为什么还要规定数组的大小