如何创建二维数组?

时间:2018-12-01 11:37:55

标签: c arrays 2d

创建2D数组时。我收到错误消息“警告标量初始化程序中的多余元素”。

#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;
}

1 个答案:

答案 0 :(得分: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],然后为每一行提供一个元素。