数组动态分配强制类型转换
二维数组动态分配,n1为列数,n2为行数,p[i2] = (char*)p[0]+size*n1*i2语句中为什么要用char *p强制类型转换,前面不是定义了void **p;吗
/* allocate a 2-d array */
void **alloc2 (size_t n1, size_t n2, size_t size)
{
size_t i2;
void **p;
if ((p=(void**)malloc(n2*sizeof(void*)))==NULL)
return NULL;
if ((p[0]=(void*)malloc(n2*n1*size))==NULL)
{
free(p);
return NULL;
}
for (i2=0; i2<n2; i2++)
p[i2] = (char*)p[0]+size*n1*i2;
return p;
}