结构是多个变量的集合,变量可能为不同的类型,为了方便处理而将变量组织在一个名字之下。
结构可以拷贝、赋值、传递给函数,函数可以返回结构类型。
6.1结构的基本知识
采用结构存放点的坐标:
struct point{ // 关键字struct为结构声明,point为结构标记
int x; // 结构成员
int y;
};
struct {...} x, y, z;
与int x, y, z;
具有类似的意义,
也可以用struct point x, y, z;
初始化
struct point pt = { 320, 200 };
引用成员
x = pt.x;
y = pt.y;
6.2结构与函数
结构的合法操作: 整体复制和赋值,通过&运算取地址,访问成员。其中整体复制和赋值包括向函数传递参数和从函数返回值。
/* makepoint函数: 通过x,y坐标构造一个点 */
struct point makepoint(int x, int y)
{
struct point temp;
temp.x = x;
temp.y = y;
return temp;
}
如果传递给函数的结构非常大,使用指针。
struct point origin, *pp;
pp = &origin;
x = (*pp).x ;
y = (*pp).y;
pp指向point结构
(*pp).x == pp->x
结构运算符 . ->优先级高
*p->str++ == *(p->str)++ == *((p->str)++)
以上先读取指针str指向的对象的值,然后将str+1(地址+1)。
6.3 结构数组
struct key{
char *word;
int count;
} keytab[NUM];
6.4 指向结构的指针
struct key *p;
6.7 类型定义 typedef
typedef int Length;
说明Length 定义为 int,它与int完全相同。
typedef 原名称 现名称, 类似于#define