2.说明 今二维数组可看作特殊的一维数组 今元素在内存排列顺序为按行存放 多维数组定义亦类似于二维数组,如:f1oat a[2][3][4]; apollo a[olli 例:inta[2][3];a02 它在内存情况: a[10
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 2.说明: ❖ 二维数组可看作特殊的一维数组; ❖元素在内存排列顺序为按行存放; ❖多维数组定义亦类似于二维数组,如: float a[2][3][4]; 例: int a[2][3]; 它在内存情况:
3.二维数组的初始化 (1)按数组排列的顺序将所有数据写在一个花括号内。 inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (2)分行初始化。 inta[3]4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (3)部分元素初始化。如 inta[3][4]={,1},{0,6},{0,0,11}}; 0100 0600
3. 二维数组的初始化 (2)分行初始化。 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; (1)按数组排列的顺序将所有数据写在一个花括号内。 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; (3)部分元素初始化。如: int a[3][4]={{,1},{0,6},{0,0,11}}; 0 1 0 0 0 6 0 0 0 0 11 0
(4)如果对全部元素都赋初值,则定义数组时可以 不指定第一维的长度, inta][4]={1,2,3,4,5,6,7,8,9,10,11,12} 若对部分元素赋初值而省略第一维的长度,必 须用分行赋值來实现。 inta[][5]={{1,0,3},{0,15}}
(4)如果对全部元素都赋初值,则定义数组时可以 不指定第一维的长度, int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12}; 若对部分元素赋初值而省略第一维的长度,必 须用分行赋值来实现。 int a[][5]={{1,0,3},{0,15}}
4.3.2二维数组元素的引用 数组名[行下标][列下标]; 例:inta[3j[5]} 则可以有如下引用:a[1+1221等 注意:下标值应该在已定义的数组大小范围内
数组名[行下标] [列下标]; 例:int a[3][5]; 则可以有如下引用:a[1+1][2*2-1]等 注意:下标值应该在已定义的数组大小范围内。 4.3.2 二维数组元素的引用
例4_4编程将下列矩阵中的元素向右移动一列,最右列 移至第一列。 #include <stdio. h void maino {inta[2|3={2,5,6},{9,7,8}} 256 int 1,], temp; for(i=0;i<2:i++) 978 temp=aij3-i1 forli=3-1;j 4;J alj+l=ailjl a10=temp; for(i=0:i<2:i+) {for(j=0;j3:j++) printf(“%6d”,a[ilj) printf("n”);
例4-4 编程将下列矩阵中的元素向右移动一列,最右列 移至第一列。 2 5 6 9 7 8 #include <stdio.h> void main() { int a[2][3]={{2,5,6},{9,7,8}}; int i,j,temp; for(i=0;i<2;i++) { temp=a[i][3-i]; for(j=3-i;j>=0;j--) a[i][j+1]=a[i][j]; a[i][0]=temp; } for(i=0;i<2;i++) { for(j=0;j<3;j++) printf(“%6d ” ,a[i][j]); printf(“\n”); } }