结构体
根据书中的启发,结构体能抽象描述更多的事物。
结构的命名
对于结构体,关键字struct引入结构声明,结构声明由包含在花括号内的一系列声明组成,关键字struct后面的名字是可选的,称为结构标记,结构标记用于为结构命名,在定义之后,结构标记就代表花括号内的声明,可以用它作为声明的简写形式。
结构成员运算符‘.’将结构名与成员名连接起来。一般结构体的声明我们使用typedef比较方便。
struct point
{
int x;
int y;
};
上面为结构体声明,该结构体可以描述一个点。
typedef struct point
{
int x;
int y;
}Point;//这是声明
Point p;//这是定义一个结构体变量
结构体可以嵌套
struct rect
{
struct point pt1;
struct point pt2;
}
两个点可以描述一个矩阵,或者描述一个向量。
结构与函数
结构体能作为整体的一个值作为函数的返回值,也能作为一个函数 的参数传递给函数。
struct node makepoint(int x,int y)
{
struct node temp;
temp.x=x;
temp.y=y;
return temp;
}
struct rect screen;
struct point middle;
struct point makepoint(int x,int y);
screen.pt1=makepoint(0,0);
screen.pt2=makepoint(XMAX,YMAX);
middle=makepoint(((screen.pt1.x)+screen.pt2.x)/2,(screen.pt.y+screen.pt2.y)/2);
将两点相加,
struct point addpoint(struct point p1,struct point p2)
{
p1.x+=p2.x;
p1.y+=p2.y;
return p1;
}
判定点p是否在矩形内
int ptinrect(struct pointp,struct rect r)
{
return p.x>=r.pt1.x&&p.x<r.pt2.x&&p.y>=r.pt1.y&&p.y<r.pt2.y;
}
总结:(1)结构体能轻松描述一个事物特点
(2)结构体整体就是一个数据类型。