下面是一个三重嵌套索引方案。我指向指针数组的指针在注释行中被取消引用......理论上这应该给我一个指针。我从中减去一个,然后引用它并将其重新分配给我指向指针数组的指针。但是该行给出了操作数“&”的左值错误。
让我说清楚。我既想知道为什么会在此处发生错误,又想获得一种方法,该方法可将指针数组中前一个元素的地址分配给我的帧双指针。
我只会接受同时满足这两个标准的完整解决方案....
#include <iostream>
typedef struct frame_s {
double ** TestArrayPointer;
} frame_t;
main () {
double * TestArray;
double ** TestPointerArray;
TestArray = new double [100];
TestPointerArray = new double * [100];
for (unsigned int Counter = 0; Counter<100; Counter++)
{
TestArray[Counter]=Counter;
TestPointerArray[Counter]=&(TestArray[Counter]);
}
frame_t Frames[10];
for (unsigned int Counter = 0; Counter<10; Counter++)
Frames[Counter].TestArrayPointer = &(TestPointerArray[Counter*10]);
//Move pointer to point at array position one back.
Frames[2].TestArrayPointer=
&(*(Frames[2].TestArrayPointer)-1); //error! here <--
//OUTPUT Values...
for (unsigned int Counter = 0; Counter<100; Counter++)
std::cout << "P: " << TestPointerArray[Counter] << " V: "
<< *(TestPointerArray[Counter]) << std::endl;
}
最佳答案
Frames[2].TestArrayPointer=
&(*(Frames[2].TestArrayPointer)-1);
这里不需要取消引用然后取回地址。你可以直接做-
Frames[2].TestArrayPointer = (Frames[2].TestArrayPointer)-1) ;
但这有一个潜在的问题。
- 如果索引为 0 怎么办?运行时错误。
- 如果索引是最后一个索引怎么办?内存泄漏。
关于c++ - 更多左值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412601/