您可以尝试使用普通对象。数据不能在 c 中隐式地在结构内初始化。必须创建一个对象并且必须输入数据。
如果结构看起来像这样
typedef unsigned int UINT32;
struct Word{
UINT32 a;
UINT32 b;
UINT32 c;
UINT32 d;
};
不使用指针:
Word xx , yy={0,1,2,3};
xx = yy;
xx.a = 10;
yy.b = 100;
printf("%d -- %d -- %d -- %d",yy.a,yy.b,yy.c,yy.d); // 0 -- 100 -- 2 -- 3
printf("%d -- %d -- %d -- %d",xx.a,xx.b,xx.c,xx.d); // 10 -- 1 -- 2 -- 3
这里xx和yy是为 Word 创建的不同对象。yy对象数据被复制到xx。更改xx的元素时不会影响yy数据,因为两者都是不同的对象。
使用指针时:
struct Word *xx;
struct Word *yy=malloc(sizeof(struct Word));
yy->a=0;
yy->b=1;
yy->c=2;
yy->d=3;
xx=yy;
xx->a = 10;
yy->b = 100;
printf("%d -- %d -- %d -- %d",yy->a,yy->b,yy->c,yy->d); // 10 -- 100 -- 2 -- 3
printf("%d -- %d -- %d -- %d",xx->a,xx->b,xx->c,xx->d); // 10 -- 100 -- 2 -- 3
在这里,您已经为xx分配了内存并为其初始化了数据。xx和yy都指向同一个内存位置,因此更改xx或yy中的数据都会影响两者。