C ++函数和变量异常

时间:2013-05-08 05:46:59

标签: c++ function variables

我正在使用Code :: Blocks来编写纸牌游戏。我似乎遇到了这个功能的问题。出于某种原因,变量'card'在此处的某处被卡住了。继承人代码:

void prompt(int &space, int &card, bool checkS[9], bool checkC[4]){

do{
    cout << "\n\nSelect a card: ";
    cin >> card;

    if(checkC[(card - 1)] == true || card < 1 || card > 4)
        cout << "Invalid selection. ";

}while(checkC[(card - 1)] == true || card < 1 || card > 4);

do{
    cout << "\n\nSelect a space: ";
    cin >> space;

    if(checkS[(space - 1)] == true || space < 1 || space > 9)
        cout << "Invalid selection. ";

}while(checkS[(space - 1)] == true || space < 1 || space > 9);

cout << "\n\n";

cout << card << " / " << space << endl;

card -= 1;
space -= 1;

cout << card << " / " << space << endl;

checkC[card] = true;
checkS[space] = true;

cout << card << " / " << space << endl;
}

我为测试做的3个cout声明。前两个cout看起来很好,但出于某种原因,第三个,变量'card'是一些古怪的@ss号码。有什么想法吗?

编辑: 这就是我称之为功能的方式。

prompt(boardSpace, cardFromHand, &checkS[9], &checkC[4]);

1 个答案:

答案 0 :(得分:0)

该功能(大部分)都很好。最有可能的问题就是如何调用它。特别是,checkS和/或checkC可能没有为它们分配足够的内存,当您尝试在

中修改它们时会导致内存损坏
checkC[card] = true;
checkS[space] = true;

P.S。这不太可能与您的问题有任何关系,但

while(checkC[(card - 1)] == true || card < 1 || card > 4);

应该是

while(card < 1 || card > 4 || checkC[(card - 1)] == true);

换句话说,检查card 之前使用它来索引checkC

同样的问题出现在其他几个地方。

编辑您说:

  

我这样称呼它:

prompt(boardSpace, cardFromHand, &checkS[9], &checkC[4]); 

如果checkScheckC是正确尺寸的数组,则上述内容应该只是:

prompt(boardSpace, cardFromHand, checkS, checkC); 

否则你将指针传递给两个数组的 end ,而不是指向开头。