sijdnfsad 2015年12月14日
调用含参函数不传参数?
看FFT代码是看见以下代码很奇怪,不知道如何理解,感觉是调用了有参数的函数,但是并没有传递参数。请问这样的函数调用的意义在哪里??以下为部分代码:
void func_die(int beg,int c_num,int k,int i)
{

void add(comp_int ,comp_int ,comp_int *);
void sub(comp_int ,comp_int ,comp_int *);
void mul(comp_int ,comp_int ,comp_int *);

int temp_real =0 ,temp_img = 0;
struct comp_int temp1,up,down;

int a,b,p;
a = beg + k;
b = beg + k + c_num/2;
p = k*pow(2,m-1-i);
mul(in[b], w[p], &up);
add(in[a], up, &up);
mul(in[b], w[p], &down);
sub(in[a], down, &down);
in[a]=up;
in[b]=down;

/*temp_real = (((w[p].real*in[b].real)>>15)-((w[p].img*in[b].img)>>15))>>1;
temp_img = (((w[p].real*in[b].img)>>15) + ((w[p].img*in[b].real)>>15))>>1;
temp1.real = (in[a].real + temp_real)>>1;
temp1.img = (in[a].img +temp_img)>>1;
temp_real = (((w[p].real*in[b].real)>>15)-((w[p].img*in[b].img)>>15))>>1;
temp_img = (((w[p].real*in[b].img)>>15) + ((w[p].img*in[b].real)>>15))>>1;
in[b].real = (in[a].real - temp_real)>>1;
in[b].img = (in[a].img - temp_img)>>1;
in[a].real =temp1.real;
in[a].img =temp1.img;*/


}


void add(comp_int a,comp_int b,comp_int *c)//(16,15)+(16,15)->(16,14)
{

c->real=((a.real+b.real)>>1);
c->img=((a.img+b.img)>>1);

}

void mul(comp_int a,comp_int b,comp_int *c)//(16,15)*(16,15)->(16,15)
{

c->real=((a.real*b.real)>>15) -((a.img*b.img)>>15);
c->img= ((a.real*b.img)>>15) +((a.img*b.real)>>15);

}

void sub(comp_int a,comp_int b,comp_int *c)//(16,15)+(16,15)->(16,14)
{

c->real=((a.real-b.real)>>1);
c->img=((a.img-b.img)>>1);

}

附上原代码连接:http://www.codeforge.cn/read/120977/%E5%AE%9A%E7%82%B9FFT.CPP__html
...全文
86 点赞 收藏 8
写回复
8 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告