2

如果有人可以在这里帮助我,我想访问结构内的信息。

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;

ps我查看了stackoverflow的其他线程,但从那里无法理解。有些人没有任何可接受的答案,所以我很不情愿

4

6 回答 6

8

您正在将指针与变量混合。将.运算符用于结构变量(例如 obs)并->用于指针(例如用于数据)

IE

x = obs.data->time

或者你也可以像余浩建议的那样使用

x = obs.(*data).time

于 2013-08-28T08:35:26.053 回答
4

你只需要这样做:

x=obs.data->time;

(这当然假设你已经初始化obs.data指向一个有效的实例obsd_t。)

于 2013-08-28T08:35:06.247 回答
3

你应该改用这个:

x = obs.data->time;

因为datainobs_t是一个指针。

一般来说,假设,strcut foo* p;然后访问元素barstruct foo

(*p).bar

p->bar

是相同的

于 2013-08-28T08:36:20.143 回答
3

data是指向结构的指针obsd_t。您必须使用运算符->而不是.访问指针引用的结构的元素:

x = obs.data->time;
于 2013-08-28T08:36:29.867 回答
2

使用操作符data作为指向结构的指针访问->

x = obs.data->time;

或者

访问using运算符的地址取消引用指针):data*

x = obs.(*data).time

两种变体都是正确的。

阅读本文以获取更多详细信息:指针和结构

于 2013-08-28T08:36:55.560 回答
2

如果你想像这样访问结构:x=obs.data.time;你必须声明你的obs_t不同,像这样:

typedef struct {                
    obsd_t data;      
} obs_t;

请熟悉指针的工作原理,以便将来避免此类问题。

于 2013-08-28T08:40:55.817 回答