c++ - 指针和结构数组

标签 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;
}

指针方 block 应该指向函数调用发送给它的数组的下一个位置 我努力成为:

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

发送我想要指向的特定数组部分时出现问题,该数组部分由代码 currentLocation 中其他地方的变量索引。如果我只写 location 它可以工作,但我很确定它不会在每次调用它时都指向数组中的下一个可用空间,即使我增加 currentLocations 也是如此。

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

最佳答案

坦率地说,我不明白这个问题,但我可以看出这是错误的

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;

或者也许(假设 square 是一个 path*)这个

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

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

关于c++ - 指针和结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19042951/

相关文章:

c++ - 潜在的错误 openGL

C++ 11查找总和>阈值的 vector 的最短前缀的方法

c++ - 混合模板/非模板继承分类法和成员继承

c - 从文件读取以创建数组扫雷代码

c - 访问带下标的 long long int 指针

c++ - 找不到 C++ 代码中的错误

c++ - 是否可以从 Objective-C 获得中间 C 代码?

c - 将结构数组传递给函数以输入值

javascript - 将数组从一个函数传递到另一个函数

c++ - 三元运算符的函数指针定义