Ошибка: выражение должно быть изменяемым значением l - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь умножить каждое значение массива на целое число, однако в настоящее время я сталкиваюсь со следующей ошибкой: «выражение должно быть изменяемым значением lvalue».Цель этого кода состоит в том, что при нажатии кнопки прямоугольник увеличивается на скалярный коэффициент 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]);
    }
   }
}

Ответы [ 2 ]

2 голосов
/ 09 апреля 2019

Изменить:

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

на:

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

или даже проще, просто:

rectangleOne[i] *= 1.5;

Проблема с оригинальной версией заключается в том, что онапытался присвоить адрес элемента массива, а не сам элемент массива.

2 голосов
/ 09 апреля 2019

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

it is enough also to Draw_Rectangle(rectangleOne);, так как массивы передаются указателями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...