如果有人可以帮助我,我想访问结构中的信息。
typedef struct {
int time;
char sat,rcv;
char LLI [3];
} obsd_t;
typedef struct {
obsd_t *data;
} obs_t;
我有类似
的东西obs_t obs;
int x;
现在我想将x分配给obsd_t中的时间值,那么我应该怎么做。这是正确的
x=obs.data.time;
p.s我查看了stackoverflow的其他线程,但从那里无法理解。有些人没有接受任何答案,所以我不情愿
答案 0 :(得分:6)
您正在将指针与变量混合。使用.
运算符作为结构变量(例如obs)并使用->
作为指针(例如数据)
即。
x = obs.data->time
或者您也可以按照 Yu Hao
的建议使用 x = obs.(*data).time
答案 1 :(得分:4)
你只需要这样做:
x=obs.data->time;
(当然,假设您已将obs.data
初始化为指向obsd_t
的有效实例。)
答案 2 :(得分:3)
你应该改用:
x = obs.data->time;
因为data
中的obs_t
是指针。
一般情况下,假设strcut foo* p;
,然后访问bar
中的元素struct foo
(*p).bar
和
p->bar
是相同的
答案 3 :(得分:3)
data
是指向obsd_t
结构的指针。您必须使用运算符->
而不是.
来访问指针引用的结构的元素:
x = obs.data->time;
答案 4 :(得分:2)
使用data
运算符访问->
作为指针到结构:
x = obs.data->time;
或
使用data
运算符(取消引用指针)访问*
的地址:
x = obs.(*data).time
两种变体都是对的。
阅读本文以获取更多详细信息:Pointers and Structures
答案 5 :(得分:2)
如果你想访问这样的结构:x=obs.data.time;
你必须以不同的方式声明你的obs_t
:
typedef struct {
obsd_t data;
} obs_t;
请熟悉指针的工作原理,以便将来避免出现此类问题。