有人可以向我解释为什么这个for循环只运行一次,无论n是什么:
double CalcDist(unsigned int n, Point p, Point* s)
{
double sd[n];
for(int i = 0; i < n; i++)
{
sd[i] = s[i].Dist_To(p);
return sd[i];
}
}
提前感谢您的帮助。
答案 0 :(得分:8)
return
提前退出函数,并且位于for
循环的主体内。
此外,在使用unsigned
等表达式时混合signed
和i < n
类型时,非常小心。如果n
为0,你知道会发生什么吗?
答案 1 :(得分:1)
如果您的目标是确定一个点与阵列中每个点之间的距离,则如下所示:
double * CalcDist(unsigned int n, Point p, Point* pointsArray) {
double * result = new double[n]; //Iso C++ forbids veriable length array
//so don't use result[i] but this instead
for (unsigned int i = 0; i < n; i++) { //set i as an unsigned int as n is one
result[i] = pointsArray[i].Dist_To(p);
}
return result;
}