打印出2D数组

时间:2016-03-25 14:20:44

标签: arrays pointers parameter-passing

我试图通过在函数的参数中传递变量来创建二维数组。您能否查看我的代码是否有任何错误,谢谢。

#include <stdio.h>
#include <stdlib.h>

void print(char *board)
{
    int i = 0, j = 0;

    printf("Board :\n");
    for(i; i < 3 ;i++)
    {
        for(j; j < 3;j++)
        {
            board[i][j] = 'X';
            printf("%c", board[i][j]);
        }
    }
    printf("\n");
}


int main()
{
    char board[3][3];
    print(&board[0][0]);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您没有在内部循环中初始化j,因此它仅针对i=0运行, 之后j变为3因为您没有在循环中初始化它,那么条件j < 3将始终为 false 以获得i的更多值,因此内循环永远不会再执行。

如果你想在每一行之后打印新行,那么你的printf("\n");语句应该在第一个for循环中(参见代码)。

更改您的代码:

#include <stdio.h>
#include <stdlib.h>

void print(char board[][3])
{
    int i,j;

    printf("Board :\n");
    for(i=0; i < 3 ;i++)
    {
        for(j=0; j < 3;j++) // initialize j to 0
        {
            board[i][j] = 'X';
            printf("%c", board[i][j]);
        }
        printf("\n"); //new line after each row
    }

}


int main()
{
    char board[3][3];
    print(board);
    return 0;
}