Function ';常数';数组到函数-C++;

Function ';常数';数组到函数-C++;,function,pointers,parameters,constants,Function,Pointers,Parameters,Constants,我定义了一个函数来计算2D中两个点之间的距离,这些点是由两个元素组成的数组。当数组在函数中作为常量传递或不作为常量传递时,我的“距离”函数会给出不同的结果 这是我的密码: #include <iostream> #include<math.h> using namespace std; double distance(const double *x1,const double *x2) { double dist; dist=sqrt((x1[0]-x2[0])*(x

我定义了一个函数来计算2D中两个点之间的距离,这些点是由两个元素组成的数组。当数组在函数中作为常量传递或不作为常量传递时,我的“距离”函数会给出不同的结果

这是我的密码:

#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;
}
#包括
#包括
使用名称空间std;
双距离(常数双*x1,常数双*x2)
{
双区;
dist=sqrt((x1[0]-x2[0])*(x1[0]-x2[0])+(x1[1]-x2[1])*(x1[1]-x2[1]);
返回距离;
}
双距离1(双*x1,双*x2)
{
双区;
dist=sqrt((x1[0]-x2[0])*(x1[0]-x2[0])+(x1[1]-x2[1])*(x1[1]-x2[1]);
返回距离;
}
int main(){
双x1[2],x2[2];
双val;
x1[0]=1;x1[1]=0;
x2[0]=0;x2[1]=1;
val=距离(x1,x2);

cout在第一种情况下,将调用返回迭代器之间距离的函数:

template<class InputIterator>
  typename iterator_traits<InputIterator>::difference_type
    distance (InputIterator first, InputIterator last);
模板
类型名迭代器特征::差异类型
距离(先输入计数器,后输入计数器);
只是函数的一个坏名称选择;)

[编辑]如上所述,请查看

另请参见