我想将一些用C编写的代码转换为Java,但是我很难理解这段代码:
void iqfir(float *buff, const float *In, float *Pt, const int len)
{
int i;
float I;
I = 1.0;
for (i = 0; i < len; i++) {
double v;
v = buff[i];
I += v * In[i];
} *Pt = I;
}
我在这里无法理解指针和数组的使用。
答案 0 :(得分:2)
该函数将buff
数组中每个项目与同一索引处In
数组中的项相乘的结果相加。
例如,如果buff是:
1.02
2.22
和In是:
3.43
6.55
和len是2,答案是:
(1.02 * 3.43) + (2.22 * 6.55)
现在解释每个参数是什么。
float *buff
将包含一个内存区域开头的地址。该内存可以被视为包含零个或多个float
值。const float *In
将包含一个内存区域开头的地址。该内存也可以被视为包含零个或多个float
值。float *Pt
将包含一个内存区域开头的地址。在这种情况下,预计这将指向该方法应该保存答案的一个float
值。通常,指针可以:
在这种情况下,buff
和In
都指向包含多个float
值的内存区域的开头(希望至少与len
一样多指定)。 Pt
指向已分配的内存区域的开头,以便该函数可以向调用者提供计算结果。