表达式必须是可修改的左值 - c ++错误

时间:2014-08-04 05:23:17

标签: c++ malloc

执行以下代码时出现错误。

int *p;
p = (int *)malloc(128*sizeof(int *));
for (int i = 0; i < 128; i++)
{
    (*p + i) = 0;
}


Expression must be modifiable lvalue

2 个答案:

答案 0 :(得分:3)

问题是(*p + i) = 0被解析为((*p) + i) = 0(即取消引用p,向其添加i,然后尝试分配到该结果)。

修复,重写

(*p + i) = 0;

作为

*(p + i) = 0;

p[i] = 0;

(我认为后者更具可读性。)

更好的是,看到这是C ++而不是C,请使用std::vector<int>并删除显式管理内存的需要。

答案 1 :(得分:1)

你的左值不正确。 尝试      *(P + I)= 0;

我认为这应该有用。