读书人

关于把二维数组的一行当作一维数组传递

发布时间: 2012-03-27 13:44:24 作者: rapoo

关于把二维数组的一行当作一维数组传递参数的问题
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);



读书人网 >C++

热点推荐