void dealCard(int tds, int totaldeck[]) //take total deck divide it by two deal it to two player
{
int ku=0; //ku is the increasing card number so for 1 you give it to p1 then 2 u give to p2
int player1deck[tds/2];
int player2deck[tds/2];
int num =0;
int num1=0;
for (ku; ku < tds; ku++)
{
if (ku % 2 == 1) // every other card is given to playerdeck1
{
player1deck[num] = totaldeck[ku]; //totaldeck is the already shuffled complete deck
num++;
//cout << tds << endl;
}
else
{
player2deck[num1] = totaldeck[ku];
num1++;
}
}
cout << endl;
for (int kookoo = 0; kookoo < ku; kookoo++)
{
cout << player1deck[kookoo] << endl;
}
}
我正在创建一个功能,可以向玩家1和玩家2处理半个已经洗过的牌。
我遇到的一个问题是,所有26个参数都在player1deck [num]中填满。输出变成随机数,如52,10201328,-208476711,0,1等。我认为计算机只是试图将内存分配给未填充的点,因为[ku]一直到tds(用户的甲板数量)玩* 52)和[num]只是其中的一半。反正有没有摆脱这个额外的记忆,所以我可以摆脱那些随机数?非常感谢您的任何帮助/建议
答案 0 :(得分:1)
player1deck
只包含26个元素,最后一个循环尝试访问前26个元素之外的元素。这是undefined behaviour。
您需要像这样更改循环条件:
for (int kookoo = 0; kookoo < tds / 2; kookoo++)