当前位置: 代码迷 >> C语言 >> [求助] 如何返回一个二级指针呢?急,谢谢
  详细解决方案

[求助] 如何返回一个二级指针呢?急,谢谢

热度:268   发布时间:2007-05-22 10:54:32.0
[求助] 如何返回一个二级指针呢?急,谢谢
void main()
{
int k;
double (*c)[2];
……
S(256);
c=(double *[2])co(str,256,256);//老是说这里错了呢~该怎么写呢?
for(k=0;k<256;k++)
free(c[k]);
free(c);

}


double **co(double str[][2],int n,int m)
{
int k;
double (*c)[2];
double (*p)[2];
double (*q)[2];
c=(double**)malloc(sizeof(double*)*n);
for(k=0;k<1;k++)
c[k]=(double*)malloc(sizeof(double)*2);

p=(double**)malloc(sizeof(double*)*n/2);
for(k=0;k<1;k++)
p[k]=(double*)malloc(sizeof(double)*2);

q=(double**)malloc(sizeof(double*)*n/2);
for(k=0;k<1;k++)
q[k]=(double*)malloc(sizeof(double)*2);

if(n==1)
{
c[0][0]=str[0][0];
c[0][1]=str[0][1];
}
else
{
for(k=0;k<=n/2-1;k++)
{
tmp1[k][0]=str[2*k][0];
tmp1[k][1]=str[2*k][1];
tmp2[k][0]=str[2*k+1][0];
tmp2[k][1]=str[2*k+1][1];
}

p=(double *[2])co(tmp1,n/2,n/2);//这里也是,老是错……
q=(double *[2])co(tmp2,n/2,n/2);

for(k=0;k<n/2;k++)
{
c[k][0]=p[k][0]+q[k][0]*cos(2*3.14159265359*k/m)+q[k][1]

*sin(2*3.14159265359*k/m);
c[k+n/2][0]=p[k][0]-q[k][0]*cos(2*3.14159265359*k/m)-q[k]

[1]*sin(2*3.14159265359*k/m);
c[k][1]=p[k][1]-q[k][0]*sin(2*3.14159265359*k/m)+q[k][1]

*cos(2*3.14159265359*k/m);
c[k+n/2][1]=p[k][1]+q[k][0]*sin(2*3.14159265359*k/m)-q[k]

[1]*cos(2*3.14159265359*k/m);
}
}
for(k=0;k<n/2;k++)
free(p[k]);
free(p);

for(k=0;k<n/2;k++)
free(q[k]);
free(q);

return (double**)c;
}

其实就是快速付利叶。
本来用global data 搞那些矩阵。可以只有64kb,矩阵一大就不可以用了。
谢谢那位高手帮我看看阿~


多谢拉。好急得~
搜索更多相关的解决方案: 指针  

----------------解决方案--------------------------------------------------------
  相关解决方案