2016-09-16 89 views
0

我有一個指針& 2個不同的結構。第一個結構有一個void *指針的成員。現在我需要使用先前指向第一個結構的指針訪問第二個結構的成員。我如何從2個結構指針訪問元素?

struct a { 
    void *ptrxx; 
} 

struct b { 
    int info; 
} 

struct a *ptr; 

我需要做的是這樣的:

ptr->ptrxx->info; 

但是我必須做某種類型轉換到令C知道ptr->ptrxx是結構B A指針。我怎麼能在一個表達式中做到這一點(不需要額外的指針)?

PS:我得到error: request for member ***** in something not a structure or union.(gcc)。

回答

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

可能不需要所有這些parens,但它有助於顯示發生的順序。以struct a(它是void *)的ptrxx成員,將其轉換爲指向struct b的指針,然後取info成員。