从指针分配struct的成员值

时间:2012-10-23 01:24:40

标签: c pointers struct assign

我有一个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 *'

如何以我想要的方式完成这项工作?

感谢您的帮助。

2 个答案:

答案 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();