我有一个结构
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 = ?
如何访问枚举,我想将值设为零。
答案 0 :(得分:3)
由于struct field filter
是指向枚举的指针,因此需要取消引用:
*ptr->ptr1->filter = false;
这只是因为member
是枚举,所以对于任何其他可直接分配(“标量”)类型(如int
或其他类型)都是完全相同的。
你说你想把值设为“零”,但由于filter
的类型是一个枚举,我想你的意思是false
。
另请注意,在C99中,我们stdbool.h>
提供了bool
和true
以及false
。如果可以的话,最好使用它们,而不是enum
。
答案 1 :(得分:1)
鉴于你的代码,你会写:
*ptr->ptr1->filter = false;
但是,只有在malloc
适当的内存已经存在的情况下才会有效。你几乎肯定会让filter
成为一个非指针直接成员。