7

私はすべてのCプログラミングに不慣れで、質問があります。

たとえば、構造体があり、それをポイントしている場合、同じデータをポイントするために新しいポインターを作成しますが、2つのポインターが同じオブジェクトをポイントすることはできません。構造体のすべてのフィールドをコピーせずにそれを行うにはどうすればよいですか?

typedef struct
{
 int x;
 int y;
 int z;
}mySTRUCT;

mySTRUCT *a;
mySTRUCT *b;
a->x = 1;
a->y = 2;
a->z = 3;

そして今、私はbが同じデータを指すようにしたい

b = *a 

それは正しくなく、コンパイラは私に怒鳴っています

どんな助けでも素晴らしいでしょう!ありがとうございました :)

4

1 に答える 1

11

まず、コードが正しくありません。という名前のポインタを作成しますaが、それが指すものは何も作成しません。a->x何かを指すまで、(で)間接参照することはできません。

ポインタが指す構造体が実際にできたら、割り当てによってそれらをコピーできます。

myStruct a_referand = {0};
myStruct b_referand = {0};
myStruct *a = &a_referand;
myStruct *b = &b_referand;

a->x = 1;
*b = *a; // copy the values of all members of a_referand to b_referand
// now b->x is 1
b->x = 2;
// now b->x is 2 but a->x is still 1
于 2012-07-09T11:36:03.687 に答える