多维数组的讲解
多维数组
数组是具有相同数据类型且按一定次序排列的一组变量的集合体。构成一个数组的所有变量称为数组元素,数组的名字称为数组名,每一个数组元素由数组名及其在数组中的位置(下标)确定。数组按下标个数分为:一维数组,二维数组和三维数组等,二维及以上数组统称为多维数组
在数组名后有两对方括号的数组被称为二维数组,同理,数组名后有n对方括号的数组被称为n维数组,二维及以上的数组被称为多维数组。
定义形式:
类型标识符 数组名[正整型常量表达式1]【正整型常量表达式2】…
多维数组定义的数组元素个数为
正整型常量表达式1*整型常量表达式2…
例如
int x[2][3]
是一个整形二维数组,共有6个元素。它们按顺序分别是
X[0][0],x[0][1],x[0][2],x[1][0],x[1][1],x[1][2]
不能用变量表示数组长度
数组名后面应该用[]
不能用负数表示数组长度
不能用变量表达式表示数组长度
多维数组存储形式
按x[0][0]
x[0][1]
x[0][2]
x[1][0]
x[1][1]
x[1][2]
依次存放
多维数组的引用
与一维数组一样,不能整体引用一个多维数组,只能引用其元素,引用格式类似一维数组
二维数组的引用形式为
数组名[下标1][下标2]
三维数组的引用形式为
数组名[下标1][下标2] [下标3]
其中,下标是正整型常量表达式,也可以是含变量的正整型表达式
(特别注意下标越界的问题)
多维数组的初始化
1.把初始值放在一个大括号里
例如,二维数组x[2][3]用下列方法初始化
Int x[2][3]={1,2,3,4,5,6}
于是
x[0][0] =1
x[0][1] =3
x[0][2] =5
x[1][0]=2
x[1][1]=4
x[1][2]=6
对第一维的长度可以不指定,对第二维的长度必须指定
例如
Int a[3][4]
等价于
Int a[ ][4]
将多维数组分解成多个一维数组
将二维数组看成一个特殊的“一维数组“,它的每一个元素又是一个一维数组
例如
Int a[2][3]
可以把它看成是具有两个元素:a[0],a[1]的一维数组,而a[0],a[1]又都是具有3个元素的一维数组,即
a[0] : a[0][0] a[0][1] a[0][2]
a[1] : a[1][0] a[1][1] a[1][2]
因此,对二维数组a[2][3]的初始化又可以分解成多个一维数组的初始化
int a[2][3] = {{1,3,5},{2,4,6}};
应用
求一个3*4矩阵中数值最大的元素,以及它所在的行号和列号
#includeint main()
{
int i,j;
int row=0; //定义行数
int column=0; //定义列数
int max; //定义最大值
int a[3][4];
for (i=0;i<=2;i++)
for (j=0;j<=3;j++)
scanf ("%d",&a[i][j]); //向矩阵中输入数值
max = a[0][0];
for (i=0;i<=2;i++)
for (j=0;j<=3;j++)
if (a[i][j]>max) //遍历数组,选出整个矩阵中最大数
{max = a[i][j];
row = i ;
column = j;
} // 将最大数所在的行和列得出
printf("max=%d\nrow=%d\ncolumn=%d\n",max,row+1,column+1); //输出最大值和所在行和列
return 0 ;
}