结构的指针和数组
Pointers and Arrays of Structs
我知道这是一个常见的问题,但我仍然设法找到解决方案。
我创建了一个名为 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 中其他地方的变量索引。如果我只写位置,它可以工作,但我很确定它不会指向数组中的下一个可用空间,每次调用它时,即使我增加当前位置。
有什么方法可以解释这一点,以便我理解错误吗?
疯狂地我不明白这个问题,但我可以看到这是错误的
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++语法差异:二维和一维数组(指针算术)
- 数组指针表示法C++(移动数组时)
- 复制后删除原始数组指针将前 3 个字节设置为 0
- C++访问指向结构的指针中的类数组指针
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- std::flush可以用于将对象指针转换为其封闭数组指针吗
- 创建<int>对整数数组指针的矢量引用 (C++)
- 将 2D 数组指针传递给 C++ 中的函数
- 创建指针是否超过非数组指针的末尾,而不是从 C++17 中的一元运算符和未定义的行为派生?
- 队列数组指针 (C++)
- C++数组指针上的删除操作
- 对于循环不循环和检测字符数组 [指针和字符数组]
- 如何初始化数组指针对象
- 如何正确传递 2D 数组指针作为参数
- 从数组指针中获取怪异的数字
- 初始化std :: unique_ptr作为原始数组指针的初始化
- 将结构数组指针从C#传递到C
- STD :: Sort将数组指针设置为NULL
- C++数组指针错误无法将“int*”转换为“int**”