int **p=(int**)malloc(m*sizeof(int*));怎么理解,可以一步一步解释下不,尤其是两个*号连着的地方 20

 我来答
pa偏爱qq
2015-09-27 · 超过56用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:81.9万
展开全部
int **p表示这是一个二维指针:指向指针的指针。这样理解:int a; <-- int *p1; <-- int **p;
malloc是c语言中用来在堆空间手动申请空间的函数。

参数为要申请的空间大小。返回类型为void*万能指针。

此处申请空间大小为:m个sizeof(int*) 的大小。int*表示指向int 类型的指针,大小取决于具体机器和编译器。32/64位机一般为32/64位,但不绝对。
最后(int**) 表示强制类型转换,将 void* 转换为 int** 类型,一般强制转换可能会有潜在的精度损失等,但是此处因为都是指针,所以不用担心。

综上所述,这句话实现了这样的功能:申请m个能够能够存放 int* 类型的空间,并将首地址返回给一个二维指针p;

内存可能的分布情况:
int a <-- int *; <-- int **p;
int b <-- int *;
int c <-- int *;
int d <-- int *;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式