2016-04-07 47 views
0

我有一個struct A和一個指向該struct結構實例的指針數組
我試圖直接從數組訪問成員,但我不知道什麼是正確的語法來做到這一點:C - 指向struct的指針數組,語法

struct A 
{ 
    int a; 
    void** b; 
} 

A* p = (A*) malloc(sizeof(A)); 
p->b = (A**) malloc(sizeof(A*) * 3); 

// 
// something is done 
// 

int c; 

A* test = p->b[0]; 
c = test->a; 

基本上我問的是我如何擺脫中間體A *的測試,所以我可以在一個行中指定的值,c?

+1

爲什麼'void **'而不是'struct A **'? – alk

+0

這是無關緊要的。 我只是需要一個虛空,我正在做什麼,但沒有在這裏展示。 問題在於最後兩行 – user3548298

+0

'p-> b =(A **)malloc(sizeof(A *)* 3);'不合格,編譯器應該抱怨 –

回答

2

只是做

int c = ((struct A*) (p->b[0]))->a; 

定義

struct A 
{ 
    int a; 
    struct A ** b; 
} 

這將做

int c = p->b[0]->a; 
+0

工作,你搖滾!那麼這個虛空畢竟有點相關? – user3548298

+0

@ user3548298:這就是我問的原因。 ;-) – alk

-1

你可以這樣做:

c = ((A*) (p->b[0]))->a; 
+0

你不能,因爲'A'不是C中的一個類型。 – alk