2011-03-15 123 views
0

我無法訪問結構的成員結構成員語法

的代碼如下:

int main() 
{ 

     typedef struct tempA 
     { 
     int a; 
     }tempa; 


     typedef struct tempB 
     { 
     tempa **tA; 
     }tempb; 

    tempb.(*tA)->a =5; 
    printf("\n Value of a : %d",tempb.(*tA)->a); 

} 

我試着用tempb.(*tA)->a;訪問它,但我得到的語法錯誤:

error: expected identifier before ‘(’ token 

什麼是訪問int a的正確語法?

在此先感謝

+0

您的代碼包含多個錯誤,包括:缺少main()的參數列表,缺少返回(除非使用C99編譯器),更重要的是,沒有名爲tempb的變量。請發佈實際編譯的代碼,除非問題是「爲什麼此代碼不能編譯」。 – DES 2011-03-15 16:56:39

+0

我讀得太快了,問題確實是「爲什麼不能編譯」 - 但是你仍然試圖訪問一個不存在的變量。 – DES 2011-03-15 17:03:24

回答

7

正確的語法是(*tempb.tA)->a。您想取消tempb.tA以獲取指向tempA的指針,然後取消引用該指針以訪問a成員。

+0

謝謝你的工作 – Totie 2011-03-15 15:50:58

+0

嗨,如果我嘗試使用tempb指針訪問同樣的東西會怎麼樣?tempB * tB tB - >(* tA) - >我嘗試過,但不工作 – Totie 2011-03-15 15:58:43

+0

然後它是' (* tempb-> tA) - > a' - 您取消引用tempb訪問tA成員,並從此處與之前相同。如果你願意,你也可以把它寫成'(*(tempb-> tA)) - > a',但由於解引用運算符'*'應用在'.'和' - >'後面,所以實際上並不需要。 – 2011-03-15 16:02:48