学习啦 > 知识大全 > 知识百科 > 百科知识 > 在c语言中什么是二维数组

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

时间: 欧东艳656 分享

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

  }

  }

243532