C为结构中的成员分配枚举值?

时间:2017-03-08 23:42:09

标签: c

我有2个枚举,2种颜色的颜色和13种车型的车型。我有一个汽车结构,有两个相应的成员。如果我的结构在数组中,如何通过循环分配枚举值?

enum carType {A, B, C, D, E, F, G, H, I, J, K, L, M};
enum color {BLACK, WHITE};

typedef enum carType CarType;
typedef enum color Color;

struct car {                                 
CarType myCarType;
Color myColor;
};                  

typedef struct car Car;

void createGarage(Car *garage)
{ 



}

main()
{ 
Car garage[26];
createGarage(garage);
}

如何在我的车库阵列中循环,并确保每种车型都有黑色和白色?

我知道我的车库阵列中有26个空格,所以我知道我可以使用for循环,但是我如何完成作业?

1 个答案:

答案 0 :(得分:5)

您应该为每个enum添加一个额外的元素来保持大小,这样您就可以遍历所有值。

enum carType {A, B, C, D, E, F, G, H, I, J, K, L, M, carType_size};
enum color {BLACK, WHITE, color_size};

void createGarage(Car *garage)
{ 
    for (int t = 0; t < carType_size; t++) {
        for (int c = 0; c < color_size; c++) {
            garage->carType = t;
            garage->color = c;
            garage++;
        }
    }   
}

这取决于enum默认从0顺序分配值的事实。如果您使用特定值覆盖此值enum,则此操作无效。但这种情况并不常见。