2011-03-28 55 views
0

您好我正在尋找建立一個包含幾個結構和多個結構的聯合。下面是我想要實現的一個簡短例子。C聯盟幾個結構和多個結構

建立工會的宇宙,星系和行星的結構...

union UNIVERSE{ 
    struct galaxy milkway; 
    struct planet earth; 
    struct planet mars; 
    struct planet venus; 
    int mega; 
} 
+4

看起來您已經完成了您所解釋的內容 - 問題是什麼? – 2011-03-28 16:50:43

+4

你確定你知道什麼是工會嗎? – GWW 2011-03-28 16:54:19

+1

所以你說你的宇宙只由下列星系或行星之一組成,或者是一個整數? – 2011-03-28 17:06:34

回答

3

你已經大致完成你似乎什麼希望,但我會警告說,你彷彿可以嘗試做沒有按沒有多大意義。

特別是,地球,火星和金星看起來很像他們應該是一個類型的實例。一名工會定義一種類型,所以你可能要像

typedef union { 
    galaxy g; 
    star s; 
    planet p; 
    nebula n; 
} celestial_object; 

個別星系,行星,恆星等,將是工會的實例。您可以然後有(例如):

#define max_objects 1000000 

celestial_object universe[max_objects]; 

celestial_object earth; 
earth.p.mass = 24; 
earth.p.diameter = 12756; 

celestial_object sun; 
sun.s.mass = 30; 
sun.s.diameter = 1400000; 

...等等。

+0

這似乎更好,但是,我真正想要實現的是我的訪問看起來像......'code'universe.earth.mass = 24; universe.mars.mass = 22; '碼'。在我的代碼開始時,我知道所有的行星...... – user680589 2011-03-30 04:51:06