如何创建二维数组?

How to create a 2D array?

创建二维数组时。我遇到错误 "warning excess element in scalar initializer"。

#include <stdio.h>
#include <conio.h>

int main(){
    int arr = {{'00','01','02'},{'10','11','12'},{'20','21','22'},{'30','31','32'}};

    for(int i=0;i<4;i++){
        for(int j = 0;j<4;j++){
            printf('%s', arr[i][j]);
        }
    }
    return 0;
}

在 C 源代码中编写字符串的正确方法是使用引号 ("),而不是撇号 (')。撇号用于单个字符(或者在极少数情况下,几个字符组合成一个整数)。因此你的 printf 应该是:

printf("%s", arr[i][j]);

您似乎希望数组保存字符串或指向字符串(的第一个字符)的指针。对于后者,你应该用 char * 声明你的数组,而不是 int.

要声明数组,您必须使用方括号([])为其指定维度。仅仅为它列出多个值是不够的。所以你的声明应该是:

char *arr[4][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};

对于第一个维度,括号仍然是必需的,但您可以省略数字让编译器通过计算初始值设定项来派生它:

char *arr[][3] = {{"00","01","02"},{"10","11","12"},{"20","21","22"},{"30","31","32"}};

用于数组的下标必须与其尺寸相匹配。您只为数组的每一行列出了三个初始值设定项,因此该维度中似乎有三个元素,但您的循环使用了四个:

for(int j = 0;j<4;j++){

要么将 4 更改为 3,要么将数组声明为 char *arr[4][4] 并为每一行再提供一个元素。