c++ - 点结构声明

标签 c++

伙计们,我有一个问题与点结构声明有关,当我阅读有关几何数据类型声明的教程时,我看到了两件让我困惑的奇怪事情,我会正确地展示这些东西

typedef double point[DIMENSION];
typedef struct {
    int n;          /* number of points in polygon */
    point p[MAXPOLY];   /* array of points in polygon */
} polygon;


typedef struct {
    point p1,p2;        /* endpoints of line segment */
} segment;

typedef point triangle[3];  /* triangle datatype */

让我们假设维度是某个数字,例如 (2) 和 maxpoly maxsimum 多边形中的点数,我对点的声明感到困惑 typedef double point[dimension] 是什么意思?我知道什么是 typedef,但是如果我们将 point 声明为 double 数组,那么我们如何在另一个结构中使用它

或者类作为对象?比如结构数组? 考虑一下

typedef truct 
{
point p1,p2;
}segment;

它有多正确?请帮助我理解这一点

最佳答案

使用 typedef 定义的东西只是另一种类型的别名(即另一个名称)。

在你的情况下

typedef double point[DIMENSION];

这将名称 point 定义为“double 类型的大小为 DIMENSION 的数组”。

在此之后,而不是写

double my_point[DIMENSION];

你可以写

point my_point;

如果 typedef 在头文件中,则该名称可用于所有源文件和头文件,包括带有 typedef 的头文件。

关于c++ - 点结构声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8312052/

相关文章:

c++ - 访问不同类别的成员

c++ - 遍历不包括最后一个元素的列表容器

c++ - 使用-std = c++ 0x时未声明nullptr

c++ - c++ 解引用是左值还是右值?

c++ - 具有成员运算符*的模板化运算符*的友元声明

c++ - C++ 字符串和 C 字符串 ( .c_str() ) 之间的区别

使用霍夫变换的 C++ OpenCV 三角形检测

c++ - STL 的 std::set 容器参数为重载运算符 << ()

c++ - 使用局部变量调用函数或填充控制 if 语句比直接嵌套函数调用更有效吗?

c++ - 检测 C++ 控制台中的功能键。