cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
我有这个数组用于我的游戏,当我在我的数组中使用了一个数字时,它将被替换为0.在游戏结束后我需要重置数组,否则0将保留在数组中。
如何重置该阵列?
答案 0 :(得分:2)
创建一个存储原始值的数组。如果要重置它,请将其复制到原始字符串:
int temp_cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
int cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
...
memcpy( cards, init_cards, sizeof cards ); // copying temp_card to card and resetting card
建议使用 memcpy
,但如果您想保持简单,也可以使用=
将一个字符串复制到另一个字符串。
@Dandorid建议的另一种方法很好,我会告诉你如何做到这一点:
void reset (int *cards) {
int temp_cards[] = {2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11};
memcpy (cards, temp_cards, sizeof (cards));
}
当您调用它时,传递cards
数组。
答案 1 :(得分:1)
为init值定义一个数组,为工作值定义其他数组:
const int init_cards[] = {2,2,2,2,3,3...};
int cards[sizeof init_cards / sizeof init_cards[0]];
...
memcpy( cards, init_cards, sizeof cards ); // reset values
重置 - 将init_cards
复制到cards
。
答案 2 :(得分:1)
创建一个初始化数组的函数;然后在每场比赛开始时给它打电话。
答案 3 :(得分:0)
有两个阵列:一个具有默认设置,另一个具有您修改的阵列。将“重置”副本从默认数组复制到您修改的数组时。
答案 4 :(得分:0)
你可以使用一个函数,比如Initialize
,它使用memcopy
(或一个手动编码的循环)来为数组填充一些预定值;没有办法将一些初始状态恢复到数组。
答案 5 :(得分:0)
你做不到。您需要创建一个不会更改的数组并将其复制到工作数组中。根据需要重复复制。