C语言中矩阵定义问题(续)

使用二级指针定义矩阵,方便了矩阵运算,但是如果使用malloc函数进行初始化,空间没有得到及时释放的话,很容易报错,内存访问冲突。解决这个问题的方法就是,不用malloc函数初始化,定义一个指针数组和一个二维数组,通过指针数组将二级指针挂接到二维数组上去,虽然在计算的过程中没有使用到指针数组和二维数组,但是这样避免了指针失效等问题,具体实现的例子如下

定义

 Matrix C_bn;   
 float *pC_bn[3];
 float AC_bn[3][3];

挂接

 C_bn.p = (float **)pC_bn;    
 C_bn.rows = 3;
 C_bn.cols = 3;     
 pC_bn[0] = AC_bn[0];
 pC_bn[1] = AC_bn[1];
 pC_bn[2] = AC_bn[2];

一定要注意维数一致,不然计算中很容易出错。

另外,对于指针这一块,指针不能作为函数返回值,不然指针会失效。切记。所以在编写矩阵的加减乘除运算的时候不要返回一个Matrix类型,里边包含指针,会出错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值