指针使用自定义函数开辟的内存,为何不能在主函数中调用?

如题,比如#include<stdio,h>#include<stdlib.h>voidmalloc_num(int*num){num=(int*)malloc(8*si... 如题,比如
#include<stdio,h>
#include<stdlib.h>
void malloc_num(int *num)
{
num = (int *)malloc(8*sizeof(int));
for(int i = 0;i <8;i++)
{
num[i] = i;
}
}
void main()
{
int *num;
malloc_num(num);
for(int t = 0;t <8 ;t++)
{
printf(“%d”,num[t]);
}
}
为何不能如果我想实现这样的函数开辟内存功能,并在主函数中调用该数组,该如何写呢?
展开
 我来答
笃侠6A
2015-06-11 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3214万
展开全部
函数可以写成这样:
void malloc_num(int **num) //注意参数类型改为二级指针
{
*num = (int *)malloc(8*sizeof(int)); // 注意这里:所分配的内存地址保存于 *num
for(int i= 0;i <8;i++)
{
(*num)[i] = i; // 注意这里的赋值
}
}

主函数中调用语句要写成这样:
malloc_num(&num); //指针变量的地址作为实参
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式