【发布时间】:2011-09-16 11:06:06
【问题描述】:
我正在为 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
标签: c++ pointers segmentation-fault