为什么我的函数中的for循环只会运行一次,即使它应该运行多次?

时间:2017-02-02 11:34:47

标签: c++ arrays class c++11 for-loop

有人可以向我解释为什么这个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];
    }
}

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

return提前退出函数,并且位于for循环的主体内。

此外,在使用unsigned等表达式时混合signedi < 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;
}