C语言中的malloc函数用法>?

 我来答
用户阿卡然米CK
2019-07-25 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:26%
帮助的人:690万
展开全部
void
main()
{
int
a[5],*p
;
p=a;
p=(int*)malloc(5*sizeof(int))
;
//此处这样写有问题,根本就没必要动态分配内存,因为p指向的是一个数组,数组已经定义,也就是已经分配了空间,纯粹多余
for(int
i=0;i<5;i++)
scanf("%d",p++);
free(p);
}
malloc()是是在内存的动态存储区中分配一个长度为size的连续空间。
当函数未能成功分配存储空间(如内存不足)就会返回一个NULL指针。所以在调用该函数时应该检测返回值是否为
NULL并执行相应的操作
malloc分配的内存是位于堆中的,并且没有初始化内存的内容使用了malloc没有使用free,注意释放内存
裔星华郎伦
2019-10-09 · TA获得超过3万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:607万
展开全部
p=(int
*)malloc(5*sizeof(int))
/*这个也就是说P指向的连续5个空间的首地址*/
for(i=0;i<5;i++)
scanf("%d",p++);
用法没
问题,但是问题是。。你最后p指向了
数组的最后,。。
你还要调整p,scanf("%d",(p+i))多好啊
动态申请1维数组,int
*a;
a=(int
*)malloc(5*sizeof(int))
;
for(i=0;i<5;i++)
scanf("%d",p++);
以后你就可以引用a数组了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犹菲别洋
2019-11-02 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.2万
采纳率:35%
帮助的人:597万
展开全部
可以用,两者的区别在于,一个是创建静态内存,一个是
动态内存

只是你要做成服务程序或者有基于这个数组的算法时,别忘记用完p之后要free(),并且让p=(int*)NULL
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仆听云庞淼
2019-04-08 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:632万
展开全部
第二种用法有点问题,应该这样改一下:
int
*arr
=
(int
*)malloc(5
*
sizeof(int));
int
*p
=
arr;
int
i;
for
(i
=
0;
i
<
5;
++i)
scanf("%d",
p++);
...
...
free(arr);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式