关于把二维数组的一行当作一维数组传递参数的问题
double Vertices[3][4];
然后定义
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]);
这样可以吗?
谢谢
[解决办法]
typedef double double_array[4];
定义:
double DistanceToPlane(double_array *dp1, double_array *dp2, double_array *dp3)
调用:
DistanceToPlane(Vertices, Vertices+1, Vertices+2);
[解决办法]
写了一个例子,看看
- C/C++ code
#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;}
[解决办法]
typedef double (*p_arr)[4];
double DistanceToPlane(p_arr Point1, p_arr Point2, p_arr Point3)
double DistanceToPlane(double Point[][4])
[解决办法]
当然可以!!
[解决办法]
可以 写成指针数组 可读性更好
[解决办法]
当然可以,楼上的说法飘逸!!
[解决办法]
可以, 但是参数多了, 用指针数组更好.
[解决办法]
当然可以,虽然a[0]可以当指针用,但不能通过自增或自减运算,例如不能++a[0];但可以*(a[0]+1)
[解决办法]
二维数组作为参数自动会转换为 行指针,所以没有必要那么传参数
另外根据楼上的指针数组方法:
我写一一个
int a[2][3]={ {1,3,5},{45,89,90} };
int* s[2]={a[0],a[1]};
cout<<* (s[0]+2);