C++ 将2d数组传递给函数以更改值

C++ 将2d数组传递给函数以更改值,c++,arrays,function,C++,Arrays,Function,编辑: 这是我输入数字时的输出方式 请输入移动: 1. X-- --- --- 请输入移动: 2. -X- --- --- 请输入移动: 3. --X --- --- 请输入移动: 4. --- X-- --- 请输入移动: 更改不会保存 我正在尝试使用用户输入的函数更改数组。它确实获得了输入,但它不会影响函数之外的数组 我尝试过所有不同的方法 void(字符*数组[])或void(字符数组[][3])或void(字符**数组) 他们都没有工作 #包括 #包括 #包括 #包括 #包括 使用st

编辑: 这是我输入数字时的输出方式

请输入移动:
1.
X--
---
---
请输入移动:
2.
-X-
---
---
请输入移动:
3.
--X
---
---
请输入移动:
4.
---
X--
---
请输入移动:
更改不会保存

我正在尝试使用用户输入的函数更改数组。它确实获得了输入,但它不会影响函数之外的数组

我尝试过所有不同的方法

void(字符*数组[])
void(字符数组[][3])
void(字符**数组)

他们都没有工作

#包括
#包括
#包括
#包括
#包括
使用std::string;
使用std::getline;
使用namespace::std;
常量字符串赢取案例[8]={“123”、“456”、“789”、“147”、“258”、“369”、“159”、“357”};
void make_板(字符网格[3][3]){
//一些有效的代码
}
无效打印板(字符网格[3][3]){
//一些有效的代码
}
无效输入移动(字符网格[][3]){
半人形移动;
int num_humanMove;
while(true){
不能移动;
//查找网格的索引
num_humanMove=静态施法(humanMove)-49;
int row=num_humanMove/3;
int col=num_humanMove%3;
//检查正确的输入
如果(49>静态施法(人类移动)和静态施法(人类移动)<57){

问题似乎就在这里

   while(win){
        make_board(grid);
        print_board(grid);
        enter_move(grid);
        win = !check_for_win(grid);
    }
每次在循环中调用
make_board
,我猜它每次都会重置board

你应该吃的是这个

   make_board(grid);
   while(win){
        print_board(grid);
        enter_move(grid);
        win = !check_for_win(grid);
    }

因此,您只需设置一次电路板。

问题似乎就在这里

   while(win){
        make_board(grid);
        print_board(grid);
        enter_move(grid);
        win = !check_for_win(grid);
    }
每次在循环中调用
make_board
,我猜它每次都会重置board

你应该吃的是这个

   make_board(grid);
   while(win){
        print_board(grid);
        enter_move(grid);
        win = !check_for_win(grid);
    }

所以你只需要设置一次板。

@Chipster它可能是重复的,但问题是他已经做对了。我们一直看到这一点,新手对一些代码有问题,并认为他们知道问题所在。但他们经常是错的。因此,如果你也发布了为什么你认为这些代码没有改变,这可能会有所帮助函数外部。你可能是在那里犯了错误,因为
enter\u move
看起来很好。你试过调试你的程序吗?如果你遇到麻烦,那应该是你的第一选择……试着从我们的角度来看,到目前为止,你已经发布了一些看起来完全正确的代码,你所说的就是“它不工作”。它不应该打印
X--\n--\n--\n--\n
吗?你在while循环中调用
make\u board
——我猜你会以这种方式覆盖以前修改过的板。假设你应该在
while(win)前面移动对该函数的调用
loop.@Chipster这可能是重复的,但问题是他已经做对了。我们一直看到这一点,新手对某些代码有问题,并认为他们知道问题所在。但他们经常是错的。因此,如果你还发布了为什么你认为这些代码在函数之外没有改变,可能会有所帮助。这是你可能犯了错误,因为
enter\u move
看起来不错。你试过调试你的程序吗?如果你遇到麻烦,那应该是你的第一选择……试着从我们的角度来看,到目前为止,你已经发布了一些看起来完全正确的代码,你所说的都是“它不工作”。难道不是rint
X--\n--\n--\n
?在while循环中调用
make\u board
–我猜您会以这种方式覆盖以前修改过的board。假设您应该将调用移到while(win)前面的
make\u board
loop。这证明问题不在OP认为的地方:它看起来像一本教科书的例子。我的副本是标题的副本。我讨厌问题不是他们说的那样。@KatYang别担心。这真的没什么大不了的。这证明问题不在OP认为的地方:它看起来像一本教科书例如。我的副本是标题的副本。我讨厌问题不是他们说的那样。@KatYang别担心。这真的没什么大不了的。