首页 > 解决方案 > 错误:表达式必须是可修改的 l 值

问题描述

我试图将数组的每个值乘以一个整数,但是我目前遇到以下错误:“表达式必须是可修改的左值”。这段代码的目的是,当按下按钮时,矩形放大了 2 的标量因子。如何解决这个错误?

void Draw_Rectangle(unsigned int *rectangle1)
{
    // Call draw rectangle function to draw rectangle 1
    GraphicsFunction_drawRectangle (*rectangle1, *(rectangle1 + 1));

}

int main (void)
{
    unsigned int rectangleOne[4] = {85, 5, 130, 20};
    // Call function to draw the rectangle in initial position
    Draw_Rectangle(&rectangleOne[0]);

   while(1) {

       if(*(SWITCH_ptr) == 512) {
        int i = 0;
        for(i = 0; i < 4; i++){
            &rectangleOne[i] = rectangleOne[i] * 1.5;
        }
        Draw_Rectangle(&rectangleOne[0]);
    }
   }
}

标签: carrayspointers

解决方案


改变:

&rectangleOne[i] = rectangleOne[i] * 1.5;

至:

rectangleOne[i] = rectangleOne[i] * 1.5;

或者更简单地说,只是:

rectangleOne[i] *= 1.5;

原始版本的问题在于它试图分配给数组元素的地址,而不是数组元素本身。


推荐阅读