为什么我的数组元素被覆盖?

时间:2015-11-05 05:38:20

标签: c

我盯着这段代码至少4个小时。

我不确定我做错了什么。

我正在使用简单的for循环更新数组hand[5][2]

hand[0][2]hand[0][3]hand[0][4]中存储的值会被覆盖。

我使用调试器慢慢地通过每一行,但我仍然没有 明白为什么我会得到不同的价值观。

这是我得到的输出

hand[0][0] = 0
hand[0][1] = 1
hand[0][2] = 2
hand[0][3] = 3
hand[0][4] = 4
hand[1][0] = 0
hand[1][1] = 1
hand[1][2] = 2
hand[1][3] = 3
hand[1][4] = 4
0 1 0 1 2 // WHY ARE hand[0][2],hand[0][3],hand[0][4] not the same????
0 1 2 3 4 

代码:

int main() {
    //tests();
    int hand[5][2];
    int a[5], b[5];
    char line[100];
    int player = 0;
    int card = 0;
    for (int i = 0; i < 10; i++) {
        hand[player][card] = card;
        printf("hand[%d][%d] = %d\n", player, card, hand[player][card]);
        card++;
        if (card == 5) { player++; card = 0; }
    }
    // print first hand
    for (int j = 0; j < 5; j++) {
        printf("%d ", hand[0][j]);
    }
    printf("\n");
    // print second hand
    for (int j = 0; j < 5; j++) {
        printf("%d ", hand[1][j]);
    }
    printf("\n");
    return 0;
}

1 个答案:

答案 0 :(得分:4)

int hand[5][2];应为int hand[2][5];