为什么 C 输出内存位置/指针而不是数组的值



我尝试用C编写一个程序,它应该输出如下:

  A B C D E F G H
1 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0
3 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
7 0 0 0 0 0 0 0 0
8 0 0 0 0 0 0 0 0

代码:

#include <stdio.h>
#define FILA 8
#define COLUMNA 8
int main(void)
{
    int nFila = 1;
    int tablero[FILA][COLUMNA] = {};
    int i, j;
    printf("  A B C D E F G Hn");
    for (i = 0; i < FILA; i++)
    {
        printf("%d ", nFila);
        nFila++;
        for (j = 0; i < COLUMNA; j++)
        {
            printf("%d ", tablero[i][j]);
        }
        printf("n");
    }
return 0;
}

但是,它为每个似乎是内存地址的数组索引输出随机数......我怎样才能做到这一点?

您还应该初始化子数组:

#include <stdio.h>
#define FILA 8
#define COLUMNA 8
int main(void)
{
    int nFila = 1;
    int tablero[FILA][COLUMNA] = {{},};
    int i, j;
    printf("  A B C D E F G Hn");
    for (i = 0; i < FILA; i++)
    {   
        printf("%d ", nFila);
        nFila++;
        for (j = 0; j < COLUMNA; j++)
        {
            printf("%d ", tablero[i][j]);
        }
        printf("n");
    }   
return 0;
}

顺便说一句,我还修复了内循环中的条件。

你在输出中得到垃圾值。
您可以通过使用 0 部分初始化数组来将数组中的所有值设置为 0。
因此,数组中的所有值都将初始化为 0。


int tablero[FILA][COLUMNA] = {0};此外,您的代码中还有一个错误。
请将您的行for (j = 0; i < COLUMNA; j++)更正为:
for (j = 0; j< COLUMNA; j++)

最新更新