标签:circle case 指针数组 对象 double .com 总结 字符数组 分享
结构(struct)、联合(union)、枚举(enum)等数据机制的概念、意义和用途,使用方法。
C语言的结构(structure)用于把多个类型可能不同的数据对象集合起来。C结构是由若干结构的成分或成员(可不同类型的数据项对象)组合而成的复合数据。一个(或一类)结构中的每个成员都给定了一个名字,通过成员名实现对结构成员的访问。
结构描述用关键字struct引导,结构说明的 基本形式是:
struct { 成员说明序列 };
定义结构变量:
struct {
int n;
double x, y;
} st1, st2;
定义结构类型
typedef struct {
double x, y;
} POINT;
typedef struct {
POINT center;
double radius;
} CIRCLE;
typedef struct {
POINT lu;
POINT rd;
} RECTANGLE;
结构变量也可以在定义时直接初始化。为结构提供初始值的形式与数组一样。
对结构变量的操作主要是整体赋值和结构成员访问。
访问结构成员的操作用圆点运算符(.)描述
pt2.y = pt1.y + 2.4;
circ1.center.x = 2.07;
circ1.center.y = pt1.y;
结构里可以包含数组成员,也可以定义以结构作为元素的数组。
两种实现方式:
用一个两维字符数组和一个计数器数组,用一个字符指针数组和一个计数器数组
可能更合理的方式——采用一种结构来表示与一个关键字有关的所有信息。
typedef struct {
char * key;
int count;
} KEYC;
字段:使人在需要时能把几个结构成员压缩到一个基本数据类型成员里存放,这可以看作是一种数据压缩表示方式。
struct pack {
unsigned a:2;
unsigned b:8;
unsigned c:6;
} pk1, pk2;
采用字段压缩方式,通常会使访问结构成员的操作效率下降很多。
函数处理存储在结构中的数据:
采用动态建立与管理:
int main() {
int n, inum = 0;
ACCITEM accbook[NACCOUNT];
initialization();
while ((n = getcommand()) >= 0) {
switch (n) {
case 0: /* 由用户得到账目文件名并读入 */
inum = readfile(NACCOUNT, accbook);
break;
case 1: /* 计算 终余额 */
balance(inum, accbook);
break;
case 2: /* 统计所有收入 */
receipts(inum, accbook);
break;
case 3: /* 统计所有支出 */
expenditures(inum, accbook);
break;
case 4: /* 打印大额支出,向用户要求额度限 */
printsome(inum, accbook);
break;
default: /* 错误命令。输出错误信息 */
errmessage();
break;
}
}
finalization();
return 0;
}
一个联合是几个类型不同(也可以相同)的成员的组合,其中每个成员各有一个名字。从这些方面看,联合与结构很相似。联合与结构的差异在于它们的表示方式不同。在一个结构(变量)里,结构的各成员顺序排列存储,每个成员都有自己独立的存储位置。联合的情况不是这样,一个联合变量的所有成员共享从同一片存储区。因此一个联合变量在每个时刻里只能保存它的某一个成员的值。
union {
int n;
double x;
char c;
} u1, u2;
枚举说明的基本形式是:
enum 枚举标志 {枚举常量名, ...};
简单的链接结构是通过线性链接形成的表,或称链接表。
二叉树结构:
两种方式定义自引用结构:
char word[20];
int count;
typedef struct node {
char word[20];
int count;
struct node *next;
} NODE, *LINK;
2018-2019-1 20189221 《从问题到程序》第 8 周学习总结
标签:circle case 指针数组 对象 double .com 总结 字符数组 分享
原文地址:https://www.cnblogs.com/gdman/p/10059728.html