c++ - 修改结构的函数不更新结构
问题描述
我正在尝试制作井字游戏。我做了这个函数,它应该更新板值(插入'X'或'O')但结构根本不更新,它表明值与初始化时保持相同。
#include <iostream>
struct Board {//initializes a struct
char A1 = ' ';
char A2 = ' ';
char A3 = ' ';
char B1 = ' ';
char B2 = ' ';
char B3 = ' ';
char C1 = ' ';
char C2 = ' ';
char C3 = ' ';
};
struct Board InputSignInStruct(char num, char letter, struct Board b,char sign) {//a function which is supposed to update values in the struct
if (letter == 'A')
{
if (num == '1')
b.A1 = sign;
if (num == '2')
b.A2 = sign;
if (num == '3')
b.A3 = sign;
}
if (letter == 'B')
{
if (num == '1')
b.B1 = sign;
if (num == '2')
b.B2 = sign;
if (num == '3')
b.B3 = sign;
}
if (letter == 'C')
{
if (num == '1')
b.C1 = sign;
if (num == '2')
b.C2 = sign;
if (num == '3')
b.C3 = sign;
}
return b;
}
int main() {
struct Board b;
char letter,num;
std::cin>>letter>>num;
char sign;
std::cin>>sign;
b = InputSignInStruct(letter, num, b, 'X');//should return the updated struct but it doesent update
}
解决方案
你的函数定义是
struct Board InputSignInStruct(char num, char letter, ...)
但你打电话给
b = InputSignInStruct(letter, num ...)
你已经交换了num
和letter
。
推荐阅读
- terraform - 如果我尝试在 terraform 中循环事件,则会出错
- c# - 从 API 网关调用 C# lambda 的 JSON 序列化错误
- jsoup - 在 onButtonClick 之后使用 jsoup 发布表单
- ios - Q:如何重构尽可能多的带有属性的代码块的重复?
- javascript - React-Native 应用程序上的 AppLock 功能
- flutter - 使用 Dart 将字符串转换为列表/映射
- javascript - NodeJS (Express + PUG) MVC 端口检查器
- java - 创建一个编码字母
- r - R中的函数可以计算一个数字在向量中出现的次数
- esp8266 - AT+CIPSENDEX 返回链接无效