C语言用malloc定义二维数组问题

#include"stdio.h"#include"stdlib.h"main(){int**p,i;p=(int**)malloc(sizeof(int)*5);for... #include "stdio.h"
#include "stdlib.h"
main()
{
int **p,i;
p=(int **)malloc(sizeof(int)*5);
for(i=0;i<5;i++)
{
p[i]=(int *)malloc(sizeof(int)*5);
}
}
为什么这样就定义了一个p[5][5]二维数组,还有p[i]=(int *)mallco(sizeof(int)*5);
为什么**p可以指向返回值为整形指针?
大家帮帮忙啊,讲解明白了,再加50分,出老本了!
展开
 我来答
百度网友82cdce0
2012-10-25 · 超过17用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:34.1万
展开全部
首先,p的类型为 int **
那么p和p+1,相差一个int类型嘛

p先申请了 5个数组长度
后来p[i]又申请了5个数组长度,分别保存在刚才申请的5个元素里

所以,这就相当于定义了P[5][5]咯。。这个大概就是这个意思啦,要画图的话,才好讲。。

至于第二个问题。。。听不懂,哈哈。。**p就是指向指针的指针嘛(不要骂人哈,本来就是嘛)

返回值只有相对于函数,才有返回值之说。。
通俗的讲,**p 是指针的指针, p[i]是指针
如果p定义为p[][],那么,p就是指针的指针, p[i]就是指针 和上面定义是一样的

PS:网上讲解指针的指针的文章多了去了,我在这里也讲不明白,那些文章都条例清晰,内容深入。。回答完毕,给点分下载文库吧
terranlong
推荐于2017-11-25 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:3971万
展开全部
首先要理解
int* ptr = (int*)malloc(5 * sizeof(int)); // 动态分配5个整型的内存空间,跟int a[5]相似,但前者是堆上分配的,后者是栈上分配的

p=(int **)malloc(sizeof(int*)*5); // 意思就是定义一个有5个int类型的指针的动态数组,然后在里面存放指针

p[i] 其实就是一个指针

p[i]=(int *)malloc(sizeof(int)*5); // 给该指针分配内存

不知道这样是否能让你明白,不明白可追问
更多追问追答
追问
p[i]不是指向指针的指针吗
追答
不对,p才是指向指针的指针,p[i]是指针而已
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2012-10-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6309万
展开全部
地址数据就是一个long类型的数据。一般在32位机上long 和int 占一样的空间,都是四个字节。
指针变量是用来存储地址的。也就是说,变量的值是个地址值,是个整型数!
因此,指针分配空间按整型类型分配空间就可以了!
关于指针的数据类型,那是为存储和访问地址中的数据准备的。
main()
{
int **p,i;
p=(int **)malloc(sizeof(int)*5); //先分配五个整型数据空间,这5个空间就可以用来存储每个二级指针的首地址了。
for(i=0;i<5;i++)
{
p[i]=(int *)malloc(sizeof(int)*5); //再为每个二级指针分配5个整型数据空间,这样,每个元素也就拥有了各自的家。只是这5个空间是用来存储整数的!!p[0]5个,p[1]5个等等
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
难_再_续_
2012-10-27
知道答主
回答量:43
采纳率:0%
帮助的人:21.4万
展开全部
p是一个指向指针的指针,在上例中,你用malloc函数开辟的一段内存赋给了p,简单的理解,其实p就是一个数组(以下我称为p数组),不过数组中存放的都是指针,即p是一个指针数组,数组中存放了5个指向int型的指针,你知道一个普通的数组可用它的数组名进行访问例如:a[5]就可用*a访问其第一个元素。
同理用*p就可访问p数组的第一个元素,*p+1访问第二个元素,以此类推,而*p中存放的又是一个指针,所以**p就可以指向一个整形数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式