void星型的指针强转类型后不可修改

img

求解答void星型的指针强转类型后为什么还是不可修改的左值?


//模拟实现memmove
void* my_memmove(void* des, void* src, size_t num)
{
    assert(des && src);
    void* ret = des;
    
    if (des < src)
    {
        //从前往后
        while (num--)
        {
            *((char*)des) = *((char*)src);
            (char*)des = (char*)des + 1;
            (char*)src = (char*)src + 1;
        }
    }
    else
    {
        //从后往前
        while (num--)
        {
            *((char*)des + num) = *((char*)src + num);
        }
    }
    return  ret;
}

你上面定义了const常量,常量不能休改的

强制转换产生一个右值,右值是不可修改的