【发布时间】:2020-11-20 19:29:12
【问题描述】:
我正在尝试将数组设置为自制函数的输入参数,我想在其中修改数组的值。为此,我尝试将函数定义中的输入数组设置为指针,但给我带来了一些麻烦。
*.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.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;
}
}
我要修改的数组是布尔数组(那里唯一的一个)。
【问题讨论】:
-
什么麻烦?
available_movements是在某处定义的吗? -
代码看起来不错,你遇到了什么麻烦?
-
您可能需要考虑 std::array 或 std::vector
-
我认为您需要添加更多代码上下文。您需要minimal reproducible example,因为您的问题没有显示在提供的代码中,或者至少对我来说一点也不明显。
-
指针是按值传递的,而不是值的数组。引用该问题的公认答案:如果您按值传递数组,那么您真正要做的是复制指针-指向数组第一个元素的指针被复制到参数(其type 也应该是数组元素类型的指针)。这是由于阵列的衰减性质而起作用的;一旦衰减,sizeof 不再给出完整数组的大小,因为它本质上变成了一个指针。
标签: c++ arrays function pointers