2015-10-17 136 views
-3

如何使用結構體A來修改結構體B中的數據。其中沒有名稱,只是一個類型。在結構體內使用結構體

struct A { 
    struct B; 
}; 

struct B { 
    int data; 
}; 

既然這是學校,我不能改變上面的代碼。我只能使用它。我爲我的主要嘗試這樣的東西,但它不起作用

int main(){ 
     struct A myStruct; 
     myStruct.B.data = 3; 
     return 0; 
} 

在此先感謝。

編輯:對不起,我只是想盡可能快地發佈這就是爲什麼我沒有發佈這適當的C語法。無論如何,這是我的錯,因爲我的問題不夠清楚。

我知道我的主不起作用我只是想知道是否有可能訪問結構B中的數據,而無需在結構A中聲明它的名稱,如上所述。這是我由老師給出的代碼,所以我不想修改結構,因爲我想也許她想讓我們以書面形式使用它的方式進行頭腦風暴。

iharob解釋它是由結構A之前宣佈的struct B,居然讓一個名字,以結構B.

是它根本不可能進入結構體B內部的數據沒有給它起名字的作品完美的方式?

+0

你從哪裏學到'main()'定義。 –

+2

該結構定義遠不是有效的C.你確定這就是它的全部嗎? – user3553031

+0

@iharob可能是K&R,但這並不會使它更有效。 –

回答

3

你發佈的代碼甚至不是c代碼,它不會編譯。

您的主要錯誤是您不需要使用struct名稱來訪問該成員。這應該是好的

struct B 
{ 
    int data; 
} 

struct A 
{ 
    struct B member; 
} 

int main(void) 
{ 
    struct A instance; 
    instance.member.data = 3; 
    return 0; 
} 

我假設你張貼了一些示例代碼,不這樣做。發佈有問題的實際代碼。您發佈的代碼是完全無效的,因爲其中一個定義缺少類型,您不能在中聲明struct中,除非您的typedef它。所以請在下次發佈實際代碼。

並且不要在struct的成員中構建如此複雜的struct s,除非您真的知道自己在做什麼。