【发布时间】:2016-09-05 11:29:38
【问题描述】:
我有一个在某些数据数组中搜索极值的函数。它接受指向数据的指针、一些参数和指向存储结果的结构数组的指针。该函数返回结果结构数组的长度。
int FindPeaks(float *data, int WindowWidth, float threshold, struct result *p)
{
int RightBorder = 0;
int LeftBorder = 0;
bool flag = 1;
int i = 0;
int k = 0;
while(1)
{
flag = 1;
if (WindowWidth >= 200) cout << "Your window is larger than the signal! << endl";
if (i >= 200) break;
if ((i + WindowWidth) < 200) RightBorder = i + WindowWidth;
if ((i - WindowWidth) >= 0) LeftBorder = i - WindowWidth;
for(int j = LeftBorder; j <= RightBorder; j ++)
{
if (*(data + i) < *(data + j))
{
flag = 0;
break;
}
}
if (flag && *(data + i) >= threshold && i != 0 && i != 199)
{
struct result pointer = p + k;
pointer.amplitude = *(data + i);
pointer.position = i;
i = i + WindowWidth;
k++;
}
else
{
i ++;
}
}
return k;
}
我对将结果放入其中的第 i 个结构字段的引用感到困惑。我做错了吗?
【问题讨论】:
-
“我对将结果放入其中的第 i 个结构字段的引用感到困惑。” - 你的意思是什么那个?
-
struct result pointer = p + k;:,有一种感觉应该是:struct result* pointer = p + k; -
我无法编译这一行。将指针设置为第 i 个幅度的问题:pointer.amplitude = *(data + i);
-
“指向结构数组的指针” 嗯,这一切都非常类似于 C。您甚至使用了
struct前缀。您使用什么资源来学习 C++? -
@Dankevich:我们知道你“无法编译这一行”。但是重复模糊的问题陈述并没有帮助..
标签: c++ arrays function pointers struct