【问题标题】:error: c code: expression must be a modifiable lvalue错误:c 代码:表达式必须是可修改的左值
【发布时间】:2021-10-02 21:56:48
【问题描述】:

我在 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,但这以另一个错误“预期表达式”结束。 有没有办法做到这一点?

提前致谢!

【问题讨论】:

    标签: c windows expression


    【解决方案1】:

    您不能直接分配给数组。您需要单独分配给每个成员:

    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]));
    

    【讨论】:

    猜你喜欢
    • 2014-12-15
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2014-12-15
    • 2014-12-20
    相关资源
    最近更新 更多