问题描述
- 双重指针定义动态二维数组
-
指针符号太多了 求解释每个指针符号
问:?二重指针 太多 求解释一下各个p=(int **)malloc(sizeof(int *)*line);
if(NULL==p)
{
return;
}for(i=0;i<line;i++) { *(p+i)=(int *)malloc(sizeof(int)*row); if(NULL==*(p+i)) { return; } }
解决方案
首先我来看malloc做了什么,申请了一组空间,存放int型指针,返回这组空间的首地址,所以定义int **p,定义一个指向指针的指针。首地址放到p中,而p就指向了这组数,而这组数本身是指针,即定义了一个指向指针的指针了。
你可以这么考虑现在假定有一个类型是int *,申请了一组空间放int *,返回的是指向这组数的地址,是不是都是int **p了;类比int *p = (int *)malloc(sizeof(int)*num);
解决方案二:
画个图看看,p指向一块空间(竖着画),空间里面都是放的指针,然后它们又分别指向一块空间。然后你就理解为什么会取那些line啊,row了,就是二维数组啊。(ps:就不吐槽了row和column还是对应的了)
时间: 2024-09-10 06:20:12