0

我有一个结构

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

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

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

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

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

ptr->ptr1->filter = ? 

如何访问枚举,我想把零值放在那里。

4

2 回答 2

3

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

*ptr->ptr1->filter = false;

这并没有什么不同,因为它是一个枚举,对于任何其他可直接分配的(“标量”)类型,例如或其他member类型,它都是完全相同的。int

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

另请注意,在 C99 中,我们有stdbool.h>which 给出boolandtruefalse。如果可以的话,最好使用它们,而不是做一个enum

于 2013-02-01T11:48:53.173 回答
1

给定您的代码,您将编写:

*ptr->ptr1->filter = false;

但是,这只有在您已经malloc编辑了适当的内存时才有效。几乎可以肯定,您最好创建filter一个非指针直接成员。

于 2013-02-01T11:50:09.180 回答