在c语言中什么是二维数组

2017-03-17

二维数组的定义

二维数组定义的一般形式是:

dataType arrayName[length1][length2];

其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标的长度。例如:

int a[3][4];

定义了一个3行4列的数组,共有3×4=12个元素,数组名为a,即:

a[0][0], a[0][1], a[0][2], a[0][3]

a[1][0], a[1][1], a[1][2], a[1][3]

a[2][0], a[2][1], a[2][2], a[2][3]

在二维数组中,要定位一个元素,必须给出一维下标和二维下标,就像在一个平面中确定一个点,要知道x坐标和y坐标。例如,a[3][4] 表示a数组第3行第4列的元素。

二维数组在概念上是二维的,但在内存中地址是连续的,也就是说存储器单元是按一维线性排列的。那么,如何在一维存储器中存放二维数组呢?有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。

在C语言中,二维数组是按行排列的。也就是先存放a[0]行,再存放a[1]行,最后存放a[2]行;每行中的四个元素也是依次存放。数组a为int类型,每个元素占用4个字节,整个数组共占用4×(3×4)=48个字节。

c语言二维数组

转置矩阵

//其中A,B是m*n矩阵:

voidtramat(matrixA,matrixB){inti,j;

for(i=0;i

for(j=0;j

B[j]

}

矩阵相加

//其中A,B,C是m*n矩阵:

voidaddmat(matrixC,matrixA,matrixB){

inti,j;

for(i=0;i

for(j=0;j

c[j]=A[j]+B[j];

}

矩阵相乘

//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵

voidmutmat(matrixC,matrixA,matrixB){

inti,j,k;

for(i=0;i

for(j=0;j

C[j]=0;

for(k=0;k

C[j]=C[j]+A[k]*B[k][j];

}

}

更多相关阅读

最新发布的文章