此问题已在此处有答案:
Return a 2d array from a function(10个答案)
Return array in a function(20个答案)
9天前关闭
我在做一个函数来反转一种矩阵,我在返回它时遇到了麻烦。我已经查找了一些教程,购买他们没有工作,可能是因为他们有一个不同的情况,这就是为什么它来到这个网站来回答我的问题。下面是代码(C++):
float inverse(float mat[4][4])
{
float nmat[4][4];
nmat[0][0] = mat[0][0]; nmat[0][1] = mat[0][1]; nmat[0][2] = mat[0][2]; nmat[0][3] = mat[0][3];
nmat[1][0] = mat[1][0]; nmat[0][1] = mat[1][1]; nmat[1][2] = mat[1][2]; nmat[1][3] = mat[1][3];
nmat[2][0] = mat[2][0]; nmat[0][1] = mat[2][1]; nmat[2][2] = mat[2][2]; nmat[2][3] = mat[2][3];
nmat[3][0] = -(mat[3][0] * mat[0][0] + mat[3][1] * mat[1][0] + mat[3][2] * mat[2][0]);
nmat[3][1] = -(mat[3][0] * mat[0][1] + mat[3][1] * mat[1][1] + mat[3][2] * mat[2][1]);
nmat[3][2] = -(mat[3][0] * mat[0][2] + mat[3][1] * mat[1][2] + mat[3][2] * mat[2][2]);
nmat[3][3] = 1.0f;
return mat;
}
2条答案
按热度按时间yhived7q1#
你可以使用
std::array
来代替低级数组,因为std::array
可以被复制、返回和传递,没有任何问题:wz3gfoph2#
你想返回一个新的数组还是改变你的数组?当你将整个矩阵复制到
nmat
时,我想你想要返回nmat
,因为nat
是不变的!正如@273K所提到的,函数的返回类型不应该是一个浮点数,而是一个数组的数组。最后一点:如果使用循环来复制数组,看起来会更干净。