设为首页 加入收藏

TOP

C语言中函数传指针学习小结
2014-11-24 08:24:45 来源: 作者: 【 】 浏览:0
Tags:言中 函数 指针 学习 小结

开始认为:想看下在出main函数外的其他函数内,用malloc给一个从main函数传进来的指针分配内存,看下该指针是否可以返回,因为它相当于是局部申明的。


代码:


#include
#include
#include
#include


int* fun(int* a,int len)
{
printf("a:%d\n",a);
int b[10] = {1,2,3,4,5,6,7,8,9,0};
int i;
a = (int*)malloc(len*(sizeof(int)));
printf("a:%d\n",a);
memcpy(a,b,10*(sizeof(int)));
printf("%d\n",a[1]);
return a;
}


int main(void)
{
int* test;
int len = 10;
printf("test:%d\n",test);
test = fun(test,len);
printf("%d\n",test[2]);
printf("test:%d\n",test);
free(test);


return 0;
}


结果:


test:-1217622016
a:-1217622016
a:162156552
2
3


发现,指针传进去的时候,它的地址是没有变化的,后来有内存分配后就变了,我想应该是因为它是在堆里的内存分配,所以已经和前面的a不同了,不再是一个局部指针,也就可以返回回去。(如果理解有误,请指正)。然后再在main函数中将堆里面分配那段内存free掉。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言内存分配时间 下一篇ipconfig的C语言实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)