数据结构构造类型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十章 构造类型
第一节 C数据类型概述
简单类型
结构类型
.编译系统预定义; .用户自己定义
.只赋单值;
.可赋多值
.数据独立 ;
.数据之间相互关联
如:
日期: 1999,5,30
商品: W3024, 洗衣机, 2000.0元
C语言描述关联数据的方法: 数组:元素为同一类型.
如: double test[30][2]; 结构体: 元素为不同类型. 如: struct student
方法3:定义的结构类型仅供程序一处引用,即只 定义一次变量.
如: struct
{long num; double score;} a,b;
注意:
1.一个结构体变量的存储开销(内存字节总数) 为所有成员字节数的总和;
2.当两个结构变量具有完全相同的结构类型 时,a=b赋值正确,即把a中的每一个成员的值一 一赋给b.
{int year; int month; int day;};
struct date x,y; 方法2. 在定义类型的同时说明变量 如: struct date
{int year; int month; int day;} x,y; 含义: x: x.year x.month x.day
y: y.year y.month y.day
如上a变量的存储字节为4+8=12.
二.结构体变量的引用 形式: 结构体变量名.成员名
成员运算符
例10.4 假设有如下说明: struct student {long num; char name[10];
struct{int year, month,day;} birth; int score;} li,hu, tao; 以下均正确的引用语句: (1) scanf(“%ld”, &li.num);
四.结构数组应用举例 例10.9 输入n位学生的学号和数Hale Waihona Puke Baidu,物理考
试成绩,输出每人的学号和平均分以及全 班总平均分.
#define F1 “%ld%d%d”
#define F2 “\n%ld%4.1f”
#define P printf
#define S scanf
#define N 10
main()
{long number; char name[6];int grade;}; 枚举类型: 如:enum sex{ male,femal}; 说明: 枚举类型{}中为常量标识符,从左至
右用数值0,1,2…来表示其值.
第二节 结构体类型的定义 形式: struct 结构名 {成员说明表列};
说明: 1. 结构名为用户自定义标识符; 2. 成员表列也称为域表列; 3.可以嵌套定义
例10.6 struct
{char *name; long num; char sex;
struct {int year, month,days;} birth;}p[30];
即描述如下:
birth
name num sex year month days
p[0]
p[1]

p[29]
二.结构体数组的引用 形式: 数组名[下标].成员名 例7 设有如下数组说明语句 #define F “%s,%s\n”
{int i; double sum=0; struct {long nu;
(2) hu.birth.year=1973;
(3) sum=sum+tao.score;
(4) tao.num++; 说明: 多级引用成员运算符逐级引用其最 底层的成员。
三.结构体变量的初始化
形式: 结构体变量名={初值表};
例10.5 struct student
有分号
{long num; char name[10];
struct {char *code; char *name;
float price; char *place;
struct {int year, month,day;} validay;} x[100]; 则 for(i=0;i<=100;i++) if(x[i].validay.year<=2001)
嵌套
等价于
struct student {long number; char *name; struct {int year, month, day;} birthday; int grade;}; student的结构:
出生年月 学号 姓名 年 月 日 总分
第三节 结构体变量 一.结构体变量的定义 方法1.先定义类型,后说明变量 如: struct date
printf(F,x[i].code, x[i].name); 功能:输出药品库中有效期为2001年之前所有药
品清单.
三.结构数组的初始化 形式: 数组说明亮={{初值表1},{初值表2}
….{初值表n}}; 例10.8 struct student{long num; char
name[10]; struct{int year, month,day;}birth; int score;} p[3]={{200111, “马红”,1973,5,6,602}, {200112,“刘阳”,1974,1,3,571},{200113, “刘海”, 1972,2,1,551}};
struct{int year, month,day;} birth;
int score;}
li, ma={2001, “马红”,{1973,5,6}; 602};
无分号
第四节 结构数组 当结构变量有许多时,用结构数组来表示, 数组的每一个元素均为结构体. 一.结构体数组的定义 形式: 结构类型 数组名[常量表达式]
例10.1 分别定义代表日期,商品,学生信息的结构 体类型.
日期结构体类型:
struct date
{int year; int month; int day;};
商品结构体类型: struct product { char *partname; double price; int stock;}; 学生结构体类型: struct date {int year, month, day;}; struct student {long number; char *name; struct date birthday; int grade;};
相关文档
最新文档