表达式必须是可修改的左值(将指针传递到函数中)

时间:2019-04-18 12:16:26

标签: c++ function pointers

我创建了一个简单的函数来交换C++/SFML中的两个像素,同时获取两个像素索引和指向像素数组的指针。

我一直收到错误"Expression must be a modifiable lvalue"

typedef unsigned int uint;
void swapPixels(uint idx1, uint idx2, const sf::Color *pxColorBuffer){
    sf::Color temp = pxColorBuffer[idx1];
    pxColorBuffer[idx1] = pxColorBuffer[idx2];
    pxColorBuffer[idx2] = temp;
}

我想知道为什么这种方法不起作用,因为我传入了一个指向可修改值的指针。

1 个答案:

答案 0 :(得分:0)

如果您阅读了有关指针的信息,则应该注意

  

const TYPE *(称为TYPE const *)是一种指针,它指向不可修改的TYPE对象。指针本身可以更改,但指向的值不能更改。

     

TYPE * const是一种指针,它指向可修改的TYPE对象,但是在这种情况下不能更改指针。

     

const TYPE * const被称为TYPE const * const,是一种指针,它指向不可修改的TYPE对象,并且不能更改。