下面的函数作用是什么?(好像是开辟一个二维矩阵,但感觉很乱)
大牛们,帮我看一下下面函数的功能是什么。觉得m-=nr1,以及后面的是m[nr1]是不是可以简化啊。现在是越看越乱,我看完后觉得没有必要这么麻烦(依我个人看来仅仅只是一个二维矩阵的开辟),不过我也怕我理解错了。
所以问一下大牛们,下面的目的是什么。
double **dmatrix(nr1,nr2,nc1,nc2)
int nr1,nr2,nc1,nc2;
{
int i,nrow = nr2-nr1+1,ncol=nc2-nc1+1;
double **m;
/* allocate pointer to rows */
m=(double **) malloc((nrow+1)* sizeof(double *));
m+=1;
m-= nr1;
/* allocate rows and set the pointers accordingly */
m[nr1] = (double *) malloc((nrow*ncol+1)* sizeof(double));
m[nr1] += 1;
m[nr1] -= nc1;
for(i=nr1+1;i<=nr2;i++)
m[i] = m[i-1] + ncol;
return(m);
}