考虑我有一个矩阵A n*n
元素定义为指针的指针**A
。我想将B nb*nb
A的子矩阵 ( ) 作为指针传递给另一个函数,对子矩阵执行一些数学运算并将其返回到原始函数。从函数返回的子矩阵也是矩阵 A 的成员,位置与之前相同。什么是最好的发送方式?
你不能只使用指针算法来做到这一点。你所拥有的是一个数组数组。假设外部数组保存行,内部数组保存每行的元素(列),您可以将指针传递到外部数组的中间以跳过行,但不能跳过列。如果您还需要跳过列,您有两个选择:
传递原始矩阵以及偏移量和子矩阵大小。这意味着函数需要以一种能够处理子矩阵的方式进行编码。
创建一个新的外部数组来保存指向与所需列对应的每个内部数组元素的指针。例如(假设elem
是矩阵中每个元素的类型:
elem **get_submatrix(elem **mat, int n, int x, int y, int m)
{
elem **submat = (elem **)calloc(m, sizeof(elem*));
int i;
for(i = 0; i < m; i++)
{
submat[i] = mat[y++] + x;
}
return submat;
}
当然,您以后必须free
使用子矩阵(只有外部数组,而不是内部数组)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句