当我执行以下代码时,我得到了错误。
int *p;
p = (int *)malloc(128*sizeof(int *));
for (int i = 0; i < 128; i++)
{
(*p + i) = 0;
}
Expression must be modifiable lvalue
问题是(*p + i) = 0
被解析为((*p) + i) = 0
(即取消对p
的引用,将i
添加到其中,然后尝试分配结果)。
,重写
(*p + i) = 0;
*(p + i) = 0;
或
p[i] = 0;
(我认为后者更易读)
更好的是,看到这是c++而不是C,使用std::vector<int>
并删除显式管理内存的需要。
左值不正确。试一试* (p + i) = 0;
我想应该可以。