首页 > 解决方案 > 修改结构的函数不更新结构

问题描述

我正在尝试制作井字游戏。我做了这个函数,它应该更新板值(插入'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
}

标签: c++struct

解决方案


你的函数定义是

struct Board InputSignInStruct(char num, char letter, ...)

但你打电话给

b = InputSignInStruct(letter, num ...)

你已经交换了numletter


推荐阅读