memset函数为二维数组初始化

匿名 (未验证) 提交于 2019-12-03 00:22:01
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 + 1];
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);//也不对,因为我们要的是真正储存数据的空间,而不是指针





易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!