error: c code: expression must be a modifiable lvalue

error: c code: expression must be a modifiable lvalue

我在 c 文件中有两个不同的结构,结构 A 和 B:

typedef Struct _A
{
   float arr[4];
}A;

typedef struct _B
{
   float const x;
   float const y;
}B;

 A* objA = (A*)malloc(sizeof(A));
 B* objB = (B*)malloc(sizeof(B));

我需要做的是用结构 B 中的值分配 arr 值

 objA->arr = {objB->x, objB->y, objB->x, objB->x};  /// getting an error here : expression must be a modifiable lvalue. 

到目前为止我有 memcpy,但是以另一个错误“预期的表达式”结束。 有什么办法吗?

提前致谢!

不能直接赋值给数组。您需要分别分配给每个成员:

objA->arr[0] = objB->x;
objA->arr[1] = objB->y;
objA->arr[2] = objB->x;
objA->arr[3] = objB->x;

或者使用 memcpy 和复合文字作为来源:

memcpy(objA->arr, (float[4]){objB->x,objB->y,objB->x,objB->x}, sizeof(float[4]));