2016-12-09 3 views
-4

私は構造について混乱しています。あなたは私にこの構造の意味を教えてもらえますか?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_t *msgPtrの意味は何ですか?構造体がmsgPtrに指定されていますが、msgPtruint8です。あなたは私にそれを説明することができますか?ありがとうございました。

+0

あなたの質問は何です...笑:ようなので、この1から最初の構造体にアクセスすることは可能でしょうか?どのような構造があなたの質問ですか?そうであれば、[struct tutorial](http://www.cprogramming.com/tutorial/c/lesson7.html)を読んでください。あるいは、 '*'構文が何であるか不思議に思われるかもしれません。それらは[ポインタ]です(http://denniskubes.com/2012/08/16/the-5-minute-guide-to-c-pointers/)。 – byxor

+0

最初の構造のどの部分を理解していませんか?非常に基本的なタグなし構造体のように見えます。 'uint8'型は標準型ではありません(標準Cや標準POSIXの一部ではありませんが、それほど大きな問題ではありません)。同様に、2番目の構造については何が複雑ですか? 'msgPtr'は' uint8'だと思いますか? –

+0

それから私はごめんなさい。この質問は全く研究されておらず、ウェブサイトにはあまり適していません。 – byxor

答えて

1

最初の構造体はosal_event_hdr_tという名前のコンテナ型です。これは2つの変数を持ちますが、これらはuint8_t型であると想定しています。

osal_event_hdr_t foo; 
foo.event = 1; 
foo.status = 2; 

第二の構造体は、最初のようにたくさんあるが、それは実際には最初の構造体のいずれかが含まれていますあなたはそうのように、その内容にアクセスすることができます!私が試した

keyChange_t bar; 
bar.hdr.status = 3; 

+0

私は多かれ少なかれ、あなたの返事のためにこのようなものだと思う=) –