7

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

这是不正确的,编译器对我大喊大叫

任何帮助都会很棒!谢谢你 :)

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 回答