C语言之二维数组概念
语法:类型 数组名 [常量表达式] [常量表达式]
eg:int A [3] [3]; // 3*3 3行3列
char B [5] [6]; //5*6 5行5列
double c [3] [4]; //3行4列
二维数组初始化:
1、a [3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
或
a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1234
5678
9101112
或:
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1234
5678
9101112
对某些元素进行初始化:
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
int a[3][4]={{1},{5},{9}}; //对每一行的第一个元素进行初始化操作。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1000
5000
9000
[liangjian@localhost ~]$
对特定元素进行初始化操作:
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
int a[3][4]={
[0][0]=1,
[1][1]=2,
[2][2]=3
};
//1行1列元素初始化为1,4行2列初始化为2,3行3列元素初始为3.
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1000
0200[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
//int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1234
5678
9101112
[liangjian@localhost ~]$ vim test18.c
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
//int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
test18.c: 在函数‘main’中:
test18.c:5:6: 错误:数组元素的类型不完全
int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
^
0030
[liangjian@localhost ~]$
二维数组第一维度可省略,其他维度必须写上:
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
//int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
1234
5678
9101112
[liangjian@localhost ~]$ vim test18.c
[liangjian@localhost ~]$ cat test18.c
#include <stdio.h>
int main()
{
//int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d",a[i][j]);
}
printf("\n");
}
}
[liangjian@localhost ~]$ gcc test18.c &&./a.out
test18.c: 在函数‘main’中:
test18.c:5:6: 错误:数组元素的类型不完全
int a[3][]={1,2,3,4,5,6,7,8,9,10,11,12}; //只有第一维度可以省略不写(这里的3可以省略不写),4必须写,3和4不能同时不写。
^