我是所有 C 编程的新手,我有一个问题,
例如,如果我有一个结构 - 我指向它,我想创建一个新指针以指向相同的数据,但不是让两个指针指向相同的对象。 如何在不复制结构中的每个字段的情况下做到这一点?
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
不对,编译器在骂我
任何帮助都会很棒!谢谢:)
最佳答案
首先,您的代码不正确。您创建了一个名为 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
关于c - 如何复制指针以指向同一对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11394043/