我正在爲QM中的特徵值問題編寫Jacobis方法,我剛剛啓動了C++,我想用雙指針構造矩陣,但涉及的物理問題需要大量代碼。訪問雙指針導致分段錯誤
我不想讓我的main()
與不可讀的行混亂(其他人將不得不閱讀此代碼..),所以想要將問題分成子功能。我做了一個函數,它需要一個雙指針並返回一個矩陣,但爲什麼我不能在函數外部訪問它?我的代碼segfaults(標記如下),當我嘗試。如何在main()之外構造一個矩陣,同時仍然可以在main()
中訪問它?
enter code her enter code here
int i, j, k;
//== BEGIN MAIN ==//
int main()
{
//Constants and variables
double **A;
double epsilon = pow((double)10, double(-8)); //The convergence limit for jacobis method
int N = 10; //Dimension of matrix
char test[] = "test";
cout <<"The inner matrix function:"<<endl;
makematrix(N, A);
cout<<endl<<"The outer matrix function:"<<endl;
//This part segfaults
for(i=0; i<N; i++)
{
cout<<endl;
for(j=0; j<N; j++)
{
cout<<A[i][j]<<" ";
}
}
return 0;
}
//== END MAIN ==//
//==Begin function definitions==//
void makematrix(int N, double **A)
{
//Function for initializing our tridiagonal matrices for jacobis method
A = new double*[N];
for(i=0; i<N; i++)
{
A[i] = new double[N];
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
A[i][j] = 0;
}
}
//Prints the matrix declared here
for(i=0; i<N; i++)
{
cout<<endl;
for(j=0; j<N; j++)
{
cout<<A[i][j]<<" ";
}
}
cout <<endl;
return;
}
值10^-8不具有使用'pow'來計算,而是可以寫爲常數'1E-8' –