【发布时间】:2014-10-01 09:31:58
【问题描述】:
我定义了一个函数来计算 2D 中 2 个点之间的距离,这些点是 2 个元素的数组。在函数中将数组作为常量传递或不传递时,我的“距离”函数给出了不同的结果。
这是我的代码:
#include <iostream>
#include<math.h>
using namespace std;
double distance(const double *x1,const double *x2)
{
double dist;
dist=sqrt((x1[0]-x2[0])*(x1[0]-x2[0]) + (x1[1]-x2[1])*(x1[1]-x2[1]));
return dist;
}
double distance1(double *x1,double *x2)
{
double dist;
dist=sqrt((x1[0]-x2[0])*(x1[0]-x2[0]) + (x1[1]-x2[1])*(x1[1]-x2[1]));
return dist;
}
int main() {
double x1[2],x2[2];
double val;
x1[0]=1;x1[1]=0;
x2[0]=0;x2[1]=1;
val=distance(x1,x2);
cout << val << endl;
val=distance1(x1,x2);
cout << val << endl;
return 0;
}
这样做我得到:
-2
1.41421
我不明白为什么“距离”功能与“距离1”不同。我希望得到相同的结果,但“距离”阻止我修改 x1 和 x2 数组的内容。
另外,当将两个函数命名为“距离”时,我得到了预期的结果 (1.41421),那么在这种情况下调用哪个函数?
任何帮助将不胜感激。
【问题讨论】:
标签: function pointers parameters constants