memset函数为二维数组初始化

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);//也不对,因为我们要的是真正储存数据的空间,而不是指针





猜你喜欢

转载自blog.csdn.net/changer_WE/article/details/80485407