c - 如何复制指针以指向同一对象

标签 c pointers struct duplicates

我是所有 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/

相关文章:

我可以在 C 中实现结构中的方法吗?

c++ - 如何 cudaMemcpy __device__ 初始化的 var

C、 "conflicting types for... "错误

c - 段错误 - 无效的自由未解决 - C

c - 在符合 POSIX 的 C 程序中确定二进制常规文件大小的最佳实践

c++ - Outlook - 从显示名称获取电子邮件地址。适用于 Python,不适用于 C

struct - 无法在模块中实现结构的特征

c++ - 声明对指针指向值的引用的开销

无法将地址传递给指针

C++ const struct &variable 产生缺少的标签名称