使用指针访问枚举值

时间:2013-02-01 11:46:51

标签: c

我有一个结构

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

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

这里
    枚举__boolean     {        false = 0;        true = 1;     };

我已经声明了一个指向struct abc *ptr并且已经完成了malloc的指针,任何人都可以告诉我如何访问枚举中的值,我想分配值。

我已经完成了所有结构的malloc

ptr->ptr1->filter = ? 

如何访问枚举,我想将值设为零。

2 个答案:

答案 0 :(得分:3)

由于struct field filter是指向枚举的指针,因此需要取消引用:

*ptr->ptr1->filter = false;

这只是因为member是枚举,所以对于任何其他可直接分配(“标量”)类型(如int或其他类型)都是完全相同的。

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

另请注意,在C99中,我们stdbool.h>提供了booltrue以及false。如果可以的话,最好使用它们,而不是enum

答案 1 :(得分:1)

鉴于你的代码,你会写:

*ptr->ptr1->filter = false;

但是,只有在malloc适当的内存已经存在的情况下才会有效。你几乎肯定会让filter成为一个非指针直接成员。