写一函数,将一个3x3的整型矩阵转置
解题思路: 矩阵转置就是行变列,列变行,说白了就是 arry[i][j] 转换为 arry[j][i] ; 但是需要注意的是,
一. 因为行列个数可能并非相同,转换后行数或者列数变多了或者变少,因此不能直接转换。需要重新申请空间存储转换后的数据。
二. 二维数组是线性扁平化存储的,无法确定列数的情况下传参后,在函数中使用时需要头指针向后偏移 列数*第n行 才能访问到第n行的数据。例如在函数中访问 arry[i][j] ,需要通过arry + col_num*i + j 方式进行访问。
答案:
#include <stdio.h>
int **transform(int **arry, int row_count, int col_count)
{
//列变行,行变列,则行的个数是以前列的个数,列的个数是以前行的个数
int **p = NULL;
//矩阵中有多少行,取决于以前有多少列,然后申请地址空间
p = (int **)malloc(sizeof(int *) * col_count)