如何将数组指针作为参数传递给函数

时间:2018-07-12 12:20:00

标签: c

有一个描述3D点的结构。三角形可以明显地描述为三点。我必须编写一个函数,该函数需要一个指针point3d *face[3]并为其分配一个三角形的地址,该地址在某些操作过程中被标记。如何做到这一点?

struct point3d
{ 
   float x;
   float y;
   float z;
};

void copy_address(point3d *face[3])
{
   face = another_address;
}

int main()
{
    point3d *face[3];
    f(&face);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

使用以下内容:

struct point3d
{ 
   float x;
   float y;
   float z;
};
struct point3d p[3];
void copy_address(struct point3d (**face)[3])
{
   *face = &p;
}

int main()
{
    struct point3d (*face)[3];
    copy_address(&face);
    return 0;
}

注意:

由于face是指向三点数组的指针,因此需要像在struct point3d (*face)[3];中那样用大括号括起来,这意味着“(face是一个指针) ]的3分。

您必须添加struct关键字,因为point3d本身不能识别类型。

copy_address的定义中,您需要另一个间接方式,因为您想分配给指向数组的变量。现在,它表示“({face是指针的地址)指向3点的[array]。