C:数组初始化需要括号括起初始化列表 - 简单代码

bre*_*_mb 5 c arrays

我是C的完全初学者,我遇到了我认为是一个简单的错误.我在网上查找了类似的问题,但我发现我的代码没有问题.很少,我不知道问题是什么.

这是错误:

C: Array initialization requires a brace-enclosed initializer list

这是我的完整代码

#include <stdio.h>

int main() {
    char walk[10][10] = { 0 };

    for (int row = 0; row < 10; row++) {
        for (int col = 0; col < 10; col++) {
            walk[row][col] = '.';
            printf("%c", walk[row][col]);
        }
    }

    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

pmg*_*pmg 6

使用时char walk[10][10] = { 0 };出现编译器错误“C:数组初始化需要大括号括起来的初始值设定项列表”。

那是你的编译器非常保留。

所讨论的语句是完全合法的 C。它定义了一个 10x10二维char 数组,名称walk为其中每个元素(共 100 个)为0

为了符合您的编译器的想法,请使用以下之一

char walk[10][10] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0 },  /* ..., */ { 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
char walk[10][10] = { { 0 },  { 0 } };
char walk[10][10] = { { 0 } };
char walk[10][10] = { 0 }; // initial statement wrongly rejected by compiler
Run Code Online (Sandbox Code Playgroud)

更好的(恕我直言)是将编译器配置为接受合法代码。

godbolt.org接受您的初始代码