C语言中二维数组的问题

时间:2022-09-06 08:37:39

C语言中关于二维数组的处理:

1.判断二维数组行列的长度

方法一:

程序员在编写二维数组时直接定义二维数组行列的长度,建议利用宏定义对二维数组行列的长度进行定义,方便在以后对程序维护时进行更改。


方法二:

利用sizeof函数获取数组行列的长度。例如定义一个二维数组:arraryTest[2][3];

arrary[2][3];

sizeof(arrary); /*整个数组的长度*/

sizeof(arrary[0]); /*数组一行元素所占的空间,即列数*/

sizeof(arrary)/sizeof(arrary[0]) /*数组的行数*/

sizeof(arrary[0][0]); /*数组中每个元素的长度大小*/
sizeof(arrary[0])/sizeof(arrary[0][0])  /*也可用此方法求得行数*/
 
2.二维数组表示矩阵时实现矩阵的转置代码如下:</p><pre class="cpp" name="code">#include <stdio.h>int main(void){	int arrary[2][3] = { 1,2,3,4,5,6 };	for (int i = 0; i < 2; i++)	{		for (int j = 0; j < 3; j++)		{			if (j == 2)			{				printf("a[%d][%d] = %d  \n", i, j, arrary[i][j]);			}			else			{				printf("a[%d][%d] = %d  ", i, j, arrary[i][j]);			}		}	}	int arraryAfter[3][2];	for (int i = 0; i < 2; i++)	{		for (int j = 0; j < 3; j++)		{			arraryAfter[j][i] = arrary[i][j];		}	}	printf("矩阵转置后的形式为:\n");	for (int i = 0; i < 3; i++)	{		for (int j = 0; j < 2; j++)		{			if (j == 1)			{				printf("a[%d][%d] = %d  \n", i, j, arraryAfter[i][j]);			}			else			{				printf("a[%d][%d] = %d  ", i, j, arraryAfter[i][j]);			}		}	}	return 0;}

缺点:实现转置较慢

有点:便于理解

改进:可利用指针进行矩阵转置的快速转换