第六章 结构

结构是多个变量的集合,变量可能为不同的类型,为了方便处理而将变量组织在一个名字之下。
结构可以拷贝、赋值、传递给函数,函数可以返回结构类型。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容