【发布时间】:2012-07-15 23:22:16
【问题描述】:
现在有
void clistDeleteNode(clist_t *list,cnode_t **pnode) {
cnode_t *node=*pnode;
/* stuff done with node here, removed for clarity */
free(*pnode);
*pnode=0;
}
被调用的
clistDeleteNode(list,&aNode);
函数释放后自动将最终用户指针设为 NULL - 我这样做是因为它使调试和泄漏检查更容易。
有没有更优雅的方法来传递一个指向函数的指针,例如它可以被修改而不必使用 *&*aNode ? (从最终用户的角度)
【问题讨论】:
-
并非没有滥用宏...
-
&只是一个字符,它清楚地表明该值可以被修改,而不仅仅是使用。我不确定你如何改进它。 -
这只是因为它与所有其他函数(在相关函数组中)不同 - 我不知道是否有某种方法可以将参数标记为“通过引用”例如在函数 decleration
-
github.com/chriscamacho/clist 将整个(简单)项目放在 github 上 - 有人可能会觉得它很有用,但老实说,这更适合智力挑战......
标签: c function pass-by-reference