是否有更简单的方法将结构转换为指向结构的指针

时间:2012-12-22 04:48:10

标签: c

我编写了一个单元测试程序,用于在初始编译之前捕获开源项目函数中的错误。我需要测试的所有函数都返回一个指向结构的指针(在本例中为bn_poly),而我的变量不是指针。我知道必须有一个更简单的解决方案来解决这个问题,但经过一段谷歌搜索我什么也没想到,这就是我正在做的事情

/* only relevant part of code */
struct *bn_poly poly_summ;
unsigned i
poly_summ = (struct bn_poly*)bu_malloc(sizeof(struct bn_poly),"sum");
/* test multiplication and begin checking data */
*poly_summ = bn_poly_mul(&poly_summ,poly_eqn,poly_mul);
/* bn_poly returns a pointer to bn_poly, so i have to declare
 * a temporary pointer to find the value. Is this the only way
 * or is there a type cast method i am missing?
 */

我希望能做什么:

struct bn_poly poly_summ;
poly_summ = (somethingToConvertReturnVal)bn_poly_mul(&poly_summ,poly_eqn,poly_mul);
/* no memory allocation needed! */

1 个答案:

答案 0 :(得分:1)

关于你的问题,我有点困惑但是这就是我对“投射”指针的了解。

  • &符号是参考符号,因此&x为您提供x的地址,或指向x的指针

  • *符号是参考符号,因此假设x是指针,*x为您提供值x指向

    < / LI>

在你的情况下,我认为你想要

struct bn_poly poly_summ;
poly_summ = *(bn_poly_mul(/*params*/));

作为一个额外的注释,从它的外观来看,bn_poly_mul看起来已经分配了你的结构并将它放在堆上。你甚至不需要分配它,事实上这样做会导致内存泄漏


另外,bn_poly_mul的第一个参数是&poly_summ的事实对我来说有点偏僻,所以我必须看到确定的功能