指针和结构数组

时间:2013-09-27 04:51:17

标签: c++ arrays pointers

我知道这是一个常见问题,但我仍然设法找到解决方案。

我创建了一个名为location的结构路径数组     路径location[numLevels*levelSize];

我也在使用一堆名为start的路径。

问题是将数组中的正确位置传递给函数,让它创建一个放入数组的新路径,而不是将其发回。

bool moveLocationStack(const vector <vector<path> > &spaceStation,const int x,const int y,path   *square){
char c=spaceStation.at(y).at(x).type;
if(c!='#'){
    if(!spaceStation.at(y).at(x).visit and !spaceStation.at(y).at(x).inPath)
        square->type=spaceStation.at(y).at(x).type;
        square->type=spaceStation.at(y).at(x).visit;
        square->type=spaceStation.at(y).at(x).inPath;
        square->type=spaceStation.at(y).at(x).level;
        return 1;
    }
return 0;
}

指针方块应指向函数调用发送给它的数组的下一个位置 我试着成为:

  if(moveLocationStack(spaceStation,possibleX,possibleY,location[currentLocation])){
    }

它有一个问题,即发送我希望指向由代码currentLocation中其他地方的变量索引的特定数组部分。如果我只是写位置它可以工作,但我很确定它不会指向每次调用时数组中的下一个可用空间,即使我增加currentLocations。

有什么方法可以解释这个,所以我能理解错误吗?

1 个答案:

答案 0 :(得分:1)

我很难理解这个问题,但我可以看出这是错误的

if(moveLocationStack(spaceStation,possibleX,possibleY,location[currentLocation])){
你的意思是

if(moveLocationStack(spaceStation,possibleX,possibleY,&location[currentLocation])){

您要将地址传递给moveLocationStack,因此您应使用&location[currentLocation]而不是location[currentLocation]

这似乎也是错误的

    square->type=spaceStation.at(y).at(x).type;
    square->type=spaceStation.at(y).at(x).visit;
    square->type=spaceStation.at(y).at(x).inPath;
    square->type=spaceStation.at(y).at(x).level;

肯定你的意思是

    square->type=spaceStation.at(y).at(x).type;
    square->visit=spaceStation.at(y).at(x).visit;
    square->inPath=spaceStation.at(y).at(x).inPath;
    square->level=spaceStation.at(y).at(x).level;

或者可能(假设squarepath*)这个

    *square = spaceStation.at(y).at(x);

您可以一次复制结构,也不必单独复制结构中的每个项目。