0

私は構造を持っています

   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 = ? 

列挙型にアクセスする方法、私はそこに値ゼロを置きたいです。

4

2 に答える 2

3

構造体フィールドfilterは列挙型へのポインターであるため、間接参照する必要があります。

*ptr->ptr1->filter = false;

これはmember、が列挙型であるという理由だけで違いはありません。他の直接割り当て可能な( "scalar")タイプなどでもまったく同じですint

値を「ゼロ」にしたいということですが、の型filterは列挙型なので、という意味だと思いますfalse

また、C99には、とstdbool.h>を与えるものがあります。可能であれば、それらを使用するのが最善であり、実行しないでください。booltruefalseenum

于 2013-02-01T11:48:53.173 に答える
1

あなたのコードを考えると、あなたは次のように書くでしょう:

*ptr->ptr1->filter = false;

mallocただし、これは、適切なメモリをすでに使用している場合にのみ機能します。filterポインタ以外の直接メンバーを作成する方がほぼ確実に良いでしょう。

于 2013-02-01T11:50:09.180 に答える