typedef struct {

int**data;

int row;

int col;

}MyMatrix;

typedef MyMatrix* Matrix;

/*

编写矩阵输入函数 INPUT_MAT,通过该函数完成矩阵的输入并返回保

存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量)

*/

Matrix INPUT_MAT() {

int m_row, m_col;

printf("输入要创建的矩阵的行数和列数:");

scanf("%d%d", &m_row, &m_col);

if (m_row <= 0 || m_col <= 0) {

printf("输入的行数和列数错误!矩阵创建失败!\n");

return NULL;

}

Matrix mat = (Matrix)malloc(sizeof(MyMatrix));

mat->row = m_row;

mat->col = m_col;

mat->data = (int **)malloc(sizeof(int *)*m_row);

printf("输入矩阵的元素:\n");

for (int i = 0; i < m_row; i++) {

mat->data[i] = (int *)malloc(sizeof(int)*m_col);

for (int j = 0; j < m_col; j++)

scanf("%d", &mat->data[i][j]);

}

printf("矩阵创建成功!\n");

return mat;

}

/*

编写矩阵输出函数 OUTPUT_MAT,通过该函数完成矩阵的输出。

*/

void OUTPUT_MAT(Matrix mat) {

printf("矩阵输出如下:\n");

for (int i = 0; i < mat->row; i++) {

for (int j = 0; j < mat->col; j++)

printf("%d ", mat->data[i][j]);

printf("\n");

}

}

/*

清理矩阵

*/

void Clean_Mat(Matrix mat) {

for (int i = 0; i < mat->row; i++)

free(mat->data[i]);

free(mat->data);

free(mat);

}

/*

求矩阵的转置,矩阵的转置 A’=(aji)n×m,转置前输出原矩阵,转置后输

出转置矩阵。

*/

Matrix Transpose_Mat(Matrix mat) {

Matrix target = (Matrix)malloc(sizeof(MyMatrix));

target->row = mat->col;

target->col = mat->row;

target->data = (int**)malloc(sizeof(int*)*target->row);

for (int i = 0; i < target->row; i++)

target->data[i] = (int *)malloc(sizeof(target->col));

for (int i = 0; i < target->row; i++)

for (int j = 0; j < target->col; j++)

target->data[i][j] = mat->data[j][i];

return target;

}

void Transpose_Function() {

system("cls");

printf("当前功能:矩阵的转置\n");

Matrix mat = INPUT_MAT();

if (!mat) {

int b;

do {

printf("输入0回到主菜单:");

scanf("%d", &b);

} while (b != 0);

return;

}

Matrix target = Transpose_Mat(mat);

printf("转置前");

OUTPUT_MAT(mat);

printf("转置后");

OUTPUT_MAT(target);

int b;

do {

printf("输入0回到主菜单:");

scanf("%d", &b);

} while (b != 0);

Clean_Mat(mat);

Clean_Mat(target);

return;

}

free原始数组没问题,但是free转置后的数组就会出现错误,不知道为什么啊。。。跪求大佬帮我看看哪里出现错误了?

c语言二维数组错误语法,关于c语言动态分配二维数组free的错误求dalao看看怎么回事谢谢啊~~~~...相关推荐

  1. C语言代码示范与讲解+C语言编程规范及基础语法+编程实战

    上一篇文章:C语言程序设计概述+C语言简介+算法概述 C语言代码示范与讲解+C语言编程规范及基础语法+编程实战 一:代码示范集加讲解 1.C语言第一个代码:打印"This is the fi ...

  2. java数组和链表的区别_java中链表和数组的区别?

    综述:数组是线性结构,可以直接索引,即要去第i个元素,a[i]即可.链表也是线性结构,要取第i个元素,只需用指针往后遍历i次就可.貌似链表比数组还要麻烦些,而且效率低些. 想到这些相同处中的一些细微的 ...

  3. C语言基础知识之define宏定义表达式,undef,内存对齐,a和a的区别,数组知识点,int (*)[10] p,二维数组参数与二维指针参数,函数指针数组,常见的内存错误及对策

    一.用define宏定义表达式 1.定义一年有多少秒: #define SEC_A_YEAR 60*60*24*365 //上述描述不可靠,没有考虑到在16位系统下把这样一个数赋给整型变量的时候可能会 ...

  4. C语言 二维数组定义和使用 - C语言零基础入门教程

    目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...

  5. c语言二维数组初始化_6.2 C语言二维数组

    01二维数组的定义 1.一般形式 类型说明符 数组名[常量表达式][常量表达式] 2.例子 int a[10][6],b[3][4]; 3.用矩阵形式表示二维数组,是逻辑上的概念,能形象地表示出行列关 ...

  6. C语言试题四十七之程序定义了N×M的二维数组,并在主函数中自动赋值。请编写函数function(int a[N][M], int m),该函数的功能是:将数组右上半三角元素中的值乘以m。

    1. 题目 程序定义了N×M的二维数组,并在主函数中自动赋值.请编写函数function(int a[N][M], int m),该函数的功能是:将数组右上半三角元素中的值乘以m. 2 .温馨提示 C ...

  7. C语言试题二十二之定义了3×3的二维数组,并在主函数中赋值。函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。

    1. 题目 定义了3×3的二维数组,并在主函数中赋值.函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究生复试 ...

  8. c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc

    C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...

  9. 用于创建二维数组的语法

    本文翻译自:Syntax for creating a two-dimensional array Consider: 考虑: int[][] multD = new int[5][]; multD[ ...

最新文章

  1. win linux 装系统 通过 u盘
  2. 6-3 求链表的倒数第m个元素
  3. LinkedList类源码浅析(二)
  4. Golang——TCP、UDP实现并发(服务端与客户端)
  5. 本地上传代码到github仓库
  6. Windows下提升进程权限(转)
  7. 埃尔米特(Hermite)插值及其MATLAB程序
  8. Panoply软件安装
  9. ekho嵌入式Linux移植全过程
  10. 可视化管理|省时省力加速查询,建造基于 Hightopo 智慧档案馆
  11. 混合移动应用中地图导航功能开发与应用
  12. 华为鸿蒙朱丹丹,周一围心疼老婆?朱丹二胎产后憔悴臃肿却忙复出:这一年太痛苦...
  13. excel超链接应用:快速生成目录的几个方法-下
  14. 简单使用一下IDEA 的HTTP Client
  15. c语言常量指数的正确表示,c语言常量的正确表示方法有哪些
  16. 【游记】NOI2021
  17. 【图神经网络】图神经网络(GNN)学习笔记:图分类
  18. php的原子操作,原子操作 · 国外PHP框架Nette官网教程 · 看云
  19. Linux环境变量profile
  20. linux定时运行命令

热门文章

  1. spark-shell 基本用法
  2. C 标准库 —— scanf(fflush(stdin))
  3. c++数据结构中 顺序队列的队首队尾_数据结构与算法—队列图文详解
  4. 用python画图代码-常用激活函数的python画图代码
  5. 零基础学python知乎-编程零基础应当如何开始学习 Python?
  6. python 入门基础-Python 如何入门?
  7. python基础教程廖雪峰云-Python 基础教程
  8. python代码示例-Python3 实例
  9. 开课吧9.9元学python靠谱吗-开课吧的python课程怎么样,值得报名吗?
  10. 智能手机的超性能语音识别技术简介