在c语言中什么是二维数组
在c语言中什么是二维数组
二维数组的定义
二维数组定义的一般形式是:
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];
}
}