2

次のコードは正しいですか?

   typedef struct
   {
      int x;
      int y;
   } OTHERSTRUCT;


   struct DATATYPE
   {
      char a;
      OTHERSTRUCT b;
   }

   // ...

   // now we reserve two structs
   struct DATATYPE structA;
   struct DATATYPE structB;

   // ... probably fill insome values


   // now we copy structA to structB
   structA = structB;

両方の構造体は完全に同一になりましたか? 「構造体の中の構造体」でさえ?

ありがとう!

4

3 に答える 3

2

はい。

1 つの構造体変数を別の構造体変数に割り当てると、すべてのメンバーが 1 つずつコピーされます。OTHERSTRUCTこれには、メンバーとして持っている他の構造体も含まれますDATATYPE

于 2012-12-03T10:58:35.617 に答える
1

aとの間bにパディングバイトがある可能性がありstruct DATATYPE、これらは構造体の割り当てによってコピーされることが保証されていません。それは彼らがそうではないという意味ではありません、ただあなたが彼らがそうであるかどうかに頼ることができないということです。

実際のメンバーabは同じ値になります。コピーの効果は構造体タイプのメンバーに再帰的に適用されるため、メンバーのメンバーもコピーされます。

于 2012-12-03T12:24:02.590 に答える
1

はい、その後の内容は同じです。

于 2012-12-03T11:01:40.160 に答える