2013-02-01 77 views
0

我有一个结构访问一个枚举值的指针

struct abc 
    { 
     struct xyz *ptr1; int *a; 
    }; 

    struct xyz 
    { 
     int *b; 
     enum __boolean *filter; 
    }; 

这里enum __boolean { false = 0; true = 1; };

我已经声明了一个指针struct abc *ptr都做一个malloc,任何一个可以请告诉我如何访问值在枚举中,我想分配值。

我已经做了所有的结构

ptr->ptr1->filter = ? 

如何访问枚举,我希望把零值出现的一个malloc。

+1

是否有一个特定的原因,你想使用枚举的指针?它似乎使事情过于复杂。现在C有一个内置的布尔类型:'_Bool'。或者你可以使用[''](http://en.wikibooks.org/wiki/C_Programming/C_Reference/stdbool.h)头文件。 –

+0

我建议从stdbool.h中使用'bool',以使代码尽可能与C++兼容。 – Lundin

+0

或只是'int' ... –

回答

2

由于结构领域filter是一个指向一个枚举,您需要取消引用:

*ptr->ptr1->filter = false; 

这是没有什么不同,只是因为member是一个枚举,这将是任何其他直接分配完全一样(“标量”)类型,如int或其他。

你说你想把值“零”,但由于filter的类型是一个枚举,我想你的意思是false

请注意,在C99中,我们有stdbool.h>,它给出booltruefalse。如果可以的话,最好使用它们,不要做enum

1

鉴于你的代码,你会写:

*ptr->ptr1->filter = false; 

但是,如果你已经malloc编辑相应的内存才有效。你几乎肯定会让filter成为非指针直接成员。