我有一个struct和一个函数,它返回一个指向它读取的struct的指针:
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相同。 Symbolicly:
struct cal_t cal;
cal = lld_tpReadCalibration();
但这当然不起作用:
error: incompatible types when assigning to type 'volatile struct cal_t' from type 'struct cal_t *'
如何以我想要的方式完成这项工作?
感谢您的帮助。
答案 0 :(得分:2)
你需要以某种方式取消引用指针。你正在从函数中找回指针,因此你正在寻找*
运算符或->
,这当然是*
的同义词。
您将cal
定义为struct cal_t
,该函数返回指向cal_t
的指针。所以你需要取消引用指针。
cal = *lld_tpReadCalibration();
答案 1 :(得分:1)
函数返回值是struct cal_t *,它是指针类型。
因此,您应该将返回值赋给类型为struct cal_t *的变量。
例如,
struct cal_t *cal_ptr;
cal_ptr = lld_tpReadCalibration();