如何创建二维数组?
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]
并为每一行再提供一个元素。
创建二维数组时。我遇到错误 "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]
并为每一行再提供一个元素。