通过函数内的void函数修改矩阵

时间:2018-01-11 18:24:52

标签: c++ pointers matrix linear-algebra linear

我在main函数中动态分配了一个矩阵。我想找到矩阵的上三角形。我正在使用guasselemination算法。函数名称为Uppertriangle。 void函数有三个参数:

void Uppertriangle(double** A, double *B, int n)

我想在SolveUppertriangle函数中使用修改后的矢量B返回修改后的矩阵A.

void SolveUpperTriangle(double **A, double *B,int size){
    ReadMatrix(A,size); //Original matrix printed
    UpperTriangle(A,B,size); //Prints out modified A 
    ReadMatrix(A,size);  //Still prints out the Original Matrix

}   

当我打印出UpperTriangle内的矩阵时,矩阵被正确修改,尽管另一个函数内的函数不会影响分配的矩阵。我可以选择将UpperTriangle的所有代码放在SolveUpperTriangle中,这样就可以解决问题。但我想弄清楚为什么矩阵不会改变。

int main(){
 "here allocating matrix"

SolveUpperTriangular(A,B,n);
}

原始A矩阵

4   4   2   
4   5   3   
2   3   3   

在Uppertriangle内部打印的修改后的上三角矩阵。

4   5   3   
0   -1  -1  
0   0   1.2

原始矩阵再次打印出来。

4   4   2   
4   5   3   
2   3   3   

0 个答案:

没有答案