2016-09-16 20 views
0

私はポインタ& 2つの異なる構造を持っています。最初の構造体には、void *ポインタであるメンバがあります。今私は、最初の構造体への前のポインタを使って2番目の構造体のメンバにアクセスする必要があります。2つの構造体ポインタから要素にアクセスするにはどうすればよいですか?

struct a { 
    void *ptrxx; 
} 

struct b { 
    int info; 
} 

struct a *ptr; 

私のような何か実行する必要があります。

ptr->ptrxx->info; 

をしかし、私はCがptr->ptrxxがBを構造体へのポインタであることを知っているように型キャストのいくつかの種類を行う必要があります。私は1つの式でこれを行うことができます(余分なポインタを必要としません)?

PS:私はerror: request for member ***** in something not a structure or union.(gcc)を取得しています。

答えて

2
((struct b *)(ptr->ptrxx))->info 

恐らくすべてのそれらの括弧は必要ないかもしれませんが、起こっていることの順序を示すのに役立ちます。 ptrxxのメンバーをstruct avoid *)にして、struct bへのポインタにキャストしてから、infoのメンバーを取ります。

関連する問題