gpt4 book ai didi

C++指针运算 "lvalue required as left operand of assignment"错误

转载 作者:太空狗 更新时间:2023-10-29 20:33:04 25 4
gpt4 key购买 nike

我正在尝试创建一个指针数组。初始化每个指针时,我不能使用 (ptr + 1) 来分配一些东西。

示例代码:

int* demo = (int*) malloc(5*sizeof(int));
int a = 1;
int b = 2;
int* pa = &a;
int* pb = &b;
demo = pa;
demo+=1;
demo = pb;

会工作,而

int* demo = (int*) malloc(5*sizeof(int));
int a = 1;
int b = 2;
int* pa = &a;
int* pb = &b;
demo = pa;
(demo + 1) = pb;

不会。它在最后一行显示错误:“需要左值作为赋值的左操作数”。

有没有什么方法可以使用(由于缺少更好的术语)“临时递增指针”,或者我是否只需要存储原始指针并通过递增指针来遍历我的数组?

最佳答案

I'm trying to create an array of pointers.

好吧,int *demo 创建了一个指针,而不是它们的数组。

如果你想要一个指针数组,你需要做这样的事情:

int *demo[5];
int a = 1;
int b = 2;
demo[0] = &a;
demo[1] = &b;

由于x[y] 等同于指针的*(x + y),所以最后两行也可以写成

*(demo + 0) = &a;
*(demo + 1) = &b;

另一方面,如果您只是想动态分配一个整数数组,您可以这样做:

int *demo = new int[5];
demo[0] = 1;
demo[1] = 2;
// Or (as above):
// *(demo + 0) = 1;
// *(demo + 1) = 2;
...
delete[] demo;

但我建议使用标准容器(例如 std::vector)而不是手动调用 new[]

关于C++指针运算 "lvalue required as left operand of assignment"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com