C 访问结构内部的数据

C 访问结构内部的数据,c,pointers,struct,C,Pointers,Struct,如果有人能帮我,我想访问结构内部的信息 typedef struct { int time; char sat,rcv; char LLI [3]; } obsd_t; typedef struct { obsd_t *data; } obs_t; 我有点像 obs_t obs; int x; 现在我想给obsd\t中的时间值赋值x,那么我应该怎么做呢。这样对吗 x=obs.da

如果有人能帮我,我想访问结构内部的信息

typedef struct {        
    int time;       
    char sat,rcv;  
    char LLI [3];
} obsd_t;


typedef struct {                
    obsd_t *data;      
} obs_t;
我有点像

obs_t obs;
int x;
现在我想给obsd\t中的时间值赋值x,那么我应该怎么做呢。这样对吗

x=obs.data.time;

p、 我查看了stackoverflow的其他线程,但从那里看不懂。有些人没有任何公认的答案,所以我不情愿

你只需要这样做:

x=obs.data->time;

(当然,这假设您已初始化了
obs.data
以指向
obsd\t
的有效实例)

您只需要这样做:

x=obs.data->time;

(当然,这假设您已初始化了
obs.data
以指向
obsd\t
的有效实例)

您正在将指针与变量混合。对结构变量(如obs)使用
运算符,对指针(如数据)使用
->

i、 e。

x=obs.data->time

或者你也可以按照于浩的建议这样使用


x=obs.(*data).time

您正在将指针与变量混合。对结构变量(如obs)使用
运算符,对指针(如数据)使用
->

i、 e。

x=obs.data->time

或者你也可以按照于浩的建议这样使用


x=obs。(*data)。时间

您应该改用这个:

x = obs.data->time;
因为
obs\t
中的
data
是指针

通常,假设
struct foo*p,然后访问
struct foo

(*p).bar


都是相同的

您应该使用此选项:

x = obs.data->time;
因为
obs\t
中的
data
是指针

通常,假设
struct foo*p,然后访问
struct foo

(*p).bar


是相同的

数据
是指向
obsd\t
结构的指针。必须使用运算符
->
而不是
来访问指针引用的结构元素:

x = obs.data->time;

data
是指向
obsd\t
结构的指针。必须使用运算符
->
而不是
来访问指针引用的结构元素:

x = obs.data->time;

使用
->
运算符将
数据作为指向结构的指针进行访问:

x = obs.data->time;

使用
*
运算符(取消指针引用)访问
数据的地址

两种变体都是正确的


阅读此内容了解更多详细信息:

使用
->
运算符将
数据作为指向结构的指针进行访问:

x = obs.data->time;

使用
*
运算符(取消指针引用)访问
数据的地址

两种变体都是正确的


阅读本文了解更多详细信息:

如果您想像这样访问结构:
x=obs.data.time
您必须以不同的方式声明您的
obs\t
,如下所示:

typedef struct {                
    obsd_t data;      
} obs_t;

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

如果您希望像这样访问结构:
x=obs.data.time
您必须以不同的方式声明您的
obs\t
,如下所示:

typedef struct {                
    obsd_t data;      
} obs_t;

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

尝试该操作时会发生什么?尝试该操作时会发生什么?您可以在了解有关指针的更多信息。您可以在了解有关指针的更多信息。