然后定义
double DistanceToPlane(double *Point1, double *Point2, double *Point3)
Vertices[0] 代表 Vertices[0][0], Vertices[0][1], Vertices[0][2] 这一行吧,
所以我想以 Vertices[0], Vertices[1], Vertices[2] 作为一维数组(二维数组的一行)的首地址,
DistanceToPlane(Vertices[0], Vertices[1], Vertices[2]);
这样可以吗?
谢谢
10 个解决方案
#1
typedef double double_array[4];
定义:
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
调用:
DistanceToPlane(Vertices, Vertices+1, Vertices+2);
定义:
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
调用:
DistanceToPlane(Vertices, Vertices+1, Vertices+2);
#2
写了一个例子,看看
#include <iostream>
#include <algorithm>
using namespace std;
typedef double double_array[4];
// 求和
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
{
double *p1 = *dp1;
double *p2 = *dp2;
double *p3 = *dp3;
double sum = 0.0;
for (int i = 0; i != 4; ++i)
{
sum += *p1 + *p2 + *p3;
++p1;
++p2;
++p3;
}
return sum;
}
int main ()
{
double Vertices[3][4] = {1.1 ,2.2, 3.3, 4.4,
5.5, 6.6, 7.7, 8.8,
9.9, 10.1, 11.11, 12.12};
double a;
a = DistanceToPlane(Vertices, Vertices+1, Vertices+2);
cout<<a<<endl;
system("pause");
return 0;
}
#3
typedef double (*p_arr)[4];
double DistanceToPlane(p_arr Point1, p_arr Point2, p_arr Point3)
double DistanceToPlane(double Point[][4])
double DistanceToPlane(p_arr Point1, p_arr Point2, p_arr Point3)
double DistanceToPlane(double Point[][4])
#4
当然可以!!
#5
可以 写成指针数组 可读性更好
#6
当然可以,楼上的说法飘逸!!
#7
可以, 但是参数多了, 用指针数组更好.
#8
当然可以,虽然a[0]可以当指针用,但不能通过自增或自减运算,例如不能++a[0];但可以*(a[0]+1)
#9
二维数组作为参数自动会转换为 行指针,所以没有必要那么传参数
另外根据楼上的指针数组方法:
我写一一个
int a[2][3]={ {1,3,5},{45,89,90} };
int* s[2]={a[0],a[1]};
cout<<* (s[0]+2);
另外根据楼上的指针数组方法:
我写一一个
int a[2][3]={ {1,3,5},{45,89,90} };
int* s[2]={a[0],a[1]};
cout<<* (s[0]+2);
#10
非常感谢大家 ,学习了
#1
typedef double double_array[4];
定义:
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
调用:
DistanceToPlane(Vertices, Vertices+1, Vertices+2);
定义:
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
调用:
DistanceToPlane(Vertices, Vertices+1, Vertices+2);
#2
写了一个例子,看看
#include <iostream>
#include <algorithm>
using namespace std;
typedef double double_array[4];
// 求和
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
{
double *p1 = *dp1;
double *p2 = *dp2;
double *p3 = *dp3;
double sum = 0.0;
for (int i = 0; i != 4; ++i)
{
sum += *p1 + *p2 + *p3;
++p1;
++p2;
++p3;
}
return sum;
}
int main ()
{
double Vertices[3][4] = {1.1 ,2.2, 3.3, 4.4,
5.5, 6.6, 7.7, 8.8,
9.9, 10.1, 11.11, 12.12};
double a;
a = DistanceToPlane(Vertices, Vertices+1, Vertices+2);
cout<<a<<endl;
system("pause");
return 0;
}
#3
typedef double (*p_arr)[4];
double DistanceToPlane(p_arr Point1, p_arr Point2, p_arr Point3)
double DistanceToPlane(double Point[][4])
double DistanceToPlane(p_arr Point1, p_arr Point2, p_arr Point3)
double DistanceToPlane(double Point[][4])
#4
当然可以!!
#5
可以 写成指针数组 可读性更好
#6
当然可以,楼上的说法飘逸!!
#7
可以, 但是参数多了, 用指针数组更好.
#8
当然可以,虽然a[0]可以当指针用,但不能通过自增或自减运算,例如不能++a[0];但可以*(a[0]+1)
#9
二维数组作为参数自动会转换为 行指针,所以没有必要那么传参数
另外根据楼上的指针数组方法:
我写一一个
int a[2][3]={ {1,3,5},{45,89,90} };
int* s[2]={a[0],a[1]};
cout<<* (s[0]+2);
另外根据楼上的指针数组方法:
我写一一个
int a[2][3]={ {1,3,5},{45,89,90} };
int* s[2]={a[0],a[1]};
cout<<* (s[0]+2);
#10
非常感谢大家 ,学习了