错误: 需要左值作为赋值的左操作数(第 4 行)
请帮助我理解,我做错了什么,为什么会发生这个错误?
int *x = nullptr;
x = (int*) realloc(x, 10);
for (int i = 0; i < 10; ++i) {
(x + i) = new int(i + 3);
}
最佳答案
(x + i) = new int(i + 3);
应该是
*(x + i) = i + 3;
(x + i)
将导致指针右值 (const int*
) 无法分配给它,但可以有效地取消引用 *(x + i )
。
一般来说,您应该避免在 C++ 代码中手动进行内存管理(尤其是不要使用 realloc()
)。
您将重写符合 C++ 的代码片段,如下所示:
std::vector<int> x(10);
int i = 0;
for (auto& elem : x) {
elem = i + 3;
++i;
}
关于c++ - 左值需要作为赋值 C++ 数组的左操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54882475/