0

我有一个结构和一个函数,它返回一个指向它读取的结构的指针:

typedef struct cal_t {
    float xm; 
    float ym; 
    float xn; 
    float yn; 
} cal_t;


struct cal_t *lld_tpReadCalibration(void);

在其他地方,我确实有该结构的一个实例:

struct cal_t cal;

现在我需要将该结构实例的值分配给我得到返回指针的结构的值。所以我想要的是 cal.xm 与 lld_tpReadCalibration() 中的 cal->xm 的值相同。象征性地:

struct cal_t cal;

cal = lld_tpReadCalibration();

但这当然行不通:

error: incompatible types when assigning to type 'volatile struct cal_t' from type 'struct cal_t *'

我怎样才能按照我想要的方式进行这项工作?

谢谢你的帮助。

4

2 回答 2

2

您需要以某种方式取消引用指针。您正在从函数中取回一个指针,因此您正在寻找一个*运算符 or ->,这当然是 a *with 的同义词。

您定义calstruct cal_t,函数返回指向 的指针cal_t。所以你需要取消引用指针。

cal = *lld_tpReadCalibration();
于 2012-10-23T01:30:23.550 回答
1

函数返回值为struct cal_t *,为指针类型。

因此,您应该将返回值分配给类型为 struct cal_t * 的变量。

例如,

struct cal_t *cal_ptr;

cal_ptr = lld_tpReadCalibration();
于 2012-10-23T01:31:14.580 回答