2011-03-28 67 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