c++ - 左值需要作为赋值 C++ 数组的左操作数

标签 c++ arrays

错误: 需要左值作为赋值的左操作数(第 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/

相关文章:

c++ - 为什么在 C++ 中很少使用异常

java - 从元素集中删除对象

arrays - 如何使对象成为数组引用?

c++ - 如何检查 vector 是否指向 C++ 中二维 vector 中的空 vector ?

php - 如何使用 php 从数组循环中获取唯一 ID

javascript - 在 react 状态下用数组替换字符串时出错

php - (PHP) 我的数组中有未知数量的键值对,如何在 SQL 查询中使用它们?

C++ boost 构建错误

c++ - 在 OpenGL 中使用 glviewport()

c++ - 树可视化库 - 计算给定树数据的所有节点和线坐标的库