将char添加到变量名称

时间:2013-09-20 06:55:17

标签: c++ variables char

就我而言,我想要的代码看起来像这样:

anRow0[] = {0,0,0,0,0,0,0}
anRow1[] = {0,0,0,0,0,0,0}
anRow2[] = {0,0,0,0,0,0,0}
int place(int nVar1, int nVar2) //Where nVar1 is the row and nVar2 = current turn
{
    int nVert = 0;
    while (anRow\i want to add nVar1 here\[nVert+1] && nVert < 6)
    {
        nVert += 1;
    }
    anRow[nVert] = nVar2;
    return true;
}

我可以为anRow1 []等制作几个“if (nVar1 == 0) //check但这似乎效率低下。” 有没有办法添加这样的数字?另外,请忽略剩下的代码,我知道你可以用for替换while,但除了这一点之外。

感谢任何帮助

5 个答案:

答案 0 :(得分:2)

好像你想要一个二维数组,就像这样

int an[3][6] = {{0,0,0,0,0,0,0}, {0,0,0,0,0,0,0}, {0,0,0,0,0,0,0}};

int place(int nVar1, int nVar2)
{
    int nVert = 0;
    while (nVert < 6 && an[nVar1][nVert+1])
    {
        nVert += 1;
    }
    an[nVar1][nVert] = nVar2;
    return true;
}

虽然该代码无疑是错误的(nVert < 5会更好)。仍在修复错误是另一个问题。

答案 1 :(得分:1)

您可以将数组放在另一个数组中,如下所示:

std::vector<int*> allRows = {
    anRow0,
    anRow1,
    anRow2
};

然后使用变量索引allRows向量,如

allRows[i][nVert] = nVar2;

或者更好的是,使用std::array的{​​{1}}:

std::array

答案 2 :(得分:1)

您可以使用二维数组而不是3个1维数组。 您可以在此处阅读有关它们的内容:http://www.cplusplus.com/doc/tutorial/arrays/

以下是可能的修改:

int an[3][7] = {0};
int place(int nVar1, int nVar2) //Where nVar1 is the row and nVar2 = current turn
{
    int nVert = 0;
    while (anRow[nVar2][nVert+1] && nVert < 6)
    {
        nVert += 1;
    }
    anRow[nVert] = nVar2;
    return true;
}

顺便说一句,虽然返回值是int,但为什么返回“true”。这是允许的,但我建议不要这样做。改为返回1,或将返回值更改为布尔值。

答案 3 :(得分:1)

这是不可能的,因为C是一种编译语言,变量名称被转换为内存地址。在运行时,代码甚至不知道源代码中变量的名称。

如果要按运行时数据选择值,则必须始终使用数组。这里有多个选项,最好的C ++是使用一些STL容器(std :: array,std :: vector,std :: list,...),但你也可以使用C风格的数组。

答案 4 :(得分:0)

不,你不能操纵变量,函数的名称,或者语法上真正的anthing - 如果你真的需要这个C ++是错误的语言。使用预处理器宏可能会有一些非常有限的功能,但真的不是你想要的。

而是使用容器来存储变量:

std::vector<std::array<int, 7>> rows;