在C中获取多维数组的错误

时间:2013-05-19 20:08:13

标签: c arrays

所以,我决定做一个小型的ASCII艺术游戏,然而,当我宣布这个板时,我得到的错误是“数组类型有不完整的元素类型”。关于如何解决这个问题的任何想法?

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

int height = 10;
int width = 12;
char board[][] =            {{'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'},
                             {'-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-'}};

void printBoard(void) {
    int i, j;
    for (i = 0; i < height; i++) {
        for (j = 0; j < width; j++) {
            printf("%c", board[i][j]);
        }
    }
}

int main(void) {
    printBoard();
    return 0;
}

3 个答案:

答案 0 :(得分:5)

只有最外层的尺寸可以不指定。

将数组定义更改为:

char board[][12] =  { ...};

如果您使用3D数组,则同样适用:

char board3D[][12][12] =  { ...}; // OK
char board3D[][][12] =  { ...}; // Not OK
char board3D[][][] =  { ...}; // Not OK

答案 1 :(得分:0)

我认为您想要动态地向多维数组中添加项目,但在c char board[][] =中无法使用,您需要在char board[][12] =长度指定。

答案 2 :(得分:0)

最好像这样声明你的数组:

#define height 10
#define width  12
char board[height][width];

然后像这样初始化它:

for(i = 0; i < height; i++){
    for(j = 0; j < width; j++){
        board[i][j] = '-';
    }
}

然后您可以使用“printBoard()”函数将其打印出来。 希望这有帮助!