免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: lifayi2008
打印 上一主题 下一主题

[C] 为什么一层指针的函数接口void alloc_unit(unit_t *p);不能分配内存,而一定要用两层 [复制链接]

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
11 [报告]
发表于 2014-02-22 11:09 |只看该作者
你的第一个是用指针类型的返回值 不是指针类型的参数  ,第二个不行吧回复 9# selfrun


   

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
12 [报告]
发表于 2014-02-22 11:36 |只看该作者
下面的代码可以只用一级指针。
void alloc_unit(void *o_ptr)
{
    *(void**)o_ptr = NULL;
}
使用方式如下:
char *p;
alloc_unit(&p);

论坛徽章:
2
天秤座
日期:2014-01-15 13:50:58天秤座
日期:2014-02-19 17:09:23
13 [报告]
发表于 2014-02-25 10:46 |只看该作者
本帖最后由 除美灭日平韩 于 2014-02-25 10:47 编辑

回复 11# lifayi2008

撸主的理解没错
只是撸主的代码有点问题
在第一个函数的最后是这样的
*pp = p;
如果改成
pp = p;
再把函数的形参改成一层指针

那么函数的实参只要一层指针就OK了

所以是代码的问题,不是撸主的理解问题!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP