在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];
}
}