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;
请熟悉指针的工作原理,以便将来避免此类问题。尝试该操作时会发生什么?尝试该操作时会发生什么?您可以在了解有关指针的更多信息。您可以在了解有关指针的更多信息。