将数组设置为C++中函数的可修改参数
我试图将数组设置为一个自制函数的输入参数,在这个函数中我想修改数组的值。为此,我尝试将函数定义中的输入数组设置为指针,但给了我一些麻烦 在这里可以看到*.hpp文件的一部分:将数组设置为C++中函数的可修改参数,c++,arrays,function,pointers,C++,Arrays,Function,Pointers,我试图将数组设置为一个自制函数的输入参数,在这个函数中我想修改数组的值。为此,我尝试将函数定义中的输入数组设置为指针,但给了我一些麻烦 在这里可以看到*.hpp文件的一部分: void CrossWall(int, int, bool[]); *.cpp文件的下一部分是: void NODE::CrossWall(int robot_x, int robot_y, bool done_checking[]){ if (((robot_x+1) > (current_map.Ch
void CrossWall(int, int, bool[]);
*.cpp文件的下一部分是:
void NODE::CrossWall(int robot_x, int robot_y, bool done_checking[]){
if (((robot_x+1) > (current_map.CheckLength() - 1)) && !done_checking[3] ){
available_movements[3] = 0;
done_checking[3] = true;
}
if (((robot_x-1) < 0 ) && !done_checking[2]){
available_movements[2] = 0;
done_checking[2] = true;
}
if (((robot_y+1) > (current_map.CheckHeight() - 1)) && !done_checking[0]){
available_movements[0] = 0;
done_checking[0] = true;
}
if (((robot_y-1) < 0 ) && !done_checking[1]){
available_movements[1] = 0;
done_checking[1] = true;
}
}
我要修改的数组是布尔数组,这是唯一的一个。我想我发现了一个混淆点: 不会这样做,因为它不是指针
事实上,这是一个指针:什么样的麻烦?在某些地方定义了可用的动作吗?代码看起来不错,你遇到了什么样的麻烦?你可能想考虑STD::数组或STD::vector,我想你需要添加更多的代码上下文。您需要一个指针,因为您的问题没有显示在提供的代码中,或者至少对我来说,它一点也不明显。指针是通过值传递的,而不是值数组。引用该问题的公认答案:如果按值传递数组,那么实际上是复制一个指针-指向数组第一个元素的指针被复制到参数,该参数的类型也应该是数组元素类型的指针。这是由于阵列的衰变性质;一旦衰减,sizeof就不再给出完整数组的大小,因为它实际上变成了指针。