1
int* a;
a = new int[10];
sizeof(a) 只会返回出来指针的大小,所以我们只能自己计算这个数组的长度,这里应当是sizeof(int) * 10, 因为数组里面有10个int
所以应该,memset(a, 0, sizeof(int)*10);//将a数组初始化为0
2
int **p;//开一个n*m的数组
p = new int*[n];
for (int i = 0; i < n; i++)
{
p[i] = new int[m];
memset(p[i], 0, sizeof(int)*m);//p赋初值为0,sizeof一个指针返回的是指针大小,所以还是sizeof(int)
}
for (int i = 0; i < n; i++)//释放p
delete[] p[i];
delete[] p;
memset(p, 0, sizeof(int)*m*n);//因为是p相当于一个指向一个一维数组的指针,首先格式就不对
memset(p, 0, sizeof(p)*m*n);//也不对,因为我们要的是真正储存数据的空间,而不是指针
本文详细介绍了在C++中如何动态分配一维和二维数组的内存,并对其进行了初始化。通过具体的代码示例,展示了如何使用new和delete操作符管理内存,以及如何利用memset将数组元素设置为0。

5588

被折叠的 条评论
为什么被折叠?



