创建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;
}
答案 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]
,然后为每一行提供一个元素。