有一个描述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;
}
答案 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]。