关于C语言中的结构

关于C语言中的结构,c,C,我对结构感到困惑。你们能给我解释一下这个结构是什么意思吗 typedef struct { uint8 event; uint8 status; }osal_event_hdr_t; 然后,在另一个结构中再次定义上述结构,如下所示: typedef struct { osal_event_hdr_t hdr; uint8 state; uint8 keys; }keyChange_t; 上面的结构在函数中声明,这是什么意思 keyChange\u t*msgPtr?结构

我对结构感到困惑。你们能给我解释一下这个结构是什么意思吗

typedef struct
{
  uint8 event;
  uint8 status; 
}osal_event_hdr_t;
然后,在另一个结构中再次定义上述结构,如下所示:

typedef struct
{
  osal_event_hdr_t hdr;
  uint8 state;
  uint8 keys;
}keyChange_t;
上面的结构在函数中声明,这是什么意思
keyChange\u t*msgPtr
?结构是否指向
msgPtr
,但
msgPtr
uint8
。你们能给我解释一下吗?谢谢。

第一个结构是一个名为osal\u event\u hdr\t的容器类型,它包含两个变量,我假设这两个变量的类型是uint8\t。您可以通过以下方式访问其内容:

osal_event_hdr_t foo;
foo.event = 1;
foo.status = 2;
第二个结构与第一个结构非常相似,但它实际上包含第一个结构中的一个!因此,要从该结构访问第一个结构,如下所示:

keyChange_t bar;
bar.hdr.status = 3;

我试过。。。哈哈

你的问题是什么?你的问题是什么结构?如果是的话,只要读一读就行了。或者,您可能想知道
*
语法是什么。这些是。你不明白第一个结构的哪一部分?它看起来像一个非常基本的未标记结构类型。uint8类型不是标准类型(例如,它不是标准C的一部分,也不是标准POSIX),但这不应该是太大的问题。类似地,第二种结构有什么复杂之处?是什么让你觉得
msgPtr
uint8
?那么我很抱歉。这个问题根本没有被很好地研究过,也不适合这个网站。嗨,乔纳森,我错认为msgPtr了。它不是
uint8
。在第二个结构中我有一个问题,
osal\u event\u hdr\t hdr
,第二个结构中定义的第一个结构是什么?一个
struct
可以有其他
struct
成员,如
uint8 state
hdr
也是一个类型为
struct osal\u event\u hdr\u t
的变量,我想大致是这样的,谢谢你的回复=)