Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数组设置为C++中函数的可修改参数_C++_Arrays_Function_Pointers - Fatal编程技术网

将数组设置为C++中函数的可修改参数

将数组设置为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

我试图将数组设置为一个自制函数的输入参数,在这个函数中我想修改数组的值。为此,我尝试将函数定义中的输入数组设置为指针,但给了我一些麻烦

在这里可以看到*.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;
    }
}

我要修改的数组是布尔数组,这是唯一的一个。

我想我发现了一个混淆点:

不会这样做,因为它不是指针


事实上,这是一个指针:

什么样的麻烦?在某些地方定义了可用的动作吗?代码看起来不错,你遇到了什么样的麻烦?你可能想考虑STD::数组或STD::vector,我想你需要添加更多的代码上下文。您需要一个指针,因为您的问题没有显示在提供的代码中,或者至少对我来说,它一点也不明显。指针是通过值传递的,而不是值数组。引用该问题的公认答案:如果按值传递数组,那么实际上是复制一个指针-指向数组第一个元素的指针被复制到参数,该参数的类型也应该是数组元素类型的指针。这是由于阵列的衰变性质;一旦衰减,sizeof就不再给出完整数组的大小,因为它实际上变成了指针。